mybatis简单环境搭建例子

MyBatis 简介

Mybatis 开源免费框架,原名叫iBatis,2010在google code,2013年迁移到 github是数据访问层框架,底层是对 JDBC 的封装。不需要编写实现类,只需要写需要执行的 sql 命令。

导入包

20200401092549

在 src 下新建全局配置文件(编写 JDBC连接信息)

在全局配置文件中引入 DTD 或 schema 如果导入 dtd 后没有提示Window–> preference –> XML –> XMl catalog –> add 按钮。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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="default">
<!-- 声明可以使用的环境 -->
<environment id="default">
<!-- 使用原生态JDBC事务 -->
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssm"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/hu/mapper/UserMapper.xml"/>
</mappers>
</configuration>

type 属性可取值JDBC事务管理使用 JDBC 原生事务管理方式MANAGED 把事务管理转交给其他容器,相当于把JDBC 事务setAutoMapping(false);

type 属性 POOLED 使用数据库连接池 UNPOOLED 不实用数据库连接池,和直接使用 JDBC 一样

新建以 mapper 结尾的包,在包下新建:实体类名+Mapper.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 mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace 理解成实现类的全路径(包名+类名) -->
<mapper namespace="com.hu.mapper.UserMapper">
<!--
id:方法名
parameterType:定义参数类型
resultType:返回值类型

如果方法返回值是List,在resultType中写List的泛型,因为MyBatis是对JDBC封装,一行一行读取数据。
-->
<select id="selectAll" resultType="com.hu.pojo.User">
select * from user
</select>
<select id="selectById" resultType="int">
select count(*) from user
</select>
<select id="selectAllMap" resultType="com.hu.pojo.User">
select * from user
</select>
</mapper>

测试结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Demo1 {
public static void main(String[] args) throws IOException {
InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");
//使用了工厂设计模式 实例化工厂对象用了构建者设计模式。
//构建者设计模式的意义:简化对象实例化过程。
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();//生产SqlSession
//获得list
List<User> users = session.selectList("com.hu.mapper.UserMapper.selectAll");
for (User user : users) {
System.out.println(user.toString());
}
//获得单个值
int count = session.selectOne("com.hu.mapper.UserMapper.selectById");
System.out.println(count);
//获得Map
Map<Long, User> map = session.selectMap("com.hu.mapper.UserMapper.selectAllMap", "id");
System.out.println(map);
session.close();
}
}
1
2
3
4
5
1  李宁   44
2 谢晓峰 30
3 张三丰 100
3
{1=1 李宁 44, 2=2 谢晓峰 30, 3=3 张三丰 100}

三种查询方式

1
2
3
1.selectList() 返回值为 List<resultType 属性控制>,适用于查询结果都需要遍历的需求
2.selectOne() 返回值 Object,适用于返回结果只是变量或一行数据时
3.selectMap() 返回值 Map,适用于需要在查询结果中通过某列的值取到这行数据的需求