MyBatis-01(HelloWorld)
时间:2019-11-11
本文章向大家介绍MyBatis-01(HelloWorld),主要包括MyBatis-01(HelloWorld)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、MyBatis简介
MyBatis是一个半自动的ORM框架,把编写SQL语句交给程序员,优化SQL语句。
Hibernate是一个全自动的ORM框架,从Javabean---数据库数据记录,自动生成SQL语句,不利于SQL的优化。
在GitHub下载mybatis所需版本(jar包,官方文档)。
二、Hello World
编写一个简单的MyBatis程序。
1.环境搭建
在idea中创建一个java工程
在项目中导入所需jar包:
步骤:File-->Project Structure-->Modules-->Dependencies中手动导入jar包,点击+号,选择JARs or directories...
2.代码
1)建JavaBean:Employee.java
package com.atguigu.mybatis.bean; /** * @Author 谢军帅 * @Date2019/11/10 17:06 * @Description */ public class Employee { private Integer id; private String lastName; private String email; private String gender; }
2)建配置conf文件:
然后右键Mark Directory as --> Sources Root(类路径),下边放配置文件
a. log4j.xml:打印日志。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> <param name="Encoding" value="UTF-8" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" /> </layout> </appender> <logger name="java.sql"> <level value="debug" /> </logger> <logger name="org.apache.ibatis"> <level value="info" /> </logger> <root> <level value="debug" /> <appender-ref ref="STDOUT" /> </root> </log4j:configuration>
b. mybatis.xml:全局配置文件,数据源等等的一些配置信息。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis_sgg"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!-- 将我们写好的sql 映射文件一定要注册到全局配置为中--> <mappers> <mapper resource="EmployeeMapper.xml"/> </mappers> </configuration>
c. EmployeeMapper.xml:SQL映射配置文件。
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.atguigu.mybatis.EmployeeMapper"> <!-- namespace:名称空间 id:唯一标识 resultType:返回值类型 #{id}:从传递过来的参数中取出id值 --> <select id="selectEmp" resultType="com.atguigu.mybatis.bean.Employee"> select id,last_name lastName,email,gender from tbl_employee where id = #{id} </select> </mapper>
3)测试Test
package com.atguigu.mybatis.test; import com.atguigu.mybatis.bean.Employee; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.InputStream; /** * @Author 谢军帅 * @Date2019/11/10 17:46 * @Description */ public class MyBatisTest { /* * 1、根据全局配置文件(全局配置文件)创建一个SqlSessionFactory对象 * 有数据源一些运行环境的信息 * 2、sql映射文件;配置了每一个SQL,以及SQL的封装规则等。 * 3、将SQL映射文件注册在全局配置文件中 * 4、写代码: * 1)根据全局配置文件得到SqlSessionFactory; * 2)使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查 * 一次SqlSession就是代表和数据库的一次会话,用完关闭。 * 3)使用sql的唯一标识来告诉Mybatis执行哪个SQL。 * */ public static void main(String[] args) throws IOException { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //2、获取SqlSession实例,能直接执行已经映射的sql语句 //sql的唯一标识 //执行SQL要用的参数 SqlSession sqlSession = sqlSessionFactory.openSession(); try { Employee employee = sqlSession.selectOne("com.atguigu.mybatis.EmployeeMapper.selectEmp",1); System.out.println(employee); System.out.println(employee.getLastName()); }finally { sqlSession.close(); } } }
注意:当JavaBean的字段和数据库表中的字段不一样时,MyBatis映射不了,这里在查询数据库时可以使用别名。
原文地址:https://www.cnblogs.com/xjs1874704478/p/11831992.html
- OpenDaylight新建HelloWorld工程并集成版本
- 摸索出来的chrom调试前后台数据(Java&&Ajax)交互的方法分享一下咯!!!
- 机器学习:单词拼写纠正器python实现
- java.lang.Exception: 资源处理失败,失败原因:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown
- Server Tomcat v7.0 Server at localhost failed to start.
- Ovs+Dpdk简单实践
- Spark入门,概述,部署,以及学习(Spark是一种快速、通用、可扩展的大数据分析引擎)
- 创建基于MailKit和MimeKit的.NET基础邮件服务
- 把一个矩阵行优先展成一个向量,numpy.ravel() vs numpy.flatten()区别
- dataframe插入数据报错SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a
- python 对矩阵进行复制操作 np.repeat 与 np.tile区别
- python标准异常:中英文对比
- 激活windows10转到电脑设置的水印消失3种方法总结
- Android 运行时权限及APP适配
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Android 布局中的android:onClick的使用方法总结
- Android 提交或者上传数据时的dialog弹框动画效果
- Android 调用系统应用的方法总结
- Android实现网易严选标签栏滑动效果
- Android socket实现原理详解 服务端和客户端如何搭建
- Android使用ViewFlipper实现图片切换功能
- Android 图片显示与屏幕适配的问题
- Android实现截图和分享功能的代码
- Android 自定义相机及分析源码
- Android实现微博菜单弹出效果
- Android开发之拖动条和评分组件用法分析
- Android使用AsyncQueryHandler实现获取手机联系人功能
- Android用过TextView实现跑马灯效果的示例
- android如何设置Activity背景色为透明色
- Android 手机防止休眠的两种实现方法