1. 整合Mybatis-plus
1.1 基础配置
- 手动添加依赖 数据池依赖和mybatis-plus依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
- 配置文件中添加属性
spring:
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8
username: root
password: root
- 添加实体类
- 编写Mapper,继承Base接口,并将泛型实例化。
@Mapper
public interface BookDao extends BaseMapper<Book> {
}
- 测试类中进行测试。
1.2 数据库表交互
- mybatis-plus对数据表进行读取时,不能读取到表的前缀,需要在配置文件中添加表前缀。
- 同时还需要添加自增属性,使数据能够实现自增功能,如 id属性。
- 开启日志属性,这样就不用采用输出语句,直接运行接口中的方法就能在控制台上直观看到数据
#配置表名前缀
mybatis-plus:
global-config:
db-config:
table-prefix: tbl_
#设置自增
id-type: auto
configuration:
#开启日志
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
2. 分页功能
- base接口中已经实现了分页的功能,可以直接调用方法,但是调用方法不会直接得到响应结果,需要对其进行配置。
@Test
void testGetPage(){
IPage page = new Page(1,5);
bookDao.selectPage(page,null);//返回的依旧是 Ipage接口类型是数据
}
- 添加配置类,将分页拦截器加载到mybatis-plus中。
@Configuration
public class MPConfig {
//创建mybatis-plus拦截器
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
//定义拦截器
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//添加分页拦截器
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
}
- 分页后可以得到很多数据,如:
- 数据 当前页码 每页数据总量 最大页码 数据总量
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZkMUREZw-1647693229509)(C:\Users\10990\AppData\Roaming\Typora\typora-user-images\image-20220318120655416.png)]
3. 条件查询
- 创建QueryWrapper对象,给对象添加值。
- 缺点: 需要手动添加对象的属性值
- 创建LambdaQueryWrapper 对象,可以实现自动添加对象属性值,避免错误出现。
- 针对没有输入的空值,可以在最前面添加 判断类型。
- 类似语法 if(…){}
@Test
void testGetBy(){
// QueryWrapper<Book> qw = new QueryWrapper<>();
// qw.like("type","说");
// bookDao.selectList(qw);
String name = null;
LambdaQueryWrapper<Book> lqw = new LambdaQueryWrapper<>();
//lqw.like(Book::getName,"三");
lqw.like(name!=null,Book::getName,name);
bookDao.selectList(lqw);
}
}
4. 业务层快速开发
- 通过接口(Iservice)快读开发Service
- 使用通用类实现类(ServiceImpl<M,T>)快速开发ServiceImpl
- 可以在通用类的基础上做功能覆盖或功能追加
- 注意重载时不要覆盖原始操作,避免原始提供的功能丢失。
@Service
public interface IBookService extends