网站首页 > 精选文章 / 正文
分享
今天要写一个分页查询,但是表名和参数都要作为入参传到sql进行
我:没有头绪,怎么设计一个分页查询
同事:有啥难的,你直接用mybatis-plus插件不就好了
我:但是我这个表名事不固定的,不知道哪个表
同事:那也简单,你看我给你写个。
那么他如何写的一个分页查询的
mybatis-plus 分页查询
第一种 常见单表分页
第一步 pom文件引用
<!-- mybatis plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatisplus.version}</version>
</dependency>
第二步 插件的配置
@Configuration
public class MybatisPlusConfig {
/**
* 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
paginationInnerInterceptor.setDbType(DbType.MYSQL);
paginationInnerInterceptor.setOverflow(true);
interceptor.addInnerInterceptor(paginationInnerInterceptor);
return interceptor;
}
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return configuration -> configuration.setUseDeprecatedExecutor(false);
}
}
第三步 调用
@Test
public void selectPage(){
PageHisQueyPojo pageHisQueyPojo = new PageHisQueyPojo();
Page<HistoryQueryRecord> page = new Page<>(request.getCurrPage(), request.getPageSize());
IPage<HistoryQueryRecord> userIPage = historyQueryRecordMapper.selectPage(page, null);
pageHisQueyPojo.setCurrent(request.getCurrPage());
pageHisQueyPojo.setSize(request.getPageSize());
pageHisQueyPojo.setTotal(userIPage.getTotal());
pageHisQueyPojo.setDataList(userIPage.getRecords());
}
@Test
public void selectMapsPage(){
LambdaQueryWrapper<User> userLambdaQueryWrapper = Wrappers.lambdaQuery();
userLambdaQueryWrapper.select(User::getUsername).like(User::getUsername , "k");
Page<Map<String , Object>> mapPage = new Page<>(1 , 2 , false);
IPage<Map<String , Object>> mapIPage = userMapper.selectMapsPage(mapPage , userLambdaQueryWrapper);
System.out.println("总页数: "+mapIPage.getPages());
System.out.println("总记录数: "+mapIPage.getTotal());
mapIPage.getRecords().forEach(System.out::println);
}
第二种自定义sql分页查询
mapper.xml类
<select id="selectByHisName" resultType="java.lang.String">
select u.realname from his_ipd_encounter e, his_user u where e.his_uid = u.his_uid
</select>
mapper类
public interface UserMapper extends MyMapper<User> {
/**
* 多表查询分页
* @param page
* @return
*/
IPage<String> selectByHisName(IPage<User> page);
}
调用
@Test
public void select(){
// 创建分页参数
Page<User> page = new Page<>(1,2);
IPage<String> result = userMapper.selectByHisName(page);
// 获取数据
List<String> records = result.getRecords();
records.forEach(System.out::println);
System.out.println("总页数 = "+ result.getPages());
}
第三种不用插件分页查询
mapper.xml类
<select id ="findDataPageByTable" resultType ="java.util.Map" parameterType ="java.lang.String" >
select
${columns}
from
${tableName}
limit ${curPage},${pageSize}
</select>
mapper类
public List<Map<String,Object>> findDataPageByTable(@Param("curPage") int curPage,@Param("pageSize") int pageSize, @Param("columns") String columns, @Param("tableName") String tableName);
调用
//查询表里面所有的数据
long size = dataCentreMapper.count(tableId);
List<Map<String, Object>> dataList = dataCentreMapper.findDataPageByTable((current-1)*pageSize,pageSize,cloumns, tableId);
留个关注
《日常分享系列》,会持续更新,想了解的朋友可以关注 ,文章有帮助的话可以长按点赞有惊喜!!!文章比较长,大家可以先 收藏、转发后再看,有什么补充可以在下面评论,谢谢大家!
Tags:querywrapper大于小于
猜你喜欢
- 2025-01-20 MySql中json类型数据的查询以及在MyBatis-Plus中的使用
- 2025-01-20 6K字详解:快速上手Spring Cache 整合 Redis 做缓存使用
- 2025-01-20 MyBatis-Plus 实现增删改查的源码解析
- 2025-01-20 Mybatis-Plus条件构造器select方法返回指定字段
- 2025-01-20 Java系统开发从入门到精通第三讲(文字版)
- 2025-01-20 MyBatis-Plus联表配置
- 2025-01-20 数据持久化技术——MP
- 2025-01-20 高并发下实现幂等的几种方式
- 2025-01-20 ShardingSphere分库分表?看这个教程就行了
- 2025-01-20 DIY 3 种分库分表分片算法,自己写的轮子才吊!