20240110
ccnaive 2024/1/10
# 解决mybatis-plus分页查询不生效,配置分页拦截器
default <E extends IPage<T>> E page(E page, Wrapper<T> queryWrapper) {
return this.getBaseMapper().selectPage(page, queryWrapper);
}
这里的total永远是0
# 参考官方分页配置
@Configuration
@MapperScan("scan.your.mapper.package")
public class MybatisPlusConfig {
/**
* 添加分页插件
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//如果配置多个插件,切记分页最后添加
//interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); 如果有多数据源可以不配具体类型 否则都建议配上具体的DbType
return interceptor;
}
}
# 常用QueryWrapper方法
基础条件查询:
eq(String column, Object value):等于某个值
ne(String column, Object value):不等于某个值
gt(String column, Object value):大于某个值
ge(String column, Object value):大于或等于某个值
lt(String column, Object value):小于某个值
le(String column, Object value):小于或等于某个值
between(String column, Object value1, Object value2):在两个值之间
notBetween(String column, Object value1, Object value2):不在两个值之间
模糊查询:
like(String column, String value):包含指定字符串(%value%)
likeLeft(String column, String value):左侧模糊匹配(value%)
likeRight(String column, String value):右侧模糊匹配(%value)
notLike(String column, String value):不包含指定字符串
空值判断:
isNull(String column):字段值为空或null
isNotNull(String column):字段值不为空或null
集合条件:
in(String column, Collection<?> values):字段值在指定集合内
notIn(String column, Collection<?> values):字段值不在指定集合内
逻辑操作符:
and(Consumer<QueryWrapper<T>> consumer):连接一个与当前查询条件的AND子句
or(Consumer<QueryWrapper<T>> consumer):连接一个与当前查询条件的OR子句
nested(Consumer<QueryWrapper<T>> consumer):嵌套查询,用于组合更复杂的逻辑关系
排序和分页:
orderByAsc(String... columns):按指定列升序排列
orderByDesc(String... columns):按指定列降序排列
分页通常不是QueryWrapper直接处理的,而是通过Page对象结合page(Page<T> page, QueryWrapper<T> wrapper)方法实现。
自定义查询字段:
select(String... columns):指定需要查询的字段列表
其他高级用法:
exists(Consumer<SubQueryWrapper<T>> consumer):用于存在性查询
apply(String sqlSegment):添加自定义SQL片段作为查询条件
批量更新:
set(String column, Object val):设置更新时的字段值
# 数据库服务器时区与应用服务器时区不一致
在实体类修改一下时区,他会出手的
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
# pom打包
# 我配置了version使用maven打包插件进行打包:
<artifactId>carbon-leaderboard-server</artifactId>
<packaging>jar</packaging>
<version>1.0.0-SNAPSHOT</version>
# maven插件
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
# 打的包没有版本号
这里加上版本号拼接
<finalName>${project.artifactId}-${project.version}</finalName>