一.配置文件
yml格式,mysql8.0以上
mybatis:
configuration:
#开启驼峰命名
map-underscore-to-camel-case: true
spring:
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://地址:端口/数据库名?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
username: 用户名
password: 密码
pom.xml
<!-- MySQL 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- mybatis plus的依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
二.工具包准备
属性名与表中字段名一致(记得检查驼峰命名法)
Serializable接口:序列化,要指定serialVersionUID
可以参考表名定义:https://blog.csdn.net/qq_40241957/article/details/101772536
@Data
@TableName("表名")//指定表名
public class CourseBase implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id", type = IdType.AUTO) //指定主键id
private Long id;
/**
* 名称
*/
private String name;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)//创建时自动注入时间
private LocalDateTime createDate;
/**
* 修改时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)//创建和修改时自动注入
private LocalDateTime changeDate;
}
返回值工具包(与前端约定好)
@Data
@ToString
public class PageResult<T> implements Serializable {
// 数据列表
@ApiModelProperty("数据列表")
private List<T> items;
//总记录数
@ApiModelProperty("总记录数")
private long counts;
//当前页码
@ApiModelProperty("当前页码")
private long page;
//每页记录数
@ApiModelProperty("每页记录数")
private long pageSize;
public PageResult(List<T> items, long counts, long page, long pageSize) {
this.items = items;
this.counts = counts;
this.page = page;
this.pageSize = pageSize;
}
}
三.mapper层和分页拦截器
mapper接口继承BaseMapper
public interface Mapper extends BaseMapper<工具包> {
}
@Configuration
@MapperScan("mapper层地址")
public class MybatisPlusConfig {
/**
* 定义分页拦截器
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
四.业务实现
public void testCourseBaseMapper() {
//这个类可以添加匹配条件,参数一:判断类中值存在,参数二:何种方式取值,参数三:值
//queryWrapper.like(StringUtils.isNotEmpty(Dto.getName()),Dto::getName.Dto.getName())
LambdaQueryWrapper<工具包> queryWrapper = new LambdaQueryWrapper<>();
//参数一:页码,参数二:每页记录数,推荐弄个工具类
Page<工具包> page = new Page<>(1L,3L);
//分页查询E page 分页参数, @Param("ew") Wrapper<T> queryWrapper 查询条件
Page<工具包> pageResult = courseBaseMapper.selectPage(page, queryWrapper);
//数据
List<工具包> items = pageResult.getRecords();
//总记录数
long total = pageResult.getTotal();
//准备返回数据 List<T> items, long counts, long page, long pageSize。与前端预定好
PageResult<CourseBase> courseBasePageResult = new PageResult<>(items, total, pageParams.getPageNo(), pageParams.getPageSize());
}