一、分页问题

一、mybatis-plus进行分页时,首先需要配置分页拦截器

//**
         * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
         *//*
        @Bean
        public MybatisPlusInterceptor mybatisPlusInterceptor() {
            MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
            interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.POSTGRE_SQL));
            return interceptor;
        }

二、注意数据源问题,如果是有两个以上的数据源 ,注意添加到对应的数据源当中

        //分页插件
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.POSTGRE_SQL));
        sqlSessionFactory.setPlugins(new Interceptor[]{interceptor});
 

二、mybatis-plus函数式拼接查询条件

String name = "张三";
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
lqw.eq(User::getName, name);
List<User> userList = userMapper.selectList(lqw);

或者

Page<User> page = new Page<>(1,10);

userMapper.selectPage(page,Wrappers.<User>lambdaQuery().eq(User::getName, name)) 

当使用mybatisplus框架进行条件查询时,会出现参数为空字符串或者null也走查询条件

// 当name为空字符串或null时,最后生成的sql会变成
SELECT * FROM user WHERE name = '';
SELECT * FROM user WHERE name = null;

mybatisplus的条件构造器方法 eq()、like()等这些方法能支持第三个参数 condition 

 

condition是一个布尔值,当condition为false

时,当前这个条件方法不会生效,即生成的sql不会拼接这个条件;所以在这个参数里判断查询参数是否为空即可

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐