MybatisPlus学习
一、MybatisPlus简介
1.1、入门案例(springboot整合MP)
简称MP,和springboot简化spring开发一样,MP简化Mybatis程序的开发,提高开发效率。
1.1.1、创建数据库及表
1.1.2、创建springboot工程
1.1.3、添加配置
1.1.4、创建实体类
1.1.5、创建dao接口
1.1.6、编写测试类
1.1.7总结
和boot整合mybatis相比,改变的地方:
- 依赖不同
- dao接口中不需要编写方法和sql语句,只需要继承BaseMapper接口即可。
1.2、mybatisPlus简介
二、标准数据层开发
2.1、新增
2.2、删除
2.3、修改
2.4、根据id查询
2.5、查询所有
2.6、Lombok
每次写实体类都需要构建setter,getter,tostring等方法。Lombok是一个jar包、java类库,提供一组注解,简化pojo实体类开发。
@Slf4j:记录日志方便调试
2.6.1、包含之前方法也可使用
2.7、分页功能
2.7.1、调用方法传入参数获取返回值
2.7.2、设置分页拦截器
必须要设置拦截器,分页查询的方法才能正常使用。原因时sql语句中有limit的语句,需要设置拦截器MP才能在sql语句上添加limit条件。
2.7.3、日志功能
三、DQL(数据查询query语言)编程控制
3.1、条件查询
3.1.1、条件查询的类
MP将书写复杂SQL查询条件进行了封装,使用编程的形式完成查询条件的组合。Wrapper类就是用来构建查询条件的。
3.1.2、环境构建
- 创建springboot工程
- pom.xml中添加依赖
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
- 编写UserDao接口
- 创建实体类
- 添加配置
- 编写测试类
处理日志
3.1.3、构建条件查询
- 推荐使用方式三:且进行动态条件拼装
3.1.4、多条件构建
3.1.5、null判定
- 实现需求:
3.2、查询投影
3.2.1、查询指定字段
3.2.2、聚合查询
聚合函数查询,完成count、max、min、avg、sum的使用
3.2.3、分组查询
3.2.4、注意点
3.3、查询条件
3.3.1、等值查询
3.3.2、范围查询
3.3.3、模糊查询
3.3.4、排序查询
3.4、映射匹配兼容性
数据能够从表中获取并封装到模型对象中,原因是表的字段列名和模型类的属性名一样。
3.4.1、问题一:表列名与模型类的属性名不一致
3.4.2、问题二:模块类中多了数据库中未定义的字段
3.4.3、问题三:限制字段默认不要进行查询
3.4.4、问题四:表的名称和模型类的名称不一致
四、DML(数据库操作语言)编程控制
4.1、id生成策略控制(insert)
4.1.1、环境构建
- 创建springboot项目
- pom.xml中添加对应的依赖
- 编写UserDao接口
- 编写模型类
- 编写配置文件
- 编写测试类
4.1.2、auto策略
4.1.3、input策略(用户手工输入id)
4.1.4、assin_id策略(生成的id是个long类型的数据,64bit)
4.1.5、assin_uuid策略(生成32位字符串)
4.1.6、id生成策略对比
4.2、简化配置
4.2.1、模型类主键策略设置
4.2.2、数据库表和模型类的映射关系
4.3、多记录操作
4.3.1、批量删除
4.3.2、批量查询
4.3、逻辑删除
实质上是update而不是delete
4.3.1、修改数据库添加deleted列
4.3.2、实体类添加属性
4.3.3、运行删除方法
4.3.4、逻辑删除后对查询的影响
4.3.5、总结
4.4、乐观锁
4.4.1、概念
更新一条记录时,希望这条记录没有被别人更新。
4.4.2、实现思路
4.4.3、实现步骤
五、快速开发
5.1、代码生成器的原理分析
自动生成代码模板
5.2、代码生成器的实现
- 创建项目
- 导入jar包
- 创建代码生成类
- 配置文件
- 运行程序
5.3、MP中Service的CRUD
在这里插入图片描述