QueryWrapper当作参数传入方法中,在自定义SQL中使用

提示:这个方法是最近发现的,还没有深入的研究,如果有大佬熟悉这块的可以一起交流。

目录

前言

一、使用方法

1、在代码中生成条件

2、在方法中传入带有条件的 QueryWrapper

3、生成Service层和Mapper层方法

 4、XML文件中自定义SQL语句

二、使用此方法的好处


前言

        今天接到任务,测试修改接口,看见方法里竟然传了个QueryWrapper,对于小菜鸟的我还是没见过,感觉很有意思,记录下。

一、使用方法

1、在代码中生成条件

        逻辑涉及两个表的查询

            queryWrapper.
                    eq("aa.del_flag", "0").
                    eq("aa.audit_status", "3");
            queryWrapper.
                    eq("bb.del_flag","0").
                    eq("bb.invisible","0").

2、在方法中传入带有条件的 QueryWrapper

3、生成Service层和Mapper层方法

        mapper层中的方法设置参数名

List<Student> findList(@Param(Constants.WS) QueryWrapper<Student> queryWrapper, @Param("paramsMap") Map<String, Object> paramMap);

 4、XML文件中自定义SQL语句

        在sql需要添加where条件的地方加入${ws.customSqlSegment},其中ws是我们的参数名,在其后边点上customSqlSegment形成where条件

注意:${ws.customSqlSegment}函数中自带where.....我测试的时候就因为写这个接口的人多添加了个where而报错。

二、使用此方法的好处


        使用这个方法生成sql的where条件,我感觉比较好的地方就是在多表条件查询的时候,避免了写多个sql语句。比如我们根据数据库中两个表的条件来进行查询,当一个表中的字段为0的时候另一个表中也为0的时候进行某些操作。当一个表中的字段为1的时候另一个表中也为1的时候进行另外的操作,如果我们不使用上述的方法,那么就需要写两个sql,一个判断为0的一个判断为1的,当然实际肯定不能使用一个字段判断,要不直接用if进行判断再执行sql就好了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,关于您的问题,querywrapperMybatis-Plus的一个查询构造器,它可以帮助我们方便地构建SQL查询语句。您可以通过以下代码来自定义SQL语句: ```java QueryWrapper<Entity> queryWrapper = new QueryWrapper<>(); queryWrapper.select("column1, column2, column3") .eq("column4", "value") .like("column5", "value") .orderByAsc("column6") .last("limit 10"); ``` 这里的select()方法用于指定查询的字段,eq()方法用于指定等值查询的条件,like()方法用于指定模糊查询的条件,orderByAsc()方法用于指定升序排序的字段,last()方法用于指定查询的条数。通过这些方法的组合,可以构建出各种复杂的SQL查询语句。 ### 回答2: QueryWrapperMyBatis-Plus框架提供的一个查询条件构造器,用于构建查询条件,可以方便地实现自定义SQL语句的编写。 首先,我们需要在代码引入QueryWrapper类的相关依赖。然后,我们可以通过创建一个QueryWrapper对象,来构造查询条件。通过QueryWrapper提供的诸多方法,可以根据需要设置查询条件,例如eq方法表示等于,like方法表示模糊查询等。 自定义SQL语句可以通过QueryWrapper提供的方法来实现。例如,我们可以使用QueryWrapper的apply方法自定义查询条件,可以直接传入一个SQL语句作为参数,在该SQL语句可以使用#{ew.paramName}来表示动态参数。我们还可以使用QueryWrapper的select方法来指定查询的字段,groupBy方法来指定分组字段,orderBy方法来指定排序方式等。 此外,QueryWrapper还可以进行链式调用,方便地组合多个查询条件,实现更复杂的查询。通过调用QueryWrapper的lambda方法,可以使用Lambda表达式来设置查询条件,使得代码更加简洁。 总之,QueryWrapper提供了丰富的方法和灵活的操作,可以方便地实现自定义SQL语句,帮助我们更好地使用MyBatis-Plus框架进行数据库操作。 ### 回答3: QueryWrapperMyBatis-Plus的一个查询构建器,可以用来构建SQL语句的查询条件。通过该类,我们可以使用自己定义的SQL语句来执行查询操作。 要使用QueryWrapper自定义SQL语句,首先需要创建一个QueryWrapper对象,然后使用方法来设置查询条件。例如,可以使用eq方法来设置等于条件,like方法来设置模糊查询条件等等。在设置完条件之后,可以使用getQuerySql方法来获取最终的SQL语句。 例如,假设我们有一个user表,其有id、name和age字段。我们想要查询年龄大于等于18岁的用户,可以使用QueryWrapper自定义SQL语句如下: ```java QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.ge("age", 18); String querySql = queryWrapper.getSqlSegment(); ``` 以上代码,我们先创建了一个QueryWrapper对象,并通过ge方法设置了年龄大于等于18的条件。然后调用getQuerySql方法获取最终的SQL语句,这里得到的querySql值为:"WHERE age >= 18"。 通过以上示例可以看出,使用QueryWrapper可以方便地自定义SQL语句查询条件,并且可以获取最终的SQL语句进行执行。QueryWrapper还提供了其他很多方法,可以根据具体的需求来设置查询条件,如eq、ne、like、in等等。 总之,QueryWrapperMyBatis-Plus提供的一个便捷的查询构建器,可以帮助我们轻松地自定义SQL语句来执行查询操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值