1.MybatisPlus
1.1简介
MybatisPlus简称MP,是Mybatis一个增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
1.2 特性说明
重点说明:MP适用于单表操作,多表操作需要手写sql
- 无侵入性
- 损耗小
- 强大的CRUD操作
- …
1.3 导入jar包
导入MybatisPlus包,删除Mybatis包
<!--spring整合mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
1.4 实现对象和表的映射
1.5 继承公共的Mapper接口
public interface DeptMapper extends BaseMapper<Dept> {
}
MP规则:
BaseMapper T MP 要操作的表是谁?T必须引入对象
1.6 修改配置文件
说明:SpringBoot应该由原来的Mybatis操作数据库,现在换成MP的机制,所以应该修改SpringBoot整合的MP的操作。
1.7 MP入门案例
@SpringBootTest
public class TestSpring {
@Autowired
private DeptMapper deptMapper;
@Test
public void testInsert(){
System.out.println(deptMapper.getClass());
List<Dept> all = deptMapper.findAll();
System.out.println(all);
}
@Test
public void testFind(){
List<Dept> depts = deptMapper.selectList(null);
System.out.println(depts);
}
1.8 Mybatis及MP的CURD操作练习
1.8.1 编辑测试代码
@SpringBootTest
public class TestSpring {
@Autowired
private DeptMapper deptMapper;
@Test
public void testInsert(){
System.out.println(deptMapper.getClass());
List<Dept> all = deptMapper.findAll();
System.out.println(all);
}
@Test
public void testFind(){
List<Dept> depts = deptMapper.selectList(null);
System.out.println(depts);
}
@Test
public void insert(){
Dept dept = new Dept();
dept.setDeptno(60).setDname("学习部").setLoc("银川");
deptMapper.insert(dept);
}
@Test
public void update(){
String newDname = "教学部";
String oldDname = "学习部";
deptMapper.updateByDname(oldDname, newDname);
}
@Test
public void delete(){
String dname = "教学部";
deptMapper.deleteByDname(dname);
}
@Test
public void updates(){
Dept dept = new Dept();
dept.setDeptno(10).setDname("shis").setLoc("上海");
deptMapper.updateById(dept);
}
@Test
public void deletes(){
deptMapper.deleteById(60);
}
1.8.2 编辑Mapper接口
import java.util.List;
//@Mapper
public interface DeptMapper extends BaseMapper<Dept> {
List<Dept> findAll();
@Update("update dept set dname = #{newDname} where dname = #{oldDname}")
void updateByDname(String oldDname,String newDname);
@Delete("delete from dept where dname =#{dname} ")
void deleteByDname(String dname);
}
1.9 MP工作原理
- 通过注解实现对象与表的一一映射
- 通过属性注解实现对象的属性和表中的字段一一映射
- 将公共的方法进行抽取,抽取到BaseMapper接口中
- 将用户操作的方法对象转化为数据库能够识别的sql语句
拼接过程:
- 通过xxxMapper查找父级接口BaseMapper
- 根据BaseMapper查找泛型对象
- 根据泛型对象查找指定的注解@TableName,获取表名
- 根据泛型对象的属性,动态获取表中的字段@TableField
- 在获取字段的同时,获取属性的值,最后进行sql拼接
- MP将拼接好的sql交给Mybatis框架处理执行