提示:这个方法是最近发现的,还没有深入的研究,如果有大佬熟悉这块的可以一起交流。
目录
前言
一、使用方法
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就好了
|