数据访问模块:MyBatis-Plus
最后更新: 5 天前
简介
continew-starter-data-mp
是 ContiNew Starter 数据访问模块针对 MyBatis-Plus 框架的默认处理。
xml
<dependency>
<groupId>top.continew</groupId>
<artifactId>continew-starter-data-mp</artifactId>
</dependency>
主要特性
- 版本锁定:涉及依赖已进行版本锁定,使用时无需配置版本
- 默认配置:已配置分页插件(启用溢出处理)、防全表更新与删除插件、MyBatis 默认配置(自动驼峰命名规则、日志配置)、SQL 打印及性能分析配置(p6spy)
- Mapper 扫描包配置:只需要在配置文件中指定 Mapper 接口扫描包配置
- 通用查询注解:一个注解搞定繁琐的 QueryWrapper 拼接
- 支持插件自动注入,只要在 Spring 容器中提供插件,即可自动注入到 MyBatis Plus 拦截器中
- 扩展 BaseMapper
配置示例
配置详情请查看:top.continew.starter.data.mp.autoconfigure.MyBatisPlusExtensionProperties
。
yaml
--- ### MyBatis Plus 配置
mybatis-plus:
## 扩展配置
extension:
enabled: true
# Mapper 接口扫描包配置
mapper-package: ${project.base-package}.**.mapper
# ID 生成器配置
id-generator:
type: COSID
# 分页插件配置
pagination:
enabled: true
db-type: MYSQL
# 是否启用乐观锁插件
optimistic-locker-enabled: false
# 是否启用防全表更新与删除插件
block-attack-plugin-enabled: true
## 其他配置略
# ...
温馨提示
下方 MyBatis Plus 配置已经在本模块中进行了默认配置,使用者无需再进行配置,如需要更改,可进行覆盖配置。
yaml
mybatis-plus:
# 启动时是否检查 MyBatis XML 文件的存在(默认:false 不检查)
check-config-location: true
## MyBatis 原生支持配置
configuration:
# 是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN(下划线命名)到经典 Java 属性名 aColumn(驼峰命名)的类似映射
map-underscore-to-camel-case: true
# MyBatis 自动映射时未知列或未知属性处理策略,通过该配置可指定 MyBatis 在自动映射过程中遇到未知列或者未知属性时如何处理
auto-mapping-unknown-column-behavior: NONE
# 日志配置(关闭,单纯使用 p6spy 分析)
log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
通用查询注解
java
@Data
@Schema(description = "部门查询条件")
public class DeptQuery implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 部门名称
*/
@Schema(description = "部门名称", example = "测试部")
private String name;
/**
* 状态
*/
@Schema(description = "状态(1:启用;2:禁用)", example = "1")
private Integer status;
}
// 构建 QueryWrapper
LambdaQueryWrapper<DeptDO> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(StrUtil.isNotBlank(query.getName()), DeptDO::getName, query.getName());
queryWrapper.eq(null != query.getStatus(), DeptDO::getStatus, query.getStatus());
java
@Data
@Schema(description = "部门查询条件")
public class DeptQuery implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 部门名称
*/
@Schema(description = "部门名称", example = "测试部")
@Query(type = QueryType.LIKE)
private String name;
/**
* 状态
*/
@Schema(description = "状态(1:启用;2:禁用)", example = "1")
@Query
private Integer status;
}
// 构建 QueryWrapper
QueryWrapper<DeptDO> queryWrapper = QueryWrapperHelper.build(query);
查询类型目前支持情况如下:
详情请查看:top.continew.starter.data.core.enums.QueryType
。
类型 | 描述 |
---|---|
EQ | 等于 =,例如:WHERE age = 18 |
NE | 不等于 !=,例如:WHERE age != 18 |
GT | 大于 >,例如:WHERE age > 18 |
GE | 大于等于 >= ,例如:WHERE age >= 18 |
LT | 小于 <,例如:WHERE age < 18 |
LE | 小于等于 <=,例如:WHERE age <= 18 |
BETWEEN | 范围查询,例如:WHERE age BETWEEN 10 AND 18 |
LIKE | LIKE '%值%',例如:WHERE nickname LIKE '%s%' |
LIKE_LEFT | LIKE '%值',例如:WHERE nickname LIKE '%s' |
LIKE_RIGHT | LIKE '值%',例如:WHERE nickname LIKE 's%' |
IN | 包含查询,例如:WHERE age IN (10, 20, 30) |
NOT_IN | 不包含查询,例如:WHERE age NOT IN (20, 30) |
IS_NULL | 空查询,例如:WHERE email IS NULL |
IS_NOT_NULL | 非空查询,例如:WHERE email IS NOT NULL |
核心依赖
依赖 | 描述 |
---|---|
mybatis-plus-spring-boot3-starter | MyBatis Plus(MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,简化开发、提高效率) |
dynamic-datasource-spring-boot3-starter | Dynamic Datasource(基于 Spring Boot 的快速集成多数据源的启动器) |
p6spy | P6Spy(SQL 性能分析组件) |
continew-starter-core |