MyBatis简介及测试

MyBatis简介

MyBatis是一个半自动化的持久层框架。
sql与java编码分开,功能边界清晰,一个专注业务,一个专注数据。

MyBatis的使用

创建测试的数据库mybatis,再创建一个student表

1、导入MyBatis.jar等相应的数据库连接驱动等相应的包

log4j.jar用于打印数据库日志(需要编写相应的.xml配置文件)

2、创建对应于数据库中表的javaBean对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package bean;

public class Employee {
private Integer id;
private String name;
private String gender;
private String email;

public Employee() {
}

public Employee(Integer id, String name, String gender, String email) {
this.id = id;
this.name = name;
this.gender = gender;
this.email = email;
}

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getGender() {
return gender;
}

public void setGender(String gender) {
this.gender = gender;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

@Override
public String toString() {
return "Employee{" +
"id=" + id +
", name='" + name + '\'' +
", gender='" + gender + '\'' +
", email='" + email + '\'' +
'}';
}
}

3、编写全局配置文件

mybatis-config.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?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.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=Asia/Shanghai"/>
<property name="username" value="root"/>
<property name="password" value="2824199842"/>
</dataSource>
</environment>
</environments>

<!-- 将写好的sql映射文件注册到全局配置文件中-->
<mappers>
<mapper resource="EmployeeMapper.xml"/>
</mappers>
</configuration>

4、编写sql映射文件(采用面向接口的方式)

创建dao层,并添加EmployeeDao接口

1
2
3
4
5
6
package dao;

public interface EmployeeDao {

public Employee getEmpById(Integer id);
}

EmployeeMapper.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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">
<!-- namespace 名称空间 1.通过 namespace.id 来确定要执行的sql语句
2.指定为接口的全类名,用于绑定接口(一般使用这种方式)
id 唯一标识 用于唯一标识一条sql语句
result 返回值类型
#{id} 从传递过来的参数中取出id值
-->
<mapper namespace="dao.EmployeeDao">
<!-- 将接口中的函数与sql语句绑定-->
<select id="getEmpById" resultType="bean.Employee">
select * from employee where id = #{id}
</select>
</mapper>

5、测试是否成功

MybaitTest.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package test;

public class MyBatisTest {

public SqlSessionFactory getSqlSessionFactory() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
// 根据 xml 配置文件创建一个SqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
return sqlSessionFactory;
}

@Test
public void test2() throws IOException {
SqlSession sqlSession = null;
try {
// 1.获取SqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
// 2.获取sqlSession对象 用于执行sql语句
sqlSession = sqlSessionFactory.openSession();
// 3.获取接口实现类对象
// 会为接口自动创建一个代理对象 代理对象去执行增删改查方法
EmployeeDao mapper = sqlSession.getMapper(EmployeeDao.class);
System.out.println(mapper.getClass());// 代理对象
// 4.使用接口实现类对象调用接口中的方法
Employee emp = mapper.getEmpById(1);
System.out.println(emp);
} finally {
if(sqlSession!=null){
sqlSession.close();
}
}
}
}