MyBatis快速入门案例
目录
MyBatis快速入门案例
1. 准备数据库
创建数据库db并指定utf8编码, 在数据库中创建表emp, 插入一些数据
-- 1、创建数据库
create database if not exists db charset utf8;
use db; -- 选择数据库
-- 2、删除emp表(如果存在)
drop table if exists emp;
-- 3、在 yonghedb 库中创建 emp 表
create table emp(
id int primary key auto_increment,
name varchar(50),
job varchar(50),
salary double
);
-- 4、往 emp 表中, 插入若干条记录
insert into emp values(null, '张三', '程序员', 3300);
insert into emp values(null, '李四', '程序员', 2800);
insert into emp values(null, '王五', '程序员鼓励师', 2700);
2. 创建maven项目, 引入依赖
<dependencies>
<!-- junit单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
</dependency>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
</dependencies>
3. 创建Emp实体类
在src/main/java下创建com.test.pojo.Emp
类
用来接收数据库返回的数据, 属性名最好和数据库中的字段名一致
public class Emp {
/*
* 声明id, name, job, salary四个属性, 分别用于封装
* emp表中的id, name, job, salary
* 注意: 如果能让Emp类中的变量和emp表中的列名保持一致的化
* 尽量保持一致(在不违反Java命名规范的前提下)
*/
private Integer id;
private String name;
private String job;
private Double salary;
// getter, setter, toString()...
}
4. 创建配置文件
4.1 mybatis-config.xml
在src/main/resources目录下,创建mybatis-config.xml文件(MyBatis的核心配置文件)
<?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">
<!-- MyBatis的全局配置文件 -->
<configuration >
<!-- 1.配置环境,可配置多个环境(比如:develop开发、test测试) -->
<environments default="develop">
<environment id="develop">
<!-- 1.1.配置事务管理方式:JDBC/MANAGED
JDBC:将事务交给JDBC管理(推荐)
MANAGED:自己管理事务
-->
<transactionManager type="JDBC"></transactionManager>
<!-- 1.2.配置数据源,即连接池 JNDI/POOLED/UNPOOLED
JNDI:已过时
POOLED:使用连接池(推荐)
UNPOOLED:不使用连接池
-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/db?characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 2.导入Mapper配置文件,如果mapper文件有多个,可以通过多个mapper标签导入 -->
<mappers>
<mapper resource="EmpMapper.xml"/>
</mappers>
</configuration>
4.2 EmpMapper.xml
在src/main/resources目录下,创建EmpMapper.xml文件 (实体类的映射文件)
<?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的值来定位当前这个mapper文件
-->
<mapper namespace="EmpMapper">
<!-- 在mapper根标签内部可以添加很多SQL标签
select, insert, delete, update
-->
<!-- 查询所有emp表中的所有员工信息
resulType属性: 用于只当什么类型来封装SQL语句查询而结果
如果查询员工信息, 可以指定员工对象来进行封装, 因此
resultType需要指定Emp类的全限定类名
-->
<select id="findAll" resultType="com.tedu.pojo.Emp">
select * from emp;
</select>
</mapper>
5. 创建测试类进行测试
在src/main/java下创建测试类com.test.TestMyBatis
public class TestMyBatis {
/**
* 联系1: 查询emp表中的所有员工信息
* @throws IOException
*/
@Test
public void testFindAll() throws IOException {
// 1. 读取mybatis的核心配置文件[mybatis-config.xml]
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
// 2. 通过获取SqlSessionFactory工厂对象
SqlSessionFactory fac = new SqlSessionFactoryBuilder().build(in);
// 3. 后去SqlSession对象(打开与数据库的连接) true: 表示自动提交, 默认是false即手动提交
SqlSession session = fac.openSession(true);
// 4. 执行SQL语句, 并返回执行结果
List<Emp> emps = session.selectList("EmpMapper.findAll");
// 5. 输出结果
for (Emp emp : emps) {
System.out.println(emp);
}
}
}
6. 输出结果
Emp [id=1, name=张三, job=程序员, salary=3300.0]
Emp [id=2, name=李四, job=程序员, salary=2800.0]
Emp [id=3, name=王五, job=程序员鼓励师, salary=2700.0]