一. Mybatis是什么?
回顾一下三层架构:
Mybatis是位于Dao层(数据访问层)的框架, 用于简化JDBC开发.
注解:
- @Mapper: 为被注解的接口创建一个实现类对象, 并将该对象交给IOC容器管理.
- @SpringBootTest: 被注解的类中方法运行时, 启动SpringBoot项目.
二. 数据库连接池
数据库连接池是一个容器, 用来管理数据库连接.
数据库连接池的优势:
- 资源复用
- 避免连接遗漏
- 连接遗漏指的是数据库连接被使用完了, 别的用户想要访问数据库无法再获取连接.
- 避免连接遗漏: 某个用户连接时间过长且无操作, 就会自动断开连接.
- 提高响应速度
数据库连接池种类:
- hikari (追光者): 是springboot默认的数据库连接池
- druid (德鲁伊): alibaba提供的数据库连接池

设置使用哪个数据库连接池:
- 依旧是在配置文件中设置.
三. 增删查改
java
// 根据id查询部门
@Select("select * from dept where id = #{id}")
Dept selectById(Integer id);
java
// 根据id删除部门
@Delete("delete from dept where id = #{id}")
void deleteById(Integer id);
java
// 增加部门
@Insert("insert into dept (name, create_time, update_time) values (#{name}, #{createTime}, #{updateTime})")
void insert2(Dept dept);
java
// 修改部门
@Update("update dept set name = #{name}, update_time = #{updateTime} where id = #{id}")
void modify(Dept dept);
3.1 @Param参数的使用
java
// @Param
@Select("select * from dept where id = #{id} and id = #{id2}")
void selectById2(Integer id, Integer id2);
java
@Select({"select * from dept where id = #{id} and id = #{id2}"})
void selectById2(Integer var1, Integer var2);
可以看到, 字节码文件中根本不知道两个形参谁是谁, 传递参数也会出错.
此时, 加上@Param注解
java
@Select({"select * from dept where id = #{id} and id = #{id2}"})
void selectById2(@Param("id") Integer var1, @Param("id2") Integer var2);
字节码文件中就能够区分并正确传递两个参数.
注意:
- 基于springboot官方骨架创建的springboot项目, 编译后在字节码文件中会保留形参名, 不需要加@Param注解
- 不基于springboot官方骨架(alibaba脚手架)创建的springboot项目, 编译后在字节码文件中不会保留形参名, 视情况加@Param注解.
3.2 XML映射文件配置
Mybatis中可以通过XML配置文件来配置sql语句.
遵守的规则:
- 同包同名
- namespace (区分不同的Mapper接口)
- id (区分Mapper接口中的不同方法)
- resultType (方法返回值)
java
<?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="org.itcast.mapper.DeptMapper">
<update id="modify">
update dept set name = #{name}, update_time = #{updateTime} where id = #{id}
</update>
<select id="findById" resultType="org.itcast.pojo.Dept">
select * from dept where id = #{id}
</select>
</mapper>
辅助配置:
- 没有遵守同包同名
- 在配置文件中配置接口映射文件的位置.
mapper-locations: classpath:mapper/*.xml
(接口映射文件被编译后一致存放在类路径下的mapper文件中)
- MybatisX插件
四. SpringBoot项目配置文件
SpringBoot项目配置文件的种类:
-
properties
-
yaml/yml(仅仅是后缀名不同)
可以发现yml/yaml格式的配置文件层次更清晰, 因此项目中更推荐使用yml/yaml项目配置文件