介绍
MyBatis是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。可以通过简单的XML或注解来配置和映射原始类、接口和Java POJO为数据库中的记录。
环境准备
创建项目
创建Maven项目,添加对应的依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
POJO对象
/**
* @program: mybatis-demo-01
* @description: 员工类
* @author: wxw
* @create: 2022-03-22 09:53
**/
@Data
public class Employee {
private Integer id;
private String name;
private Integer age;
private String sex;
private String address;
}
添加配置文件
Mybatis中主要的配置文件有全局配置文件和映射文件
数据库配置文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.47.33:3306/test?characterEncoding=utf-8&serverTimezone=UTC
jdbc.username=root
jdbc.password=w123123
全局配置文件
<?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>
<properties resource="db.properties"></properties>
<typeAliases>
<package name="com.wxw.study.domain"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/><!-- 单独使用时配置成MANAGED没有事务 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/EmployeeMapper.xml"/>
</mappers>
</configuration>
映射文件
<?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.wxw.study.mapper.EmployeeMapper">
<resultMap id="BaseResultMap" type="employee">
<id property="id" column="emp_id" jdbcType="INTEGER" />
<result property="name" column="emp_name" jdbcType="VARCHAR" />
<result property="age" column="emp_age" jdbcType="INTEGER" />
<result property="sex" column="emp_sex" jdbcType="VARCHAR" />
<result property="address" column="emp_address" jdbcType="VARCHAR" />
</resultMap>
<select id="selectEmployeeList" resultMap="BaseResultMap" >
select * from employee
</select>
</mapper>
Mapper接口
/**
* @program: mybatis-demo-01
* @description: 员工类Mapper接口
* @author: wxw
* @create: 2022-03-22 09:53
**/
public interface EmployeeMapper {
List<Employee> selectEmployeeList();
}
编程式使用
@Test
public void test01() throws Exception{
// 1.获取配置文件
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
// 2.加载解析配置文件并获取SqlSessionFactory对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
// 3.根据SqlSessionFactory对象获取SqlSession对象
SqlSession sqlSession = factory.openSession();
// 4.通过SqlSession中提供的 API方法来操作数据库
List<Employee> list = sqlSession.selectList("com.wxw.study.mapper.EmployeeMapper.selectEmployeeList");
for (Employee employee : list) {
System.out.println(employee);
}
// 5.关闭会话
sqlSession.close();
}
代理方式使用
@Test
public void test02() throws Exception{
// 1.获取配置文件
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
// 2.加载解析配置文件并获取SqlSessionFactory对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
// 3.根据SqlSessionFactory对象获取SqlSession对象
SqlSession sqlSession = factory.openSession();
// 4.通过SqlSession中提供的 API方法来操作数据库
EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
List<Employee> list = mapper.selectEmployeeList();
for (Employee employee : list) {
System.out.println(employee);
}
// 5.关闭会话
sqlSession.close();
}