前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MybatisPlus中and和or的使用

MybatisPlus中and和or的使用

作者头像
CBeann
发布2023-12-25 18:55:29
4540
发布2023-12-25 18:55:29
举报
文章被收录于专栏:CBeann的博客CBeann的博客

需求

最近自己玩发现MyBatisPlus还是挺好用的,但是忽然发现对于一个持久层框架来说支持拼接复杂的SQL也是一个优势,对一个持久层框架拼接SQL来说,or比and更难拼,所以此处用案例来实现MybatisPlus中or和and的简单使用。

代码下载(内含数据库)

ChaiRongD/Demooo - Gitee.com

and和or的使用

案例1:AandB
代码语言:javascript
复制
@GetMapping("/AandB")
    public Object AandB(){
        //SELECT id,name,age,sex FROM student WHERE (name = ? AND age = ?)
        List<Student> list = studentService.lambdaQuery().eq(Student::getName, "1").eq(Student::getAge, 1).list();
        return list;
    }
案例2:AorB
代码语言:javascript
复制
 @GetMapping("/AorB")
    public Object AorB(){
        //SELECT id,name,age,sex FROM student WHERE (name = ? OR age = ?)
        List<Student> list = studentService.lambdaQuery().eq(Student::getName, "1").or().eq(Student::getAge, 12).list();
        return list;
    }
案例3:A or(C and D)
代码语言:javascript
复制
@GetMapping("/A_or_CandD")
    public Object A_or_CandD() {
        //SELECT id,name,age,sex FROM student WHERE (name = ? OR (name = ? AND age = ?)) 
      List<Student> list =
          studentService
              .lambdaQuery()
              .eq(Student::getName, "1")
              .or(wp -> wp.eq(Student::getName, "1").eq(Student::getAge, 12))
              .list();
      return list;
案例4:(AandB)or(CandD)
代码语言:javascript
复制
@GetMapping("/AandB_or_CandD")
  public Object AandB_or_CandD() {
    // SELECT id,name,age,sex FROM student WHERE ((name = ? AND age = ?) OR (name = ? AND age = ?)) 
    List<Student> list =
        studentService
            .lambdaQuery()
            .and(wp -> wp.eq(Student::getName, "1").eq(Student::getAge, 12))
            .or(wp -> wp.eq(Student::getName, "1").eq(Student::getAge, 12))
            .list();
    return list;
  }
案例5:A or (B and ( C or D))
代码语言:javascript
复制
@GetMapping("/complex")
  public Object complex() {
    // SELECT * FROM student WHERE ((name <> 1) OR (name = 1 AND (age IS NULL OR age >= 11)))
    List<Student> list =
        studentService
            .lambdaQuery()
            .and(wp -> wp.ne(Student::getName, "1"))
            .or(
                wp ->
                    wp.eq(Student::getName, "1")
                        .and(wpp -> wpp.isNull(Student::getAge).or().ge(Student::getAge, 11)))
            .list();
    return list;
  }

总结

1 你可以让他打印SQL语句,这样你就知道知道的SQL了

2 我遇到的情况是不报错,不打印SQL,那只能DEBUG

3 手写SQL在mapper中也行

参考

springboot整合MybatisPlus_CBeann的博客-CSDN博客

MyBatis-Plus代码自动生成工具_CBeann的博客-CSDN博客_mybatisplus代码生成工具

MyBatis-Plus整合Spring Demo_CBeann的博客-CSDN博客_mybatis-plus spring

留言

如果有不会的SQL,可以留言,帮您解决问题,也顺便丰富文章的内容

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求
  • 代码下载(内含数据库)
  • and和or的使用
    • 案例1:AandB
      • 案例2:AorB
        • 案例3:A or(C and D)
          • 案例4:(AandB)or(CandD)
            • 案例5:A or (B and ( C or D))
            • 总结
            • 参考
            • 留言
            相关产品与服务
            数据库
            云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档