mybatis-plus QueryWrapper and or 连用并且实现分页

目录
  • QueryWrapper and or 连用并分页
    • and or 拼完后的结果是这样的
  • 使用or和and的问题
    • 比如下面这种

QueryWrapper and or 连用并分页

Page<TestEntity> rpage =
 	baseMapper.selectPage(
            new Page<>(pageBean.getPageSize(), pageBean.getPageNum()),
            new QueryWrapper<TestEntity>()
                .eq("siteid", siteid)
                .and(
                    wrapper ->
                        wrapper
                            .or()
                            .lt("createtime", updatetime)
                            .or()
                            .lt("deletetime", updatetime)
                            .or()
                            .lt("operatetime", updatetime)
                            .or()
                            .lt("updatetime", updatetime)));

and or 拼完后的结果是这样的

new QueryWrapper<TestEntity>()
                .eq("siteid", siteid)
                .and(
                    wrapper ->
                        wrapper
                            .or()
                            .lt("createtime", updatetime)
                            .or()
                            .lt("deletetime", updatetime)
                            .or()
                            .lt("operatetime", updatetime)
                            .or()
                            .lt("updatetime", updatetime)))
SELECT
	*
FROM
	t
WHERE
	useflag = 1
	AND (
		siteid =?
		AND (
			createtime < ?
			OR deletetime < ?
		OR operatetime < ?
	OR updatetime < ?))

使用or和and的问题

最近在使用MyBatis Plus,发现在拼接条件的时候,and和or会出问题

比如下面这种

QueryWrapper<User> userWrapper = new QueryWrapper<User>();
userWrapper.eq("name", name);
userWrapper.eq("pwd", pwd).or().eq("phone", phone);

这种写法拼出来的SQL语句是这样的

select * from user where (name = ? and pwd= ? or phone = ?)

这样子是肯定不行的,于是去官网查询,发现正确的写法是这样的

QueryWrapper<User> userWrapper = new QueryWrapper<User>();
userWrapper.eq("name", name);
userWrapper.and(wrapper -> wrapper.eq("pwd", pwd).or().eq("phone", phone));
select * from user where name = ? and ( pwd= ? or phone = ?)

万事大吉!!!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决

    目录 LambdaQueryWrapper使用 int默认值问题 问题现象 解决方法 问题分析 小结一下 lambdaquerywrapper in使用样例 直接使用列名报错 下面这样ok LambdaQueryWrapper使用 int默认值问题 问题现象 一顿操作,感觉不可能有问题,调试后发现,没传任何参数,日志里面居然有两个参数, 进入对象中发现 解决方法 int类型替换成 Integer 类型 问题消失 问题分析 1.了解一下int int: int 数据类型是32位.有符号的以二进制补

  • MybatisPlus使用queryWrapper如何实现复杂查询

    目录 使用queryWrapper实现复杂查询 自定义的queryWrapper实现查询 声明提要 核心代码 使用queryWrapper实现复杂查询 // mp实现负责查询操作 @Test public void testSelectQuery(){ //1,创建QueryWrapper对象 QueryWrapper<User> wrapper = new QueryWrapper<>(); // 2,通过QueryWrapper设置条件 // ge大于等于 gt大于 le小于等

  • mybatisplus如何在xml的连表查询中使用queryWrapper

    目录 在xml的连表查询使用queryWrapper 在mapper接口中定义方法 在mapper xml中 调用该方法 mapper.xml 配合queryWrapper写法 mapper中的接口这么写 xml中${ew.customSqlSegment} 在xml的连表查询使用queryWrapper 在mapper接口中定义方法 List<Map<String,Object>> linkUserAndDept(@Param("ew1") Wrapper&l

  • 关于QueryWrapper,实现MybatisPlus多表关联查询方式

    目录 QueryWrapper实现MybatisPlus多表关联查询 1.dao层接口使用Select注解写SQL 2.service层代码示例 3.反射工具类 4.判空工具类 MybatisPlus QueryWrapper简单用法 QueryWrapper实现MybatisPlus多表关联查询 1.dao层接口使用Select注解写SQL 重点:@Param("ew") Wrapper参数是必须,因为${ew.customSqlSegment} 底层其实就是where 条件,所以为

  • mybatis-plus QueryWrapper and or 连用并且实现分页

    目录 QueryWrapper and or 连用并分页 and or 拼完后的结果是这样的 使用or和and的问题 比如下面这种 QueryWrapper and or 连用并分页 Page<TestEntity> rpage = baseMapper.selectPage( new Page<>(pageBean.getPageSize(), pageBean.getPageNum()), new QueryWrapper<TestEntity>() .eq(&qu

  • Mybatis Plus QueryWrapper复合用法详解

    目录 QueryWrapper复合用法 使用QueryWrapper小结 mybatisplus自定义分页查询 其中ew.customSqlSegment QueryWrapper 设置参数几种格式 有关queryWrapper使用or条件时 QueryWrapper复合用法 Mybatis Plus作为一个强大的msql插件,简化了DAO许多操作,使得我们的代码看上去更加优雅一些: 这里主要记录一下QueryWrapper的复杂查询用法 LambdaQueryWrapper<T> query

  • Spring Boot整合Mybatis Plus和Swagger2的教程详解

    前言:如果你是初学者,请完全按照我的教程以及代码来搭建(文末会附上完整的项目代码包,你可以直接下载我提供的完整项目代码包然后自行体验!),为了照顾初学者所以贴图比较多,请耐心跟着教程来,希望这个项目Demo能给你一些帮助,如果觉得写的还可以请给个关注和点赞,谢谢! 题外话:这是我第一篇用markdown来写的博文,格式不好的地方请见谅 一.pom.xml和application.yml 1.pom.xml中添加相关依赖,这里我把我的pom.xml代码贴出来 <?xml version="1

  • MyBatis学习笔记(二)之关联关系

    今天主要学习的关联关系是一对一关系与一对多关系. 一.一对一关系 还是通过例子来解释说明.(一个妻子对应一个丈夫). 1)数据库信息 create table t_wife( id int primary key auto_increment, wife_name varchar(), fk_husband_id int ); create table t_husband( id int primary key auto_increment, husband_name varchar() );

  • Mybatis自定义拦截器和插件开发详解

    前言 在Spring中我们经常会使用到拦截器,在登录验证.日志记录.性能监控等场景中,通过使用拦截器允许我们在不改动业务代码的情况下,执行拦截器的方法来增强现有的逻辑.在mybatis中,同样也有这样的业务场景,有时候需要我们在不侵入原有业务代码的情况下拦截sql,执行特定的某些逻辑.那么这个过程应该怎么实现呢,同样,在mybatis中也为开发者预留了拦截器接口,通过实现自定义拦截器这一功能,可以实现我们自己的插件,允许用户在不改动mybatis的原有逻辑的条件下,实现自己的逻辑扩展. 本文将按

  • Java Mybatis框架Dao层的实现与映射文件以及核心配置文件详解分析

    目录 Mybatis的Dao层实现 传统开发方式 代理开发方式 MyBatis映射文件深入 动态sql语句 动态SQL之<if> 动态SQL之<foreach> SQL片段抽取 总结 Mybatis核心配置文件深入 typeHandlers标签 plugins标签 总结 Mybatis的Dao层实现 传统开发方式 1.编写UserDao接口 public interface UserMapper { public List<User> findAll() throws

  • 详解MyBatis的Dao层实现和配置文件深入

    目录 Mybatis的Dao层实现 传统开发方式 代理开发方式 MyBatis映射文件深入 动态sql语句 SQL片段抽取 MyBatis核心配置文件深入 typeHandlers标签 plugins标签 MyBatis核心配置文件常用标签 Mybatis的Dao层实现 传统开发方式 编写UserDao接口 public interface UserDao { List<User> findAll() throws IOException; } 编写UserDaoImpl实现 public c

  • 你应该知道的这些Mybatis-Plus使用技巧(小结)

    最近在用 Mybatis-Plus,嗯,真香!!!今天就来说说 Mybatis-Plus 的那些使用技巧 1.条件查询(QueryWrapper) 如果说,我们需要查询的 SQL 语句如下: SELECT * FROM user_info WHERE 1=1 AND age = 20 那么对应的代码可以为: QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("age&qu

  • mybatis-plus返回查询总记录数方式

    目录 mybatis-plus返回查询总记录数 mybatis-plus分页查询,总条数为零的解决 mybatis-plus返回查询总记录数 mp框架提供了selectCount方法,来查询总记录数: 需求: 查找薪水大于3500 名字里有“小”的 员工的个数 sql实现: select count(*) from t_employee where salary>3500 and name like '%小%' 代码实现: @Test public void selectCountByQuery

  • mybatis-plus分页传入参数后sql where条件没有limit分页信息操作

    折腾了差不多两个小时,各种方法尝试,后来想想应该是where过滤后的数据量没有达到默认一页规定的数量所以干脆where就不显示limit信息了,试了一下还真是...这作者还真是把程序做的足够智能,可是这个智能也让我白白花掉了两个小时...还是自己太笨了-- 但是奇怪的是,如果我不设置QueryWrapper参数,where后面的分页限制又是可以出来的.百思不得其解作者的想法... 具体看代码: @Override public PageUtils queryPage(Map<String, Ob

随机推荐