mybatis-plus 使用Condition拼接Sql语句各方法的作用

1.setSqlSelect—用于添加查询的列信息

public Wrapper<T> setSqlSelect(String... columns) {
        StringBuilder builder = new StringBuilder();
        String[] arr = columns;
        int len = columns.length;

        for(int i = 0; i$ < len; ++i$) {
            String column = arr$[i$];
            if (StringUtils.isNotEmpty(column)) {
                if (builder.length() > 0) {
                    builder.append(",");
                }

                builder.append(column);
            }
        }

        this.sqlSelect = builder.toString();
        return this;
    }

2.eq—拼接等于的where语句 column=params

 public Wrapper<T> eq(boolean condition, String column, Object params) {
        if (condition) {
            this.sql.WHERE(this.formatSql(String.format("%s = {0}", column), params));
        }

        return this;
    }

3.ne—拼接不等于的where语句 column<>params

 public Wrapper<T> ne(boolean condition, String column, Object params) {
        if (condition) {
            this.sql.WHERE(this.formatSql(String.format("%s <> {0}", column), params));
        }

        return this;
    }

4.allEq–拼接数据以map封装的等于的where语句

 public Wrapper<T> allEq(boolean condition, Map<String, Object> params) {
        if (condition && MapUtils.isNotEmpty(params)) {
            Iterator iterator = params.entrySet().iterator();

            while(iterator.hasNext()) {
                Entry<String, Object> entry = (Entry)iterator.next();
                Object value = entry.getValue();
                if (StringUtils.checkValNotNull(value)) {
                    this.sql.WHERE(this.formatSql(String.format("%s = {0}", entry.getKey()), entry.getValue()));
                }
            }
        }

        return this;
    }

5.gt—-拼接大于号的where语句

 public Wrapper<T> gt(boolean condition, String column, Object params) {
        if (condition) {
            this.sql.WHERE(this.formatSql(String.format("%s > {0}", column), params));
        }

        return this;
    }

6.ge–拼接大于等于号的where语句 (代码类似5)
7.lt—拼接小于号的where语句
8.le—小于等于

    /**
         *
         AND (user_name=#{ew.paramNameValuePairs.MPGENVAL1} AND id=1)
         OR (user_status=#{ew.paramNameValuePairs.MPGENVAL2} OR status=1
         AND user_nickname NOT LIKE #{ew.paramNameValuePairs.MPGENVAL3})
         AND (new=xx AND hhh LIKE #{ew.paramNameValuePairs.MPGENVAL4})
         AND (pwd=11 AND n1 IS NOT NULL AND n2 IS NOT NULL AND n3 IS NULL)
         GROUP BY x1, x2,x3
         HAVING (x1=11 AND x3=433)
         ORDER BY dd, d1,d2
         */
        ew.where("user_name={0}", "'zhangsan'").and("id=1")
                .orNew("user_status={0}", "0").or("status=1")
                .notLike("user_nickname", "notvalue")
                .andNew("new=xx").like("hhh", "ddd")
                .andNew("pwd=11").isNotNull("n1,n2").isNull("n3")
                .groupBy("x1").groupBy("x2,x3")
                .having("x1=11").having("x3=433")
                .orderBy("dd").orderBy("d1,d2");

9.and — 在没有出现下一个andNew或者orNew之前的所有where条件在一个括号里
10.andNew –新建一组and语句
11.or,orNew–同上

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Mybatis-Plus提供了一个Page对象用于分页查询,其中包括当前页码、每页显示数量、总记录数等信息。在进行分页查询时,我们需要先查询总记录数,然后再查询对应的数据页。 Mybatis-Plus已经为我们提供了方便的方法来进行分页查询,我们只需要在mapper接口中定义一个带有Page参数的查询方法即可。例如: ```java List<User> selectUserList(Page<User> page); ``` 在查询中,我们需要使用Mybatis-Plus提供的Page对象来进行分页查询。在查询之前,我们需要先设置Page对象的当前页码和每页显示数量: ```java Page<User> page = new Page<>(1, 10); // 查询第1页,每页显示10条记录 ``` 接下来,我们需要在查询之前先查询出总记录数,这个过程可以使用Mybatis-Plus提供的selectCount方法: ```java long total = userMapper.selectCount(null); // 查询总记录数 page.setTotal(total); // 设置总记录数 ``` 然后,我们就可以使用Page对象进行分页查询了: ```java List<User> userList = userMapper.selectUserList(page); page.setRecords(userList); // 设置数据页 ``` 在进行分页查询时,Mybatis-Plus会自动拼接分页SQL语句,并将分页参数传递给SQL语句。例如,在MySQL中,分页SQL语句可以如下所示: ```sql SELECT * FROM user LIMIT 0, 10; ``` 其中,0表示起始记录数,10表示每页显示数量。Mybatis-Plus会根据当前页码和每页显示数量自动计算出起始记录数。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值