springboot整合mybatis流程详解
1.mybatis是什么
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
2.整合
两种方式:
- 新建一个mybaits-config.xml文件,内容配置其中
- 在springboot核心配置文件application.yaml中,配置mybatis内容(这边只展示第二种)
2.0 前期工作:保证可以连接上数据库
导入依赖:
<!--数据库启动器--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: xxx
url: jdbc:mysql://localhost:3306/mybatis
springboot中默认使用hikari连接池,号称最快的连接池。连接池还有DBCP,c3p0,druid…
2.1 导入依赖
<!--引入 mybatis-spring-boot-starter 的依赖--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency>
2.2 创建包和类
mapper层:
@Mapper public interface EmployeeMapper { public Employee getEmpById(Integer id); }
mapper层对应的xm文件:
<?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.example.mapper.EmployeeMapper"> <select id="getEmpById" resultType="com.example.entity.Employee"> select * from employee where id = #{id} </select> </mapper>
2.3 在application.yaml配置mybatis
mybatis:
mapper-locations: classpath:mybatis/mapper/*.xml # 找到mapper层对应的xml文件
config-location: mybatis-config.xml # mybatis配置文件,resource目录下
mybaits的属性设置参考文档:https://mybatis.net.cn/configuration.html#settings
3.使用注解版mybaits
在mapper接口的方法上,使用注解增删改查@Update()、 @Insert()、 @Select()、@Delete()
@Insert("insert into employee (name,age,position) values(#{name},{age},#{position})") void insert(Employee employee); @Select("select * from employee where id = #{id}") void selectById(Integerid);
4.实战过程
- 引入mybatis-spring-boot-start
- 配置application.yaml中,指定mapper-locations位置
- 编写mapper接口并标注@Mapper注解
- 简单方法直接使用注解
- 复杂方法编写在mapper.xml进行绑定映射
- @MapperScan(“com.lmh.mapper”)简化,该目录下的mapper接口就可不添加@Mapper注解