[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"site-config":3,"primary-menu":6,"cat-mybatis-plus":85,"catposts-mybatis-plus":97,"post-detail-post-mybaitsplus-wrapper-51f1c68c":484},{"config":4,"socialLinks":5},null,[],{"metadata":7,"spec":10,"menuItems":20},{"name":8,"creationTimestamp":9},"primary","2026-09-12T06:13:55.024154Z",{"displayName":11,"menuItems":12},"主菜单",[13,14,15,16,17,18,19],"88c3f10b-321c-4092-86a8-70db00251b74","menu-item-izrtmxer","c4c814d1-0c2c-456b-8c96-4864965fee94","menu-item-column","menu-item-tools","menu-item-zsxq","menu-item-ocrxlczu",[21,30,40,49,58,67,76],{"displayName":22,"metadata":23,"spec":25,"status":28,"children":29},"首页",{"name":13,"creationTimestamp":24},"2026-09-12T06:13:54.422830Z",{"displayName":22,"href":26,"priority":27,"menuName":8},"\u002F",0,{"displayName":22,"href":26},[],{"displayName":31,"metadata":32,"spec":34,"status":38,"children":39},"Java面试八股",{"name":14,"creationTimestamp":33},"2026-09-13T09:42:02.854891Z",{"displayName":31,"href":35,"target":36,"priority":37,"menuName":8},"\u002Fjava-interview","_self",1,{"displayName":31,"href":35},[],{"displayName":41,"metadata":42,"spec":44,"status":47,"children":48},"文章",{"name":15,"creationTimestamp":43},"2026-09-12T06:13:54.457307Z",{"displayName":41,"href":45,"priority":46,"menuName":8},"\u002Farchives",2,{"displayName":41,"href":45},[],{"displayName":50,"metadata":51,"spec":53,"status":56,"children":57},"项目实战",{"name":16,"creationTimestamp":52},"2026-09-14T00:35:08.138170Z",{"displayName":50,"href":54,"target":36,"priority":55,"menuName":8},"\u002Fcolumn",3,{"displayName":50,"href":54},[],{"displayName":59,"metadata":60,"spec":62,"status":65,"children":66},"在线工具",{"name":17,"creationTimestamp":61},"2026-09-14T00:35:08.171474Z",{"displayName":59,"href":63,"target":36,"priority":64,"menuName":8},"\u002Ftools",4,{"displayName":59,"href":63},[],{"displayName":68,"metadata":69,"spec":71,"status":74,"children":75},"知识星球",{"name":18,"creationTimestamp":70},"2026-09-14T00:35:08.199145Z",{"displayName":68,"href":72,"target":36,"priority":73,"menuName":8},"\u002Fzsxq",5,{"displayName":68,"href":72},[],{"displayName":77,"metadata":78,"spec":80,"status":83,"children":84},"特价云服务器",{"name":19,"creationTimestamp":79},"2026-09-25T15:30:59.201614Z",{"displayName":77,"href":81,"target":36,"priority":82,"menuName":8},"\u002Fserver",6,{"displayName":77,"href":81},[],{"metadata":86,"spec":89,"status":94,"postCount":96},{"name":87,"creationTimestamp":88},"mybatis-plus","2026-09-12T08:22:53.466780Z",{"displayName":90,"slug":87,"cover":91,"description":92,"priority":27,"hideFromList":93,"preventParentPostCascadeQuery":93},"MyBatis Plus 教程","\u002Fupload\u002Ftutorial-cover-mybatis-plus.png","MyBatis-Plus 从入门到实战：条件构造器、通用 CRUD、分页插件、代码生成与多租户。",false,{"permalink":95,"postCount":96,"visiblePostCount":96},"\u002Fcategories\u002Fmybatis-plus",18,[98,122,144,166,187,208,230,251,273,294,315,336,356,377,398,419,441,463],{"metadata":99,"spec":102,"status":113,"categories":117},{"name":100,"creationTimestamp":101},"post-mybatisplus-wrapper-condition-0f52be04","2026-09-12T08:30:08.659081Z",{"title":103,"slug":104,"cover":105,"excerpt":106,"publishTime":108,"categories":109,"tags":110,"priority":27,"pinned":93,"deleted":93,"visible":111,"allowComment":112},"Mybatis Plus Condition 详解（结合代码示例）","mybatisplus-wrapper-condition","\u002Fupload\u002F167344247547271-zSIv.jpg",{"raw":107,"autoGenerate":93},"前面小节中，我们已经学习了 Mybatis Plus 中使用频率超高的条件构造器，应该有会注意到很多方法中，都有一个 boolean 类型的 condition 字段，如下面的截图，这玩意到底是干嘛用的呢...","2026-09-12T08:30:08.716991Z",[87],[],"PUBLIC",true,{"permalink":114,"excerpt":107,"lastModifyTime":115,"phase":116},"\u002Farchives\u002Fmybatisplus-wrapper-condition","2026-09-13T05:25:08.061777Z","PUBLISHED",[118],{"metadata":119,"spec":120,"status":121,"postCount":96},{"name":87,"creationTimestamp":88},{"displayName":90,"slug":87,"cover":91,"description":92,"priority":27,"hideFromList":93,"preventParentPostCascadeQuery":93},{"permalink":95,"postCount":96,"visiblePostCount":96},{"metadata":123,"spec":126,"status":135,"categories":139},{"name":124,"creationTimestamp":125},"post-mybatisplus-quick-start-7438e7a7","2026-09-12T08:30:08.027221Z",{"title":127,"slug":128,"cover":129,"excerpt":130,"publishTime":132,"categories":133,"tags":134,"priority":27,"pinned":93,"deleted":93,"visible":111,"allowComment":112},"Mybatis Plus 快速开始","mybatisplus-quick-start","\u002Fupload\u002F164870371940555-tWiM.png",{"raw":131,"autoGenerate":93},"大家好，前面小节中，我们已经了解到什么是 Mybatis Plus， 以及和 Mybatis 的区别。本章节中，我们将上手学习如何使用它操作数据库...","2026-09-12T08:30:08.104840Z",[87],[],{"permalink":136,"excerpt":137,"lastModifyTime":138,"phase":116},"\u002Farchives\u002Fmybatisplus-quick-start","前面小节中，我们已经了解到什么是 Mybatis Plus， 以及和 Mybatis 的区别。本章节中，我们将上手学习如何使用它操作数据库...","2026-09-13T05:25:08.633120Z",[140],{"metadata":141,"spec":142,"status":143,"postCount":96},{"name":87,"creationTimestamp":88},{"displayName":90,"slug":87,"cover":91,"description":92,"priority":27,"hideFromList":93,"preventParentPostCascadeQuery":93},{"permalink":95,"postCount":96,"visiblePostCount":96},{"metadata":145,"spec":148,"status":157,"categories":161},{"name":146,"creationTimestamp":147},"post-mybatisplus-print-sql-6fd9382a","2026-09-12T08:30:07.357056Z",{"title":149,"slug":150,"cover":151,"excerpt":152,"publishTime":154,"categories":155,"tags":156,"priority":27,"pinned":93,"deleted":93,"visible":111,"allowComment":112},"Mybatis Plus 打印 SQL 语句（包含执行耗时）","mybatisplus-print-sql","\u002Fupload\u002F167091605638716-eGlp.jpg",{"raw":153,"autoGenerate":93},"大家好，项目中使用 Mybatis Plus 框架操作数据库时，如果是在本地开发（生产环境不推荐打印执行 SQL，会有数据泄漏风险），很希望完整的打印一下执行的 SQL，以及执行耗时，一方面可以方便调试，另一方面通过执行耗时，可以提醒我们改进一些慢 SQL...","2026-09-12T08:30:07.418896Z",[87],[],{"permalink":158,"excerpt":159,"lastModifyTime":160,"phase":116},"\u002Farchives\u002Fmybatisplus-print-sql","项目中使用 Mybatis Plus 框架操作数据库时，如果是在本地开发（生产环境不推荐打印执行 SQL，会有数据泄漏风险），很希望完整的打印一下执行的 SQL，以及执行耗时，一方面可以方便调试，另一方面通过执行耗时，可以提醒我们改进一些慢 SQL...","2026-09-13T05:25:11.894390Z",[162],{"metadata":163,"spec":164,"status":165,"postCount":96},{"name":87,"creationTimestamp":88},{"displayName":90,"slug":87,"cover":91,"description":92,"priority":27,"hideFromList":93,"preventParentPostCascadeQuery":93},{"permalink":95,"postCount":96,"visiblePostCount":96},{"metadata":167,"spec":170,"status":179,"categories":182},{"name":168,"creationTimestamp":169},"post-mybatisplus-page-query-cf6b396c","2026-09-12T08:30:06.634372Z",{"title":171,"slug":172,"cover":173,"excerpt":174,"publishTime":176,"categories":177,"tags":178,"priority":27,"pinned":93,"deleted":93,"visible":111,"allowComment":112},"Mybatis Plus 分页查询数据（图解）","mybatisplus-page-query","\u002Fupload\u002F167246380737773-bixm.jpg",{"raw":175,"autoGenerate":93},"本小节中，我们将学习如何通过 Mybatis Plus 分页查询数据库表中的数据。下图是我从京东上查询关键词「手机」 ，展示的手机数据就是分页查询，共有 91 页...","2026-09-12T08:30:06.704298Z",[87],[],{"permalink":180,"excerpt":175,"lastModifyTime":181,"phase":116},"\u002Farchives\u002Fmybatisplus-page-query","2026-09-13T05:25:14.891109Z",[183],{"metadata":184,"spec":185,"status":186,"postCount":96},{"name":87,"creationTimestamp":88},{"displayName":90,"slug":87,"cover":91,"description":92,"priority":27,"hideFromList":93,"preventParentPostCascadeQuery":93},{"permalink":95,"postCount":96,"visiblePostCount":96},{"metadata":188,"spec":191,"status":200,"categories":203},{"name":189,"creationTimestamp":190},"post-mybatisplus-optimistic-lock-ad7ba0dc","2026-09-12T08:30:05.848176Z",{"title":192,"slug":193,"cover":194,"excerpt":195,"publishTime":197,"categories":198,"tags":199,"priority":27,"pinned":93,"deleted":93,"visible":111,"allowComment":112},"Mybatis Plus 乐观锁插件（手把手教学）","mybatisplus-optimistic-lock","\u002Fupload\u002F167333816060936-YNck.jpg",{"raw":196,"autoGenerate":93},"程序设计中，若遇到高并发场景，需要多线程修改共享资源的时候，为了保证数据的原子性，就需要频繁使用到锁。锁的类型也有很多，如互斥锁、自旋锁、读写锁、悲观锁、乐观锁等，因为本文主要内容是 Mybatis Plus 实现乐观锁功能，就不展开讲了...","2026-09-12T08:30:05.904951Z",[87],[],{"permalink":201,"excerpt":196,"lastModifyTime":202,"phase":116},"\u002Farchives\u002Fmybatisplus-optimistic-lock","2026-09-13T05:25:15.535552Z",[204],{"metadata":205,"spec":206,"status":207,"postCount":96},{"name":87,"creationTimestamp":88},{"displayName":90,"slug":87,"cover":91,"description":92,"priority":27,"hideFromList":93,"preventParentPostCascadeQuery":93},{"permalink":95,"postCount":96,"visiblePostCount":96},{"metadata":209,"spec":212,"status":221,"categories":225},{"name":210,"creationTimestamp":211},"post-mybatisplus-insert-508e1eef","2026-09-12T08:30:05.087286Z",{"title":213,"slug":214,"cover":215,"excerpt":216,"publishTime":218,"categories":219,"tags":220,"priority":27,"pinned":93,"deleted":93,"visible":111,"allowComment":112},"Mybatis Plus 新增数据并返回主键 ID（图文讲解）","mybatisplus-insert","\u002Fupload\u002F167204808139593-dWMf.jpg",{"raw":217,"autoGenerate":93},"大家好，本小节中，我们将学习如何通过 Mybatis Plus 框架给数据库表新增数据。","2026-09-12T08:30:05.152745Z",[87],[],{"permalink":222,"excerpt":223,"lastModifyTime":224,"phase":116},"\u002Farchives\u002Fmybatisplus-insert","本小节中，我们将学习如何通过 Mybatis Plus 框架给数据库表新增数据。","2026-09-13T05:25:18.910864Z",[226],{"metadata":227,"spec":228,"status":229,"postCount":96},{"name":87,"creationTimestamp":88},{"displayName":90,"slug":87,"cover":91,"description":92,"priority":27,"hideFromList":93,"preventParentPostCascadeQuery":93},{"permalink":95,"postCount":96,"visiblePostCount":96},{"metadata":231,"spec":234,"status":243,"categories":246},{"name":232,"creationTimestamp":233},"post-mybatisplus-dynamic-table-name-2454e803","2026-09-12T08:30:04.221155Z",{"title":235,"slug":236,"cover":237,"excerpt":238,"publishTime":240,"categories":241,"tags":242,"priority":27,"pinned":93,"deleted":93,"visible":111,"allowComment":112},"Mybatis Plus 动态表名（图文讲解）","mybatisplus-dynamic-table-name","\u002Fupload\u002F167420281572597-bWCR.jpg",{"raw":239,"autoGenerate":93},"本小节中，我们将学习如何在 Mybatis Plus 中实现动态表名。啥是动态表名呢？我们都知道，当数据库单表存储数据太多时（比如单表超过 1000 万条数据），会严重影响查询效率，这就需要进行水平切分操作，将数据分别存储到不同表中...","2026-09-12T08:30:04.292849Z",[87],[],{"permalink":244,"excerpt":239,"lastModifyTime":245,"phase":116},"\u002Farchives\u002Fmybatisplus-dynamic-table-name","2026-09-13T05:25:20.735247Z",[247],{"metadata":248,"spec":249,"status":250,"postCount":96},{"name":87,"creationTimestamp":88},{"displayName":90,"slug":87,"cover":91,"description":92,"priority":27,"hideFromList":93,"preventParentPostCascadeQuery":93},{"permalink":95,"postCount":96,"visiblePostCount":96},{"metadata":252,"spec":255,"status":264,"categories":268},{"name":253,"creationTimestamp":254},"post-mybatisplus-delete-2134cc6a","2026-09-12T08:30:03.191339Z",{"title":256,"slug":257,"cover":258,"excerpt":259,"publishTime":261,"categories":262,"tags":263,"priority":27,"pinned":93,"deleted":93,"visible":111,"allowComment":112},"Mybatis Plus 删除数据（超详细）","mybatisplus-delete","\u002Fupload\u002F167214854711359-XVkX.jpg",{"raw":260,"autoGenerate":93},"大家好，本小节中，我们将学习如何通过 Mybatis Plus 删除数据库表中的数据。为了演示删除数据，在前面小节中，我们已经定义好了一个用于测试的用户表， 执行脚本如下...","2026-09-12T08:30:03.250941Z",[87],[],{"permalink":265,"excerpt":266,"lastModifyTime":267,"phase":116},"\u002Farchives\u002Fmybatisplus-delete","本小节中，我们将学习如何通过 Mybatis Plus 删除数据库表中的数据。为了演示删除数据，在前面小节中，我们已经定义好了一个用于测试的用户表， 执行脚本如下...","2026-09-13T05:25:21.767837Z",[269],{"metadata":270,"spec":271,"status":272,"postCount":96},{"name":87,"creationTimestamp":88},{"displayName":90,"slug":87,"cover":91,"description":92,"priority":27,"hideFromList":93,"preventParentPostCascadeQuery":93},{"permalink":95,"postCount":96,"visiblePostCount":96},{"metadata":274,"spec":277,"status":286,"categories":289},{"name":275,"creationTimestamp":276},"post-mybatisplus-batch-insert-0dfcd5a6","2026-09-12T08:30:02.464761Z",{"title":278,"slug":279,"cover":280,"excerpt":281,"publishTime":283,"categories":284,"tags":285,"priority":27,"pinned":93,"deleted":93,"visible":111,"allowComment":112},"Mybatis Plus 批量 Insert_新增数据（图文讲解）","mybatisplus-batch-insert","\u002Fupload\u002F167211863047181-DEdJ.jpg",{"raw":282,"autoGenerate":93},"本小节中，我们将学习如何通过 Mybatis Plus 实现 MySQL 批量插入数据。先抛出一个问题：假设老板给你下了个任务，向数据库中添加 100 万条数据，并且不能耗时太久...","2026-09-12T08:30:02.543036Z",[87],[],{"permalink":287,"excerpt":282,"lastModifyTime":288,"phase":116},"\u002Farchives\u002Fmybatisplus-batch-insert","2026-09-13T05:25:24.064210Z",[290],{"metadata":291,"spec":292,"status":293,"postCount":96},{"name":87,"creationTimestamp":88},{"displayName":90,"slug":87,"cover":91,"description":92,"priority":27,"hideFromList":93,"preventParentPostCascadeQuery":93},{"permalink":95,"postCount":96,"visiblePostCount":96},{"metadata":295,"spec":298,"status":307,"categories":310},{"name":296,"creationTimestamp":297},"post-mybatis-plus-integrate-0c3e6619","2026-09-12T08:30:01.532093Z",{"title":299,"slug":300,"cover":301,"excerpt":302,"publishTime":304,"categories":305,"tags":306,"priority":27,"pinned":93,"deleted":93,"visible":111,"allowComment":112},"Mybatis-Plus 整合集成","mybatis-plus-integrate","\u002Fupload\u002F164870378749787-sJrg.png",{"raw":303,"autoGenerate":93},"上小节中，我们学习了如何快速入门 Mybatis-Plus，文中以 Spring Boot + Maven 来讲解的，本文将详细的介绍如何在市面主流框架中整合&amp;集成 Mybatis-Plus。","2026-09-12T08:30:01.743646Z",[87],[],{"permalink":308,"excerpt":303,"lastModifyTime":309,"phase":116},"\u002Farchives\u002Fmybatis-plus-integrate","2026-09-16T09:43:57.945654Z",[311],{"metadata":312,"spec":313,"status":314,"postCount":96},{"name":87,"creationTimestamp":88},{"displayName":90,"slug":87,"cover":91,"description":92,"priority":27,"hideFromList":93,"preventParentPostCascadeQuery":93},{"permalink":95,"postCount":96,"visiblePostCount":96},{"metadata":316,"spec":319,"status":328,"categories":331},{"name":317,"creationTimestamp":318},"post-mybaitsplus-wrapper-51f1c68c","2026-09-12T08:30:00.818539Z",{"title":320,"slug":321,"cover":322,"excerpt":323,"publishTime":325,"categories":326,"tags":327,"priority":27,"pinned":93,"deleted":93,"visible":111,"allowComment":112},"Mybatis Plus Wrapper 条件构造器（超详细）","mybaitsplus-wrapper","\u002Fupload\u002F167220794094570-TBuu.jpg",{"raw":324,"autoGenerate":93},"在 Mybatis 中，我们查询或者更新指定数据，可以直接在 xml 文件中写 SQL，然后通过占位符传入条件参数即可，比如你想根据用户 ID 去更新某个用户数据，那么 SQL 条件大致为 where id = #{id}...","2026-09-12T08:30:00.907062Z",[87],[],{"permalink":329,"excerpt":324,"lastModifyTime":330,"phase":116},"\u002Farchives\u002Fmybaitsplus-wrapper","2026-09-13T05:25:26.773490Z",[332],{"metadata":333,"spec":334,"status":335,"postCount":96},{"name":87,"creationTimestamp":88},{"displayName":90,"slug":87,"cover":91,"description":92,"priority":27,"hideFromList":93,"preventParentPostCascadeQuery":93},{"permalink":95,"postCount":96,"visiblePostCount":96},{"metadata":337,"spec":340,"status":348,"categories":351},{"name":338,"creationTimestamp":339},"post-mybaitsplus-update-7910a075","2026-09-12T08:30:00.045046Z",{"title":341,"slug":342,"cover":215,"excerpt":343,"publishTime":345,"categories":346,"tags":347,"priority":27,"pinned":93,"deleted":93,"visible":111,"allowComment":112},"Mybatis Plus 更新数据（图文讲解）","mybaitsplus-update",{"raw":344,"autoGenerate":93},"本小节中，我们将学习如何通过 Mybatis Plus 修改数据库表中的数据。在前面小节中，我们已经定义好了一个用于测试的用户表， 执行脚本如下...","2026-09-12T08:30:00.114111Z",[87],[],{"permalink":349,"excerpt":344,"lastModifyTime":350,"phase":116},"\u002Farchives\u002Fmybaitsplus-update","2026-09-13T05:25:27.532631Z",[352],{"metadata":353,"spec":354,"status":355,"postCount":96},{"name":87,"creationTimestamp":88},{"displayName":90,"slug":87,"cover":91,"description":92,"priority":27,"hideFromList":93,"preventParentPostCascadeQuery":93},{"permalink":95,"postCount":96,"visiblePostCount":96},{"metadata":357,"spec":360,"status":369,"categories":372},{"name":358,"creationTimestamp":359},"post-mybaitsplus-select-data-bd965549","2026-09-12T08:29:59.301200Z",{"title":361,"slug":362,"cover":363,"excerpt":364,"publishTime":366,"categories":367,"tags":368,"priority":27,"pinned":93,"deleted":93,"visible":111,"allowComment":112},"Mybatis Plus 查询数据（图文讲解）","mybaitsplus-select-data","\u002Fupload\u002F167238066532413-dlWV.jpg",{"raw":365,"autoGenerate":93},"本小节中，我们将学习如何通过 Mybatis Plus 查询数据库表中的数据。在前面小节中，我们已经定义好了一个用于测试的用户表， 执行脚本如下...","2026-09-12T08:29:59.380954Z",[87],[],{"permalink":370,"excerpt":365,"lastModifyTime":371,"phase":116},"\u002Farchives\u002Fmybaitsplus-select-data","2026-09-13T05:25:28.466672Z",[373],{"metadata":374,"spec":375,"status":376,"postCount":96},{"name":87,"creationTimestamp":88},{"displayName":90,"slug":87,"cover":91,"description":92,"priority":27,"hideFromList":93,"preventParentPostCascadeQuery":93},{"permalink":95,"postCount":96,"visiblePostCount":96},{"metadata":378,"spec":381,"status":390,"categories":393},{"name":379,"creationTimestamp":380},"post-mybaitsplus-logic-delete-22e24533","2026-09-12T08:29:58.277662Z",{"title":382,"slug":383,"cover":384,"excerpt":385,"publishTime":387,"categories":388,"tags":389,"priority":27,"pinned":93,"deleted":93,"visible":111,"allowComment":112},"Mybatis Plus 逻辑删除（手把手教学）","mybaitsplus-logic-delete","\u002Fupload\u002F167342448565316-QpIC.jpg",{"raw":386,"autoGenerate":93},"本小节中，我们将学习如何通过 Mybatis Plus 实现逻辑删除功能。讲逻辑删除之前，先说说物理删除。当我们想要删除数据库中的数据，都会执行一条 delete 语句，执行成功后...","2026-09-12T08:29:58.346883Z",[87],[],{"permalink":391,"excerpt":386,"lastModifyTime":392,"phase":116},"\u002Farchives\u002Fmybaitsplus-logic-delete","2026-09-13T05:25:29.585172Z",[394],{"metadata":395,"spec":396,"status":397,"postCount":96},{"name":87,"creationTimestamp":88},{"displayName":90,"slug":87,"cover":91,"description":92,"priority":27,"hideFromList":93,"preventParentPostCascadeQuery":93},{"permalink":95,"postCount":96,"visiblePostCount":96},{"metadata":399,"spec":402,"status":411,"categories":414},{"name":400,"creationTimestamp":401},"post-mybaitsplus-join-query-0b894da6","2026-09-12T08:29:57.423004Z",{"title":403,"slug":404,"cover":405,"excerpt":406,"publishTime":408,"categories":409,"tags":410,"priority":27,"pinned":93,"deleted":93,"visible":111,"allowComment":112},"Mybatis Plus 多表联查（包含分页关联查询,图文讲解）","mybaitsplus-join-query","\u002Fupload\u002F167273442141335-DKZI.jpg",{"raw":407,"autoGenerate":93},"本小节中，我们将学习如何通过 Mybatis Plus 实现多表关联查询，以及分页关联查询。本文以查询用户所下订单，来演示 Mybatis Plus 的关联查询，数据库表除了前面小节中已经定义好的用户表...","2026-09-12T08:29:57.518395Z",[87],[],{"permalink":412,"excerpt":407,"lastModifyTime":413,"phase":116},"\u002Farchives\u002Fmybaitsplus-join-query","2026-09-13T05:25:32.424638Z",[415],{"metadata":416,"spec":417,"status":418,"postCount":96},{"name":87,"creationTimestamp":88},{"displayName":90,"slug":87,"cover":91,"description":92,"priority":27,"hideFromList":93,"preventParentPostCascadeQuery":93},{"permalink":95,"postCount":96,"visiblePostCount":96},{"metadata":420,"spec":423,"status":432,"categories":436},{"name":421,"creationTimestamp":422},"post-mybaitsplus-enum-value-745dbc08","2026-09-12T08:29:56.730649Z",{"title":424,"slug":425,"cover":426,"excerpt":427,"publishTime":429,"categories":430,"tags":431,"priority":27,"pinned":93,"deleted":93,"visible":111,"allowComment":112},"Mybatis Plus 通用枚举（图文讲解）","mybaitsplus-enum-value","\u002Fupload\u002F167359425246371-MHdo.jpg",{"raw":428,"autoGenerate":93},"\r\n大家好，本小节中，我们将讲解 Mybatis Plus 通用枚举的用法。那么，什么是通用枚举呢？之前小节中，我们的用户表有个性别字段 gender，在插入数据时，我们的示例代码大致如下...","2026-09-12T08:29:56.787230Z",[87],[],{"permalink":433,"excerpt":434,"lastModifyTime":435,"phase":116},"\u002Farchives\u002Fmybaitsplus-enum-value","本小节中，我们将讲解 Mybatis Plus 通用枚举的用法。那么，什么是通用枚举呢？之前小节中，我们的用户表有个性别字段 gender，在插入数据时，我们的示例代码大致如下...","2026-09-13T05:25:33.487169Z",[437],{"metadata":438,"spec":439,"status":440,"postCount":96},{"name":87,"creationTimestamp":88},{"displayName":90,"slug":87,"cover":91,"description":92,"priority":27,"hideFromList":93,"preventParentPostCascadeQuery":93},{"permalink":95,"postCount":96,"visiblePostCount":96},{"metadata":442,"spec":445,"status":454,"categories":458},{"name":443,"creationTimestamp":444},"post-mybaitsplus-common-annotation-80f197dc","2026-09-12T08:29:56.056296Z",{"title":446,"slug":447,"cover":448,"excerpt":449,"publishTime":451,"categories":452,"tags":453,"priority":27,"pinned":93,"deleted":93,"visible":111,"allowComment":112},"Mybatis Plus 常用注解（超详细）","mybaitsplus-common-annotation","\u002Fupload\u002F167334634342163-ZyfL.jpg",{"raw":450,"autoGenerate":93},"大家好，本文主要带大家来看下 Mybatis Plus 框架中，使用频率非常高的几个注解及其属性值，因为编写此本教程目的是为了大家快速入门并使用 Mybatis Plus，关于注解更高级的用法请参考官网...","2026-09-12T08:29:56.114067Z",[87],[],{"permalink":455,"excerpt":456,"lastModifyTime":457,"phase":116},"\u002Farchives\u002Fmybaitsplus-common-annotation","本文主要带大家来看下 Mybatis Plus 框架中，使用频率非常高的几个注解及其属性值，因为编写此本教程目的是为了大家快速入门并使用 Mybatis Plus，关于注解更高级的用法请参考官网...","2026-09-13T05:25:33.983128Z",[459],{"metadata":460,"spec":461,"status":462,"postCount":96},{"name":87,"creationTimestamp":88},{"displayName":90,"slug":87,"cover":91,"description":92,"priority":27,"hideFromList":93,"preventParentPostCascadeQuery":93},{"permalink":95,"postCount":96,"visiblePostCount":96},{"metadata":464,"spec":467,"status":476,"categories":479},{"name":465,"creationTimestamp":466},"post-mybaitsplus-code-generator-c984d27c","2026-09-12T08:29:55.452199Z",{"title":468,"slug":469,"cover":470,"excerpt":471,"publishTime":473,"categories":474,"tags":475,"priority":27,"pinned":93,"deleted":93,"visible":111,"allowComment":112},"Mybatis Plus 代码生成器（图文讲解）","mybaitsplus-code-generator","\u002Fupload\u002F167387297654896-aKtE.jpg",{"raw":472,"autoGenerate":93},"本小节中，我们将学习如何使用 Mybatis Plus 的代码生成器。可能有效小伙伴会疑惑，这玩意是干嘛使的？通常在实际项目开发中，如果开发一个功能，我们会先进行表设计，技术方案的确定，技术经理评估 OK 以后，才会进行项目开发，而不是一上来就写代码，跟无头苍蝇一样...","2026-09-12T08:29:55.508709Z",[87],[],{"permalink":477,"excerpt":472,"lastModifyTime":478,"phase":116},"\u002Farchives\u002Fmybaitsplus-code-generator","2026-09-13T05:25:35.131214Z",[480],{"metadata":481,"spec":482,"status":483,"postCount":96},{"name":87,"creationTimestamp":88},{"displayName":90,"slug":87,"cover":91,"description":92,"priority":27,"hideFromList":93,"preventParentPostCascadeQuery":93},{"permalink":95,"postCount":96,"visiblePostCount":96},{"metadata":485,"spec":486,"status":490,"categories":491,"content":496},{"name":317,"creationTimestamp":318},{"title":320,"slug":321,"cover":322,"excerpt":487,"publishTime":325,"categories":488,"tags":489,"priority":27,"pinned":93,"deleted":93,"visible":111,"allowComment":112},{"raw":324,"autoGenerate":93},[87],[],{"permalink":329,"excerpt":324,"lastModifyTime":330,"phase":116},[492],{"metadata":493,"spec":494,"status":495,"postCount":96},{"name":87,"creationTimestamp":88},{"displayName":90,"slug":87,"cover":91,"description":92,"priority":27,"hideFromList":93,"preventParentPostCascadeQuery":93},{"permalink":95,"postCount":96,"visiblePostCount":96},{"content":497,"raw":497},"\u003Cp>在 Mybatis 中，我们查询或者更新指定数据，可以直接在 xml 文件中写 SQL，然后通过占位符传入条件参数即可，比如你想根据用户 ID 去更新某个用户数据，那么 SQL 条件大致为 \u003Ccode>where id = #{id}\u003C\u002Fcode>。\u003C\u002Fp>\n\u003Cp>而在 Mybatis Plus 中，我们都知道 Mybatis Plus 大部分情况下无需像 Mybatis 那样编写繁琐的 xml 文件，仅需简单的几行代码即可完成数据库操作。那么，条件要怎么设定呢？\u003C\u002Fp>\n\u003Cp>轮到今天的主角出场了！在 Mybatis Plus 中，\u003Cstrong>利用条件构造器 \u003Ccode>Wrapper\u003C\u002Fcode> 可以帮助我们组装各种 \u003Ccode>where\u003C\u002Fcode> 条件\u003C\u002Fstrong>，具体实现类如 \u003Ccode>QueryWrapper\u003C\u002Fcode>、 \u003Ccode>UpdateWrapper\u003C\u002Fcode> 等，\u003Cstrong>在查询、更新、删除操作中会被频繁用到。\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Ch2>Wrapper 继承关系\u003C\u002Fh2>\n\u003Cp>Wrapper 是个抽象类，先看下它的继承关系图：\u003C\u002Fp>\n\u003Cp>\n\u003Cimg src=\"\u002Fupload\u002F167220794094570-TBuu.jpg\" loading=\"lazy\" title=\"Mybatis Plus Wrapper 继承关系\" alt=\"Mybatis Plus Wrapper 继承关系\">\u003Cspan class=\"image-caption\">Mybatis Plus Wrapper 继承关系\u003C\u002Fspan>\n\u003C\u002Fp>\n\u003Cp>解释一下各个子类的作用：\u003C\u002Fp>\n\u003Cpre>\u003Ccode>Wrapper  条件构造抽象类\n    -- AbstractWrapper 查询条件封装，用于生成 sql 中的 where 语句。\n        -- QueryWrapper Entity 条件封装操作类，用于查询。\n        -- UpdateWrapper Update 条件封装操作类，用于更新。\n        -- AbstractLambdaWrapper 使用 Lambda 表达式封装 wrapper\n            -- LambdaQueryWrapper 使用 Lambda 语法封装条件，用于查询。\n            -- LambdaUpdateWrapper 使用 Lambda 语法封装条件，用于更新。\n    -- AbstractChainWrapper 链式查询条件封装 \n    \t-- UpdateChainWrapper 链式条件封装操作类，用于更新。\n    \t-- LambdaQueryChainWrapper 使用 Lambda 语法封装条件，支持链式调用，用于查询\n    \t-- LambdaUpdateChainWrapper 使用 Lambda 语法封装条件，支持链式调用，用于更新\n    \t-- QueryChainWrapper 链式条件封装操作类，用于查询。\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cblockquote>\n\u003Cp>TIP : Kt 开头的类是使用 Kotlin 语言编写，咱是 Java，不用管。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch2>AbstractWrapper\u003C\u002Fh2>\n\u003Cp>QueryWrapper (LambdaQueryWrapper) 和 UpdateWrapper (LambdaUpdateWrapper) 的父类\n用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件\u003C\u002Fp>\n\u003Ch3>\u003Ccode>allEq\u003C\u002Fcode>  ：多字段等于查询\u003C\u002Fh3>\n\u003Cp>全部自动等于判断，或者个别自动非空判断：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-java\">\u002F\u002F params : key 为数据库字段名, value 为字段值\nallEq(Map&lt;R, V&gt; params)\n\u002F\u002F null2IsNull : 为 true 则在 map 的 value 为 null 时调用 isNull 方法,为 false 时则忽略 value 为null的\nallEq(Map&lt;R, V&gt; params, boolean null2IsNull)\nallEq(boolean condition, Map&lt;R, V&gt; params, boolean null2IsNull)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>代码示例1: \u003Ccode>allEq({id:1,name:&quot;老王&quot;,age:null})\u003C\u002Fcode> 相当于条件 \u003Ccode>id = 1 and name = '老王' and age is null\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003Cli>代码示例2: \u003Ccode>allEq({id:1,name:&quot;老王&quot;,age:null}, false)\u003C\u002Fcode>相当于条件\u003Ccode>id = 1 and name = '老王'\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cpre>\u003Ccode class=\"language-java\">\u002F\u002F filter : 过滤函数,是否允许字段传入比对条件中\nallEq(BiPredicate&lt;R, V&gt; filter, Map&lt;R, V&gt; params)\n\u002F\u002F 同上\nallEq(BiPredicate&lt;R, V&gt; filter, Map&lt;R, V&gt; params, boolean null2IsNull)\nallEq(boolean condition, BiPredicate&lt;R, V&gt; filter, Map&lt;R, V&gt; params, boolean null2IsNull) \n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>代码示例1: \u003Ccode>allEq((k,v) -&gt; k.contains(&quot;a&quot;), {id:1,name:&quot;老王&quot;,age:null})\u003C\u002Fcode>相当于条件\u003Ccode>name = '老王' and age is null\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003Cli>代码示例2: \u003Ccode>allEq((k,v) -&gt; k.contains(&quot;a&quot;), {id:1,name:&quot;老王&quot;,age:null}, false)\u003C\u002Fcode>相当于条件\u003Ccode>name = '老王'\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>eq\u003C\u002Fcode> ：单字段等于\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-java\">eq(R column, Object val)\neq(boolean condition, R column, Object val)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>代码示例: \u003Ccode>eq(&quot;name&quot;, &quot;老王&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>name = '老王'\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>ne\u003C\u002Fcode> ：不等于\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-java\">ne(R column, Object val)\nne(boolean condition, R column, Object val)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>代码示例：\u003Ccode>ne(&quot;name&quot;, &quot;老王&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>name &lt;&gt; '老王'\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>gt\u003C\u002Fcode> ： 大于\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-java\">gt(R column, Object val)\ngt(boolean condition, R column, Object val)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>代码示例： \u003Ccode>ge(&quot;age&quot;, 18)\u003C\u002Fcode>相当于条件\u003Ccode>age &gt;= 18\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>ge\u003C\u002Fcode>：大于等于\u003C\u002Fh3>\n\u003Cpre>\u003Ccode>ge(R column, Object val)\nge(boolean condition, R column, Object val)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>例: \u003Ccode>ge(&quot;age&quot;, 18)\u003C\u002Fcode>相当于条件\u003Ccode>age &gt;= 18\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>lt\u003C\u002Fcode>：小于\u003C\u002Fh3>\n\u003Cpre>\u003Ccode>lt(R column, Object val)\nlt(boolean condition, R column, Object val)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>例: \u003Ccode>lt(&quot;age&quot;, 18)\u003C\u002Fcode>相当于条件\u003Ccode>age &lt; 18\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>le\u003C\u002Fcode> : 小于等于\u003C\u002Fh3>\n\u003Cpre>\u003Ccode>le(R column, Object val)\nle(boolean condition, R column, Object val)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>例: \u003Ccode>le(&quot;age&quot;, 18)\u003C\u002Fcode>相当于条件\u003Ccode>age &lt;= 18\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>between\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-java\">between(R column, Object val1, Object val2)\nbetween(boolean condition, R column, Object val1, Object val2)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>作用：BETWEEN 值1 AND 值2\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>between(&quot;age&quot;, 18, 30)\u003C\u002Fcode>相当于条件\u003Ccode>age between 18 and 30\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>notBetween\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cpre>\u003Ccode>notBetween(R column, Object val1, Object val2)\nnotBetween(boolean condition, R column, Object val1, Object val2)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>作用：NOT BETWEEN 值1 AND 值2\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>notBetween(&quot;age&quot;, 18, 30)\u003C\u002Fcode>相当于条件\u003Ccode>age not between 18 and 30\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>like\u003C\u002Fcode> : 模糊查询\u003C\u002Fh3>\n\u003Cpre>\u003Ccode>like(R column, Object val)\nlike(boolean condition, R column, Object val)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>作用：LIKE '%值%'\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>like(&quot;name&quot;, &quot;王&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>name like '%王%'\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>notLike\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-java\">notLike(R column, Object val)\nnotLike(boolean condition, R column, Object val)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>作用：NOT LIKE '%值%'\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>notLike(&quot;name&quot;, &quot;王&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>name not like '%王%'\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>likeLeft\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-java\">likeLeft(R column, Object val)\nlikeLeft(boolean condition, R column, Object val)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>作用：LIKE '%值'\u003C\u002Fp>\n\u003Cp>例: \u003Ccode>likeLeft(&quot;name&quot;, &quot;王&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>name like '%王\u003C\u002Fcode>， 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fp>\n\u003Ch3>\u003Ccode>likeRight\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-java\">likeRight(R column, Object val)\nlikeRight(boolean condition, R column, Object val)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>作用： LIKE '值%'\u003C\u002Fp>\n\u003Cp>例: \u003Ccode>likeRight(&quot;name&quot;, &quot;王&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>name like '王%\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fp>\n\u003Ch3>\u003Ccode>isNull\u003C\u002Fcode> ：为空\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-java\">isNull(R column)\nisNull(boolean condition, R column)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>作用：字段 IS NULL\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>isNull(&quot;name&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>name is null\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>isNotNull\u003C\u002Fcode> ： 非空\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-java\">isNotNull(R column)\nisNotNull(boolean condition, R column)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>作用： 字段 IS NOT NULL\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>isNotNull(&quot;name&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>name is not null\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>in\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cpre>\u003Ccode>in(R column, Collection&lt;?&gt; value)\nin(boolean condition, R column, Collection&lt;?&gt; value)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>说明：字段 IN (value.get(0), value.get(1), ...)\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>in(&quot;age&quot;,{1,2,3})\u003C\u002Fcode>相当于条件\u003Ccode>age in (1,2,3)\u003C\u002Fcode>，具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cpre>\u003Ccode class=\"language-java\">in(R column, Object... values)\nin(boolean condition, R column, Object... values)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>说明：字段 IN (v0, v1, ...)\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>in(&quot;age&quot;, 1, 2, 3)  \u003C\u002Fcode> 相当于条件\u003Ccode>age in (1,2,3)\u003C\u002Fcode>，具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>notIn\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-java\">notIn(R column, Collection&lt;?&gt; value)\nnotIn(boolean condition, R column, Collection&lt;?&gt; value)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>作用：NOT IN (value.get(0), value.get(1), ...)\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>notIn(&quot;age&quot;,{1,2,3})\u003C\u002Fcode>相当于条件\u003Ccode>age not in (1,2,3)\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>inSql\u003C\u002Fcode> ：子查询\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-java\">inSql(R column, String inValue)\ninSql(boolean condition, R column, String inValue)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>作用：字段 IN ( sql语句 )\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>inSql(&quot;age&quot;, &quot;1,2,3,4,5,6&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>age in (1,2,3,4,5,6)\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003Cli>例: \u003Ccode>inSql(&quot;id&quot;, &quot;select id from table where id &lt; 3&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>id in (select id from table where id &lt; 3)\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>;\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>notInSql\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-java\">notInSql(R column, String inValue)\nnotInSql(boolean condition, R column, String inValue)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>作用：NOT IN ( sql语句 )\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>notInSql(&quot;age&quot;, &quot;1,2,3,4,5,6&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>age not in (1,2,3,4,5,6)\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003Cli>例: \u003Ccode>notInSql(&quot;id&quot;, &quot;select id from table where id &lt; 3&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>id not in (select id from table where id &lt; 3)\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>groupBy\u003C\u002Fcode>：分组\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-java\">groupBy(R... columns)\ngroupBy(boolean condition, R... columns)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>说明：分组 GROUP BY 字段。\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>groupBy(&quot;id&quot;, &quot;name&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>group by id,name\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>orderByAsc\u003C\u002Fcode>：升序\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-java\">orderByAsc(R... columns)\norderByAsc(boolean condition, R... columns)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>说明：升序排序：ORDER BY 字段, ... ASC\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>orderByAsc(&quot;id&quot;, &quot;name&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>order by id ASC,name ASC\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>orderByDesc\u003C\u002Fcode>：降序\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-java\">orderByDesc(R... columns)\norderByDesc(boolean condition, R... columns)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>说明：降序排序：ORDER BY 字段, ... DESC\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>orderByDesc(&quot;id&quot;, &quot;name&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>order by id DESC,name DESC\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>orderBy\u003C\u002Fcode> ： 排序\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-java\">orderBy(boolean condition, boolean isAsc, R... columns)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>说明：排序：ORDER BY 字段, ...\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>orderBy(true, true, &quot;id&quot;, &quot;name&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>order by id ASC,name ASC\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>having\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cp>作用：HAVING ( sql语句 )\u003C\u002Fp>\n\u003Cpre>\u003Ccode>having(String sqlHaving, Object... params)\nhaving(boolean condition, String sqlHaving, Object... params)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>例: \u003Ccode>having(&quot;sum(age) &gt; 10&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>having sum(age) &gt; 10\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>例: \u003Ccode>having(&quot;sum(age) &gt; {0}&quot;, 11)\u003C\u002Fcode>相当于条件\u003Ccode>having sum(age) &gt; 11\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>func\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cp>作用：func 方法主要方便在出现if...else下调用不同方法能不断链\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-java\">func(Consumer&lt;Children&gt; consumer)\nfunc(boolean condition, Consumer&lt;Children&gt; consumer)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>例: \u003Ccode>func(i -&gt; if(true) {i.eq(&quot;id&quot;, 1)} else {i.ne(&quot;id&quot;, 1)})\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>or\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Ch4>拼接 or :\u003C\u002Fh4>\n\u003Cpre>\u003Ccode class=\"language-java\">or()\nor(boolean condition)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>例: \u003Ccode>eq(&quot;id&quot;,1).or().eq(&quot;name&quot;,&quot;老王&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>id = 1 or name = '老王'\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>or 嵌套：\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>例: \u003Ccode>or(i -&gt; i.eq(&quot;name&quot;, &quot;李白&quot;).ne(&quot;status&quot;, &quot;活着&quot;))\u003C\u002Fcode>相当于条件\u003Ccode>or (name = '李白' and status &lt;&gt; '活着')\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>and\u003C\u002Fcode> 嵌套\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-java\">and(Consumer&lt;Param&gt; consumer)\nand(boolean condition, Consumer&lt;Param&gt; consumer)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>作用：AND 嵌套\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>and(i -&gt; i.eq(&quot;name&quot;, &quot;李白&quot;).ne(&quot;status&quot;, &quot;活着&quot;))\u003C\u002Fcode>相当于条件\u003Ccode>and (name = '李白' and status &lt;&gt; '活着')\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>nested\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cp>作用：正常嵌套 不带 AND 或者 OR\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-java\">nested(Consumer&lt;Param&gt; consumer)\nnested(boolean condition, Consumer&lt;Param&gt; consumer)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>例: \u003Ccode>nested(i -&gt; i.eq(&quot;name&quot;, &quot;李白&quot;).ne(&quot;status&quot;, &quot;活着&quot;))\u003C\u002Fcode>相当于条件\u003Ccode>(name = '李白' and status &lt;&gt; '活着')\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>apply\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cp>作用：拼接 sql\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>注意：该方法可用于数据库\u003Cstrong>函数\u003C\u002Fstrong> 动态入参的\u003Ccode>params\u003C\u002Fcode>对应前面\u003Ccode>applySql\u003C\u002Fcode>内部的\u003Ccode>{index}\u003C\u002Fcode>部分.这样是不会有sql注入风险的,反之会有!\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cpre>\u003Ccode>apply(String applySql, Object... params)\napply(boolean condition, String applySql, Object... params)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>例: \u003Ccode>apply(&quot;id = 1&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>id = 1\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>例: \u003Ccode>apply(&quot;date_format(dateColumn,'%Y-%m-%d') = '2008-08-08'&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>date_format(dateColumn,'%Y-%m-%d') = '2008-08-08'&quot;)\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>例: \u003Ccode>apply(&quot;date_format(dateColumn,'%Y-%m-%d') = {0}&quot;, &quot;2008-08-08&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>date_format(dateColumn,'%Y-%m-%d') = '2008-08-08'&quot;)\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>last\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cp>作用：无视优化规则直接拼接到 sql 的最后。\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>注意：只能调用一次,多次调用以最后一次为准 有sql注入的风险,请谨慎使用。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cpre>\u003Ccode class=\"language-java\">last(String lastSql)\nlast(boolean condition, String lastSql)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>例: \u003Ccode>last(&quot;limit 1&quot;)\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>exists\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-java\">exists(String existsSql)\nexists(boolean condition, String existsSql)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>作用：拼接 EXISTS ( sql语句 )\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>exists(&quot;select id from table where age = 1&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>exists (select id from table where age = 1)\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>notExists\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-java\">notExists(String notExistsSql)\nnotExists(boolean condition, String notExistsSql)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>作用：拼接 NOT EXISTS ( sql语句 )\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>notExists(&quot;select id from table where age = 1&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>not exists (select id from table where age = 1)\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>QueryWrapper\u003C\u002Fh3>\n\u003Cp>QueryWrapper 继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件。LambdaQueryWrapper 支持以 lambda 形式组装条件, 可以通过 new QueryWrapper().lambda() 方法获取实例。\u003C\u002Fp>\n\u003Ch3>\u003Ccode>select\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cp>作用：设置查询字段\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-java\">select(String... sqlSelect)\nselect(Predicate&lt;TableFieldInfo&gt; predicate)\nselect(Class&lt;T&gt; entityClass, Predicate&lt;TableFieldInfo&gt; predicate)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cblockquote>\n\u003Cp>TIP :\u003C\u002Fp>\n\u003Cp>以上方法分为两类.\n第二类方法为:过滤查询字段(主键除外),入参不包含 class 的调用前需要\u003Ccode>wrapper\u003C\u002Fcode>内的\u003Ccode>entity\u003C\u002Fcode>属性有值! 这两类方法重复调用以最后一次为准\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cul>\n\u003Cli>例: \u003Ccode>select(&quot;id&quot;, &quot;name&quot;, &quot;age&quot;)\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>例: \u003Ccode>select(i -&gt; i.getProperty().startsWith(&quot;test&quot;))\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>UpdateWrapper\u003C\u002Fh2>\n\u003Cp>UpdateWrapper 继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件。LambdaUpdateWrapper 支持以 lambda 形式组装条件, 可以通过 new QueryWrapper().lambda() 方法获取实例。\u003C\u002Fp>\n\u003Ch3>\u003Ccode>set\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cp>作用：SET 字段\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-java\">set(String column, Object val)\nset(boolean condition, String column, Object val)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>例: \u003Ccode>set(&quot;name&quot;, &quot;老李头&quot;)\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>例: \u003Ccode>set(&quot;name&quot;, &quot;&quot;)\u003C\u002Fcode>---&gt;数据库字段值变为\u003Cstrong>空字符串\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>例: \u003Ccode>set(&quot;name&quot;, null)\u003C\u002Fcode>---&gt;数据库字段值变为\u003Ccode>null\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>setSql\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cp>作用：设置 SET 部分 SQL\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-java\">setSql(String sql)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>例: \u003Ccode>setSql(&quot;name = '老李头'&quot;)\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>\u003Ccode>lambda\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cp>作用：用于获取 \u003Ccode>LambdaWrapper\u003C\u002Fcode>。\u003C\u002Fp>\n\u003Cul>\n\u003Cli>在\u003Ccode>QueryWrapper\u003C\u002Fcode>中是获取\u003Ccode>LambdaQueryWrapper\u003C\u002Fcode>；\u003C\u002Fli>\n\u003Cli>在\u003Ccode>UpdateWrapper\u003C\u002Fcode>中是获取\u003Ccode>LambdaUpdateWrapper\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n15:T131fd,\u003Ch2 id=\"toc-0\">什么是条件构造器?\u003C\u002Fh2>\n\u003Cp>在 Mybatis 中，我们查询或者更新指定数据，可以直接在 xml 文件中写 SQL，然后通过占位符传入条件参数即可，比如你想根据用户 ID 去更新某个用户数据，那么 SQL 条件大致为 \u003Ccode>where id = #{id}\u003C\u002Fcode>。\u003C\u002Fp>\n\u003Cp>而在 Mybatis Plus 中，我们都知道 Mybatis Plus 大部分情况下无需像 Mybatis 那样编写繁琐的 xml 文件，仅需简单的几行代码即可完成数据库操作。那么，条件要怎么设定呢？\u003C\u002Fp>\n\u003Cp>轮到今天的主角出场了！在 Mybatis Plus 中，\u003Cstrong>利用条件构造器 \u003Ccode>Wrapper\u003C\u002Fcode> 可以帮助我们组装各种 \u003Ccode>where\u003C\u002Fcode> 条件\u003C\u002Fstrong>，具体实现类如 \u003Ccode>QueryWrapper\u003C\u002Fcode>、 \u003Ccode>UpdateWrapper\u003C\u002Fcode> 等，\u003Cstrong>在查询、更新、删除操作中会被频繁用到。\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Ch2 id=\"toc-1\">Wrapper 继承关系\u003C\u002Fh2>\n\u003Cp>Wrapper 是个抽象类，先看下它的继承关系图：\u003C\u002Fp>\n\u003Cp>\n\u003Cdiv class=\"img-loading\">\u003Cimg src=\"\u002Fupload\u002F167220794094570-TBuu.jpg\" loading=\"lazy\" title=\"Mybatis Plus Wrapper 继承关系\" alt=\"Mybatis Plus Wrapper 继承关系\">\u003C\u002Fdiv>\u003Cspan class=\"image-caption\">Mybatis Plus Wrapper 继承关系\u003C\u002Fspan>\n\u003C\u002Fp>\n\u003Cp>解释一下各个子类的作用：\u003C\u002Fp>\n\u003Cdiv class=\"language-sql\" data-ext=\"sql\" data-code=\"Wrapper%20%20%E6%9D%A1%E4%BB%B6%E6%9E%84%E9%80%A0%E6%8A%BD%E8%B1%A1%E7%B1%BB%0A%20%20%20%20--%20AbstractWrapper%20%E6%9F%A5%E8%AF%A2%E6%9D%A1%E4%BB%B6%E5%B0%81%E8%A3%85%EF%BC%8C%E7%94%A8%E4%BA%8E%E7%94%9F%E6%88%90%20sql%20%E4%B8%AD%E7%9A%84%20where%20%E8%AF%AD%E5%8F%A5%E3%80%82%0A%20%20%20%20%20%20%20%20--%20QueryWrapper%20Entity%20%E6%9D%A1%E4%BB%B6%E5%B0%81%E8%A3%85%E6%93%8D%E4%BD%9C%E7%B1%BB%EF%BC%8C%E7%94%A8%E4%BA%8E%E6%9F%A5%E8%AF%A2%E3%80%82%0A%20%20%20%20%20%20%20%20--%20UpdateWrapper%20Update%20%E6%9D%A1%E4%BB%B6%E5%B0%81%E8%A3%85%E6%93%8D%E4%BD%9C%E7%B1%BB%EF%BC%8C%E7%94%A8%E4%BA%8E%E6%9B%B4%E6%96%B0%E3%80%82%0A%20%20%20%20%20%20%20%20--%20AbstractLambdaWrapper%20%E4%BD%BF%E7%94%A8%20Lambda%20%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%B0%81%E8%A3%85%20wrapper%0A%20%20%20%20%20%20%20%20%20%20%20%20--%20LambdaQueryWrapper%20%E4%BD%BF%E7%94%A8%20Lambda%20%E8%AF%AD%E6%B3%95%E5%B0%81%E8%A3%85%E6%9D%A1%E4%BB%B6%EF%BC%8C%E7%94%A8%E4%BA%8E%E6%9F%A5%E8%AF%A2%E3%80%82%0A%20%20%20%20%20%20%20%20%20%20%20%20--%20LambdaUpdateWrapper%20%E4%BD%BF%E7%94%A8%20Lambda%20%E8%AF%AD%E6%B3%95%E5%B0%81%E8%A3%85%E6%9D%A1%E4%BB%B6%EF%BC%8C%E7%94%A8%E4%BA%8E%E6%9B%B4%E6%96%B0%E3%80%82%0A%20%20%20%20--%20AbstractChainWrapper%20%E9%93%BE%E5%BC%8F%E6%9F%A5%E8%AF%A2%E6%9D%A1%E4%BB%B6%E5%B0%81%E8%A3%85%20%0A%20%20%20%20%09--%20UpdateChainWrapper%20%E9%93%BE%E5%BC%8F%E6%9D%A1%E4%BB%B6%E5%B0%81%E8%A3%85%E6%93%8D%E4%BD%9C%E7%B1%BB%EF%BC%8C%E7%94%A8%E4%BA%8E%E6%9B%B4%E6%96%B0%E3%80%82%0A%20%20%20%20%09--%20LambdaQueryChainWrapper%20%E4%BD%BF%E7%94%A8%20Lambda%20%E8%AF%AD%E6%B3%95%E5%B0%81%E8%A3%85%E6%9D%A1%E4%BB%B6%EF%BC%8C%E6%94%AF%E6%8C%81%E9%93%BE%E5%BC%8F%E8%B0%83%E7%94%A8%EF%BC%8C%E7%94%A8%E4%BA%8E%E6%9F%A5%E8%AF%A2%0A%20%20%20%20%09--%20LambdaUpdateChainWrapper%20%E4%BD%BF%E7%94%A8%20Lambda%20%E8%AF%AD%E6%B3%95%E5%B0%81%E8%A3%85%E6%9D%A1%E4%BB%B6%EF%BC%8C%E6%94%AF%E6%8C%81%E9%93%BE%E5%BC%8F%E8%B0%83%E7%94%A8%EF%BC%8C%E7%94%A8%E4%BA%8E%E6%9B%B4%E6%96%B0%0A%20%20%20%20%09--%20QueryChainWrapper%20%E9%93%BE%E5%BC%8F%E6%9D%A1%E4%BB%B6%E5%B0%81%E8%A3%85%E6%93%8D%E4%BD%9C%E7%B1%BB%EF%BC%8C%E7%94%A8%E4%BA%8E%E6%9F%A5%E8%AF%A2%E3%80%82%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-sql\">Wrapper  条件构造抽象类\n    \u003Cspan class=\"token comment\">-- AbstractWrapper 查询条件封装，用于生成 sql 中的 where 语句。\u003C\u002Fspan>\n        \u003Cspan class=\"token comment\">-- QueryWrapper Entity 条件封装操作类，用于查询。\u003C\u002Fspan>\n        \u003Cspan class=\"token comment\">-- UpdateWrapper Update 条件封装操作类，用于更新。\u003C\u002Fspan>\n        \u003Cspan class=\"token comment\">-- AbstractLambdaWrapper 使用 Lambda 表达式封装 wrapper\u003C\u002Fspan>\n            \u003Cspan class=\"token comment\">-- LambdaQueryWrapper 使用 Lambda 语法封装条件，用于查询。\u003C\u002Fspan>\n            \u003Cspan class=\"token comment\">-- LambdaUpdateWrapper 使用 Lambda 语法封装条件，用于更新。\u003C\u002Fspan>\n    \u003Cspan class=\"token comment\">-- AbstractChainWrapper 链式查询条件封装 \u003C\u002Fspan>\n    \t\u003Cspan class=\"token comment\">-- UpdateChainWrapper 链式条件封装操作类，用于更新。\u003C\u002Fspan>\n    \t\u003Cspan class=\"token comment\">-- LambdaQueryChainWrapper 使用 Lambda 语法封装条件，支持链式调用，用于查询\u003C\u002Fspan>\n    \t\u003Cspan class=\"token comment\">-- LambdaUpdateChainWrapper 使用 Lambda 语法封装条件，支持链式调用，用于更新\u003C\u002Fspan>\n    \t\u003Cspan class=\"token comment\">-- QueryChainWrapper 链式条件封装操作类，用于查询。\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cblockquote>\n\u003Cp>TIP : Kt 开头的类是使用 Kotlin 语言编写，咱是 Java，不用管。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch2 id=\"toc-2\">AbstractWrapper\u003C\u002Fh2>\n\u003Cp>QueryWrapper (LambdaQueryWrapper) 和 UpdateWrapper (LambdaUpdateWrapper) 的父类\n用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件\u003C\u002Fp>\n\u003Ch3 id=\"toc-3\">\u003Ccode>allEq\u003C\u002Fcode>  ：多字段等于查询\u003C\u002Fh3>\n\u003Cp>全部自动等于判断，或者个别自动非空判断：\u003C\u002Fp>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"%2F%2F%20params%20%3A%20key%20%E4%B8%BA%E6%95%B0%E6%8D%AE%E5%BA%93%E5%AD%97%E6%AE%B5%E5%90%8D%2C%20value%20%E4%B8%BA%E5%AD%97%E6%AE%B5%E5%80%BC%0AallEq(Map%3CR%2C%20V%3E%20params)%0A%2F%2F%20null2IsNull%20%3A%20%E4%B8%BA%20true%20%E5%88%99%E5%9C%A8%20map%20%E7%9A%84%20value%20%E4%B8%BA%20null%20%E6%97%B6%E8%B0%83%E7%94%A8%20isNull%20%E6%96%B9%E6%B3%95%2C%E4%B8%BA%20false%20%E6%97%B6%E5%88%99%E5%BF%BD%E7%95%A5%20value%20%E4%B8%BAnull%E7%9A%84%0AallEq(Map%3CR%2C%20V%3E%20params%2C%20boolean%20null2IsNull)%0AallEq(boolean%20condition%2C%20Map%3CR%2C%20V%3E%20params%2C%20boolean%20null2IsNull)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token comment\">\u002F\u002F params : key 为数据库字段名, value 为字段值\u003C\u002Fspan>\n\u003Cspan class=\"token function\">allEq\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">Map\u003C\u002Fspan>\u003Cspan class=\"token generics\">\u003Cspan class=\"token punctuation\">&lt;\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">V\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">>\u003C\u002Fspan>\u003C\u002Fspan> params\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token comment\">\u002F\u002F null2IsNull : 为 true 则在 map 的 value 为 null 时调用 isNull 方法,为 false 时则忽略 value 为null的\u003C\u002Fspan>\n\u003Cspan class=\"token function\">allEq\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">Map\u003C\u002Fspan>\u003Cspan class=\"token generics\">\u003Cspan class=\"token punctuation\">&lt;\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">V\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">>\u003C\u002Fspan>\u003C\u002Fspan> params\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> null2IsNull\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">allEq\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Map\u003C\u002Fspan>\u003Cspan class=\"token generics\">\u003Cspan class=\"token punctuation\">&lt;\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">V\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">>\u003C\u002Fspan>\u003C\u002Fspan> params\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> null2IsNull\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cul>\n\u003Cli>代码示例1: \u003Ccode>allEq({id:1,name:&quot;老王&quot;,age:null})\u003C\u002Fcode> 相当于条件 \u003Ccode>id = 1 and name = '老王' and age is null\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003Cli>代码示例2: \u003Ccode>allEq({id:1,name:&quot;老王&quot;,age:null}, false)\u003C\u002Fcode>相当于条件\u003Ccode>id = 1 and name = '老王'\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"%2F%2F%20filter%20%3A%20%E8%BF%87%E6%BB%A4%E5%87%BD%E6%95%B0%2C%E6%98%AF%E5%90%A6%E5%85%81%E8%AE%B8%E5%AD%97%E6%AE%B5%E4%BC%A0%E5%85%A5%E6%AF%94%E5%AF%B9%E6%9D%A1%E4%BB%B6%E4%B8%AD%0AallEq(BiPredicate%3CR%2C%20V%3E%20filter%2C%20Map%3CR%2C%20V%3E%20params)%0A%2F%2F%20%E5%90%8C%E4%B8%8A%0AallEq(BiPredicate%3CR%2C%20V%3E%20filter%2C%20Map%3CR%2C%20V%3E%20params%2C%20boolean%20null2IsNull)%0AallEq(boolean%20condition%2C%20BiPredicate%3CR%2C%20V%3E%20filter%2C%20Map%3CR%2C%20V%3E%20params%2C%20boolean%20null2IsNull)%20%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token comment\">\u002F\u002F filter : 过滤函数,是否允许字段传入比对条件中\u003C\u002Fspan>\n\u003Cspan class=\"token function\">allEq\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">BiPredicate\u003C\u002Fspan>\u003Cspan class=\"token generics\">\u003Cspan class=\"token punctuation\">&lt;\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">V\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">>\u003C\u002Fspan>\u003C\u002Fspan> filter\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Map\u003C\u002Fspan>\u003Cspan class=\"token generics\">\u003Cspan class=\"token punctuation\">&lt;\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">V\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">>\u003C\u002Fspan>\u003C\u002Fspan> params\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token comment\">\u002F\u002F 同上\u003C\u002Fspan>\n\u003Cspan class=\"token function\">allEq\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">BiPredicate\u003C\u002Fspan>\u003Cspan class=\"token generics\">\u003Cspan class=\"token punctuation\">&lt;\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">V\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">>\u003C\u002Fspan>\u003C\u002Fspan> filter\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Map\u003C\u002Fspan>\u003Cspan class=\"token generics\">\u003Cspan class=\"token punctuation\">&lt;\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">V\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">>\u003C\u002Fspan>\u003C\u002Fspan> params\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> null2IsNull\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">allEq\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">BiPredicate\u003C\u002Fspan>\u003Cspan class=\"token generics\">\u003Cspan class=\"token punctuation\">&lt;\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">V\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">>\u003C\u002Fspan>\u003C\u002Fspan> filter\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Map\u003C\u002Fspan>\u003Cspan class=\"token generics\">\u003Cspan class=\"token punctuation\">&lt;\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">V\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">>\u003C\u002Fspan>\u003C\u002Fspan> params\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> null2IsNull\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan> \n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cul>\n\u003Cli>代码示例1: \u003Ccode>allEq((k,v) -&gt; k.contains(&quot;a&quot;), {id:1,name:&quot;老王&quot;,age:null})\u003C\u002Fcode>相当于条件\u003Ccode>name = '老王' and age is null\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003Cli>代码示例2: \u003Ccode>allEq((k,v) -&gt; k.contains(&quot;a&quot;), {id:1,name:&quot;老王&quot;,age:null}, false)\u003C\u002Fcode>相当于条件\u003Ccode>name = '老王'\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-4\">\u003Ccode>eq\u003C\u002Fcode> ：单字段等于\u003C\u002Fh3>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"eq(R%20column%2C%20Object%20val)%0Aeq(boolean%20condition%2C%20R%20column%2C%20Object%20val)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">eq\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Object\u003C\u002Fspan> val\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">eq\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Object\u003C\u002Fspan> val\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cul>\n\u003Cli>代码示例: \u003Ccode>eq(&quot;name&quot;, &quot;老王&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>name = '老王'\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-5\">\u003Ccode>ne\u003C\u002Fcode> ：不等于\u003C\u002Fh3>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"ne(R%20column%2C%20Object%20val)%0Ane(boolean%20condition%2C%20R%20column%2C%20Object%20val)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">ne\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Object\u003C\u002Fspan> val\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">ne\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Object\u003C\u002Fspan> val\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cul>\n\u003Cli>代码示例：\u003Ccode>ne(&quot;name&quot;, &quot;老王&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>name &lt;&gt; '老王'\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-6\">\u003Ccode>gt\u003C\u002Fcode> ： 大于\u003C\u002Fh3>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"gt(R%20column%2C%20Object%20val)%0Agt(boolean%20condition%2C%20R%20column%2C%20Object%20val)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">gt\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Object\u003C\u002Fspan> val\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">gt\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Object\u003C\u002Fspan> val\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cul>\n\u003Cli>代码示例： \u003Ccode>ge(&quot;age&quot;, 18)\u003C\u002Fcode>相当于条件\u003Ccode>age &gt;= 18\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-7\">\u003Ccode>ge\u003C\u002Fcode>：大于等于\u003C\u002Fh3>\n\u003Cdiv class=\"language-sql\" data-ext=\"sql\" data-code=\"ge(R%20column%2C%20Object%20val)%0Age(boolean%20condition%2C%20R%20column%2C%20Object%20val)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-sql\">ge\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>R \u003Cspan class=\"token keyword\">column\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> Object val\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\nge\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> R \u003Cspan class=\"token keyword\">column\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> Object val\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cul>\n\u003Cli>例: \u003Ccode>ge(&quot;age&quot;, 18)\u003C\u002Fcode>相当于条件\u003Ccode>age &gt;= 18\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-8\">\u003Ccode>lt\u003C\u002Fcode>：小于\u003C\u002Fh3>\n\u003Cdiv class=\"language-sql\" data-ext=\"sql\" data-code=\"lt(R%20column%2C%20Object%20val)%0Alt(boolean%20condition%2C%20R%20column%2C%20Object%20val)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-sql\">lt\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>R \u003Cspan class=\"token keyword\">column\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> Object val\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\nlt\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> R \u003Cspan class=\"token keyword\">column\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> Object val\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cul>\n\u003Cli>例: \u003Ccode>lt(&quot;age&quot;, 18)\u003C\u002Fcode>相当于条件\u003Ccode>age &lt; 18\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-9\">\u003Ccode>le\u003C\u002Fcode> : 小于等于\u003C\u002Fh3>\n\u003Cdiv class=\"language-sql\" data-ext=\"sql\" data-code=\"le(R%20column%2C%20Object%20val)%0Ale(boolean%20condition%2C%20R%20column%2C%20Object%20val)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-sql\">le\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>R \u003Cspan class=\"token keyword\">column\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> Object val\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\nle\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> R \u003Cspan class=\"token keyword\">column\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> Object val\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cul>\n\u003Cli>例: \u003Ccode>le(&quot;age&quot;, 18)\u003C\u002Fcode>相当于条件\u003Ccode>age &lt;= 18\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-10\">\u003Ccode>between\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"between(R%20column%2C%20Object%20val1%2C%20Object%20val2)%0Abetween(boolean%20condition%2C%20R%20column%2C%20Object%20val1%2C%20Object%20val2)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">between\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Object\u003C\u002Fspan> val1\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Object\u003C\u002Fspan> val2\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">between\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Object\u003C\u002Fspan> val1\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Object\u003C\u002Fspan> val2\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cp>作用：BETWEEN 值1 AND 值2\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>between(&quot;age&quot;, 18, 30)\u003C\u002Fcode>相当于条件\u003Ccode>age between 18 and 30\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-11\">\u003Ccode>notBetween\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cdiv class=\"language-css\" data-ext=\"css\" data-code=\"notBetween(R%20column%2C%20Object%20val1%2C%20Object%20val2)%0AnotBetween(boolean%20condition%2C%20R%20column%2C%20Object%20val1%2C%20Object%20val2)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-css\">\u003Cspan class=\"token function\">notBetween\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>R column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> Object val1\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> Object val2\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">notBetween\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>boolean condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> R column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> Object val1\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> Object val2\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cp>作用：NOT BETWEEN 值1 AND 值2\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>notBetween(&quot;age&quot;, 18, 30)\u003C\u002Fcode>相当于条件\u003Ccode>age not between 18 and 30\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-12\">\u003Ccode>like\u003C\u002Fcode> : 模糊查询\u003C\u002Fh3>\n\u003Cdiv class=\"language-sql\" data-ext=\"sql\" data-code=\"like(R%20column%2C%20Object%20val)%0Alike(boolean%20condition%2C%20R%20column%2C%20Object%20val)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-sql\">\u003Cspan class=\"token operator\">like\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>R \u003Cspan class=\"token keyword\">column\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> Object val\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token operator\">like\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> R \u003Cspan class=\"token keyword\">column\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> Object val\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cp>作用：LIKE '%值%'\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>like(&quot;name&quot;, &quot;王&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>name like '%王%'\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-13\">\u003Ccode>notLike\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"notLike(R%20column%2C%20Object%20val)%0AnotLike(boolean%20condition%2C%20R%20column%2C%20Object%20val)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">notLike\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Object\u003C\u002Fspan> val\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">notLike\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Object\u003C\u002Fspan> val\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cp>作用：NOT LIKE '%值%'\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>notLike(&quot;name&quot;, &quot;王&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>name not like '%王%'\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-14\">\u003Ccode>likeLeft\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"likeLeft(R%20column%2C%20Object%20val)%0AlikeLeft(boolean%20condition%2C%20R%20column%2C%20Object%20val)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">likeLeft\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Object\u003C\u002Fspan> val\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">likeLeft\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Object\u003C\u002Fspan> val\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cp>作用：LIKE '%值'\u003C\u002Fp>\n\u003Cp>例: \u003Ccode>likeLeft(&quot;name&quot;, &quot;王&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>name like '%王\u003C\u002Fcode>， 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fp>\n\u003Ch3 id=\"toc-15\">\u003Ccode>likeRight\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"likeRight(R%20column%2C%20Object%20val)%0AlikeRight(boolean%20condition%2C%20R%20column%2C%20Object%20val)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">likeRight\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Object\u003C\u002Fspan> val\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">likeRight\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Object\u003C\u002Fspan> val\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cp>作用： LIKE '值%'\u003C\u002Fp>\n\u003Cp>例: \u003Ccode>likeRight(&quot;name&quot;, &quot;王&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>name like '王%\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fp>\n\u003Ch3 id=\"toc-16\">\u003Ccode>isNull\u003C\u002Fcode> ：为空\u003C\u002Fh3>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"isNull(R%20column)%0AisNull(boolean%20condition%2C%20R%20column)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">isNull\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">isNull\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cp>作用：字段 IS NULL\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>isNull(&quot;name&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>name is null\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-17\">\u003Ccode>isNotNull\u003C\u002Fcode> ： 非空\u003C\u002Fh3>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"isNotNull(R%20column)%0AisNotNull(boolean%20condition%2C%20R%20column)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">isNotNull\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">isNotNull\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cp>作用： 字段 IS NOT NULL\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>isNotNull(&quot;name&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>name is not null\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-18\">\u003Ccode>in\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cdiv class=\"language-sql\" data-ext=\"sql\" data-code=\"in(R%20column%2C%20Collection%3C%3F%3E%20value)%0Ain(boolean%20condition%2C%20R%20column%2C%20Collection%3C%3F%3E%20value)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-sql\">\u003Cspan class=\"token operator\">in\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>R \u003Cspan class=\"token keyword\">column\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> Collection\u003Cspan class=\"token operator\">&lt;\u003C\u002Fspan>?\u003Cspan class=\"token operator\">>\u003C\u002Fspan> \u003Cspan class=\"token keyword\">value\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token operator\">in\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> R \u003Cspan class=\"token keyword\">column\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> Collection\u003Cspan class=\"token operator\">&lt;\u003C\u002Fspan>?\u003Cspan class=\"token operator\">>\u003C\u002Fspan> \u003Cspan class=\"token keyword\">value\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cp>说明：字段 IN (value.get(0), value.get(1), ...)\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>in(&quot;age&quot;,{1,2,3})\u003C\u002Fcode>相当于条件\u003Ccode>age in (1,2,3)\u003C\u002Fcode>，具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"in(R%20column%2C%20Object...%20values)%0Ain(boolean%20condition%2C%20R%20column%2C%20Object...%20values)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">in\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Object\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan> values\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">in\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Object\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan> values\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cp>说明：字段 IN (v0, v1, ...)\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>in(&quot;age&quot;, 1, 2, 3)  \u003C\u002Fcode> 相当于条件\u003Ccode>age in (1,2,3)\u003C\u002Fcode>，具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-19\">\u003Ccode>notIn\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"notIn(R%20column%2C%20Collection%3C%3F%3E%20value)%0AnotIn(boolean%20condition%2C%20R%20column%2C%20Collection%3C%3F%3E%20value)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">notIn\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Collection\u003C\u002Fspan>\u003Cspan class=\"token generics\">\u003Cspan class=\"token punctuation\">&lt;\u003C\u002Fspan>\u003Cspan class=\"token operator\">?\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">>\u003C\u002Fspan>\u003C\u002Fspan> value\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">notIn\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Collection\u003C\u002Fspan>\u003Cspan class=\"token generics\">\u003Cspan class=\"token punctuation\">&lt;\u003C\u002Fspan>\u003Cspan class=\"token operator\">?\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">>\u003C\u002Fspan>\u003C\u002Fspan> value\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cp>作用：NOT IN (value.get(0), value.get(1), ...)\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>notIn(&quot;age&quot;,{1,2,3})\u003C\u002Fcode>相当于条件\u003Ccode>age not in (1,2,3)\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-20\">\u003Ccode>inSql\u003C\u002Fcode> ：子查询\u003C\u002Fh3>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"inSql(R%20column%2C%20String%20inValue)%0AinSql(boolean%20condition%2C%20R%20column%2C%20String%20inValue)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">inSql\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">String\u003C\u002Fspan> inValue\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">inSql\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">String\u003C\u002Fspan> inValue\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cp>作用：字段 IN ( sql语句 )\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>inSql(&quot;age&quot;, &quot;1,2,3,4,5,6&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>age in (1,2,3,4,5,6)\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003Cli>例: \u003Ccode>inSql(&quot;id&quot;, &quot;select id from table where id &lt; 3&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>id in (select id from table where id &lt; 3)\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>;\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-21\">\u003Ccode>notInSql\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"notInSql(R%20column%2C%20String%20inValue)%0AnotInSql(boolean%20condition%2C%20R%20column%2C%20String%20inValue)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">notInSql\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">String\u003C\u002Fspan> inValue\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">notInSql\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">R\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">String\u003C\u002Fspan> inValue\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cp>作用：NOT IN ( sql语句 )\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>notInSql(&quot;age&quot;, &quot;1,2,3,4,5,6&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>age not in (1,2,3,4,5,6)\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003Cli>例: \u003Ccode>notInSql(&quot;id&quot;, &quot;select id from table where id &lt; 3&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>id not in (select id from table where id &lt; 3)\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-22\">\u003Ccode>groupBy\u003C\u002Fcode>：分组\u003C\u002Fh3>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"groupBy(R...%20columns)%0AgroupBy(boolean%20condition%2C%20R...%20columns)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">groupBy\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan> columns\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">groupBy\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">R\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan> columns\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cp>说明：分组 GROUP BY 字段。\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>groupBy(&quot;id&quot;, &quot;name&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>group by id,name\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-23\">\u003Ccode>orderByAsc\u003C\u002Fcode>：升序\u003C\u002Fh3>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"orderByAsc(R...%20columns)%0AorderByAsc(boolean%20condition%2C%20R...%20columns)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">orderByAsc\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan> columns\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">orderByAsc\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">R\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan> columns\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cp>说明：升序排序：ORDER BY 字段, ... ASC\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>orderByAsc(&quot;id&quot;, &quot;name&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>order by id ASC,name ASC\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-24\">\u003Ccode>orderByDesc\u003C\u002Fcode>：降序\u003C\u002Fh3>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"orderByDesc(R...%20columns)%0AorderByDesc(boolean%20condition%2C%20R...%20columns)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">orderByDesc\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">R\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan> columns\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">orderByDesc\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">R\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan> columns\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cp>说明：降序排序：ORDER BY 字段, ... DESC\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>orderByDesc(&quot;id&quot;, &quot;name&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>order by id DESC,name DESC\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-25\">\u003Ccode>orderBy\u003C\u002Fcode> ： 排序\u003C\u002Fh3>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"orderBy(boolean%20condition%2C%20boolean%20isAsc%2C%20R...%20columns)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">orderBy\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> isAsc\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">R\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan> columns\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cp>说明：排序：ORDER BY 字段, ...\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>orderBy(true, true, &quot;id&quot;, &quot;name&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>order by id ASC,name ASC\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-26\">\u003Ccode>having\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cp>作用：HAVING ( sql语句 )\u003C\u002Fp>\n\u003Cdiv class=\"language-javascript\" data-ext=\"javascript\" data-code=\"having(String%20sqlHaving%2C%20Object...%20params)%0Ahaving(boolean%20condition%2C%20String%20sqlHaving%2C%20Object...%20params)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-javascript\">\u003Cspan class=\"token function\">having\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>String sqlHaving\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> Object\u003Cspan class=\"token operator\">...\u003C\u002Fspan> params\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">having\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>boolean condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> String sqlHaving\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> Object\u003Cspan class=\"token operator\">...\u003C\u002Fspan> params\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cul>\n\u003Cli>例: \u003Ccode>having(&quot;sum(age) &gt; 10&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>having sum(age) &gt; 10\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>例: \u003Ccode>having(&quot;sum(age) &gt; {0}&quot;, 11)\u003C\u002Fcode>相当于条件\u003Ccode>having sum(age) &gt; 11\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-27\">\u003Ccode>func\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cp>作用：func 方法主要方便在出现if...else下调用不同方法能不断链\u003C\u002Fp>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"func(Consumer%3CChildren%3E%20consumer)%0Afunc(boolean%20condition%2C%20Consumer%3CChildren%3E%20consumer)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">func\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">Consumer\u003C\u002Fspan>\u003Cspan class=\"token generics\">\u003Cspan class=\"token punctuation\">&lt;\u003C\u002Fspan>\u003Cspan class=\"token class-name\">Children\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">>\u003C\u002Fspan>\u003C\u002Fspan> consumer\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">func\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Consumer\u003C\u002Fspan>\u003Cspan class=\"token generics\">\u003Cspan class=\"token punctuation\">&lt;\u003C\u002Fspan>\u003Cspan class=\"token class-name\">Children\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">>\u003C\u002Fspan>\u003C\u002Fspan> consumer\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cul>\n\u003Cli>例: \u003Ccode>func(i -&gt; if(true) {i.eq(&quot;id&quot;, 1)} else {i.ne(&quot;id&quot;, 1)})\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-28\">\u003Ccode>or\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Ch4 id=\"toc-29\">拼接 or :\u003C\u002Fh4>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"or()%0Aor(boolean%20condition)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">or\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">or\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cul>\n\u003Cli>例: \u003Ccode>eq(&quot;id&quot;,1).or().eq(&quot;name&quot;,&quot;老王&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>id = 1 or name = '老王'\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"toc-30\">or 嵌套：\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>例: \u003Ccode>or(i -&gt; i.eq(&quot;name&quot;, &quot;李白&quot;).ne(&quot;status&quot;, &quot;活着&quot;))\u003C\u002Fcode>相当于条件\u003Ccode>or (name = '李白' and status &lt;&gt; '活着')\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-31\">\u003Ccode>and\u003C\u002Fcode> 嵌套\u003C\u002Fh3>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"and(Consumer%3CParam%3E%20consumer)%0Aand(boolean%20condition%2C%20Consumer%3CParam%3E%20consumer)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">and\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">Consumer\u003C\u002Fspan>\u003Cspan class=\"token generics\">\u003Cspan class=\"token punctuation\">&lt;\u003C\u002Fspan>\u003Cspan class=\"token class-name\">Param\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">>\u003C\u002Fspan>\u003C\u002Fspan> consumer\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">and\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Consumer\u003C\u002Fspan>\u003Cspan class=\"token generics\">\u003Cspan class=\"token punctuation\">&lt;\u003C\u002Fspan>\u003Cspan class=\"token class-name\">Param\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">>\u003C\u002Fspan>\u003C\u002Fspan> consumer\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cp>作用：AND 嵌套\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>and(i -&gt; i.eq(&quot;name&quot;, &quot;李白&quot;).ne(&quot;status&quot;, &quot;活着&quot;))\u003C\u002Fcode>相当于条件\u003Ccode>and (name = '李白' and status &lt;&gt; '活着')\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-32\">\u003Ccode>nested\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cp>作用：正常嵌套 不带 AND 或者 OR\u003C\u002Fp>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"nested(Consumer%3CParam%3E%20consumer)%0Anested(boolean%20condition%2C%20Consumer%3CParam%3E%20consumer)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">nested\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">Consumer\u003C\u002Fspan>\u003Cspan class=\"token generics\">\u003Cspan class=\"token punctuation\">&lt;\u003C\u002Fspan>\u003Cspan class=\"token class-name\">Param\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">>\u003C\u002Fspan>\u003C\u002Fspan> consumer\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">nested\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Consumer\u003C\u002Fspan>\u003Cspan class=\"token generics\">\u003Cspan class=\"token punctuation\">&lt;\u003C\u002Fspan>\u003Cspan class=\"token class-name\">Param\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">>\u003C\u002Fspan>\u003C\u002Fspan> consumer\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cul>\n\u003Cli>例: \u003Ccode>nested(i -&gt; i.eq(&quot;name&quot;, &quot;李白&quot;).ne(&quot;status&quot;, &quot;活着&quot;))\u003C\u002Fcode>相当于条件\u003Ccode>(name = '李白' and status &lt;&gt; '活着')\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-33\">\u003Ccode>apply\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cp>作用：拼接 sql\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>注意：该方法可用于数据库\u003Cstrong>函数\u003C\u002Fstrong> 动态入参的\u003Ccode>params\u003C\u002Fcode>对应前面\u003Ccode>applySql\u003C\u002Fcode>内部的\u003Ccode>{index}\u003C\u002Fcode>部分.这样是不会有sql注入风险的,反之会有!\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cdiv class=\"language-javascript\" data-ext=\"javascript\" data-code=\"apply(String%20applySql%2C%20Object...%20params)%0Aapply(boolean%20condition%2C%20String%20applySql%2C%20Object...%20params)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-javascript\">\u003Cspan class=\"token function\">apply\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>String applySql\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> Object\u003Cspan class=\"token operator\">...\u003C\u002Fspan> params\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">apply\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>boolean condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> String applySql\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> Object\u003Cspan class=\"token operator\">...\u003C\u002Fspan> params\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cul>\n\u003Cli>例: \u003Ccode>apply(&quot;id = 1&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>id = 1\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>例: \u003Ccode>apply(&quot;date_format(dateColumn,'%Y-%m-%d') = '2008-08-08'&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>date_format(dateColumn,'%Y-%m-%d') = '2008-08-08'&quot;)\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>例: \u003Ccode>apply(&quot;date_format(dateColumn,'%Y-%m-%d') = {0}&quot;, &quot;2008-08-08&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>date_format(dateColumn,'%Y-%m-%d') = '2008-08-08'&quot;)\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-34\">\u003Ccode>last\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cp>作用：无视优化规则直接拼接到 sql 的最后。\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>注意：只能调用一次,多次调用以最后一次为准 有sql注入的风险,请谨慎使用。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"last(String%20lastSql)%0Alast(boolean%20condition%2C%20String%20lastSql)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">last\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">String\u003C\u002Fspan> lastSql\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">last\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">String\u003C\u002Fspan> lastSql\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cul>\n\u003Cli>例: \u003Ccode>last(&quot;limit 1&quot;)\u003C\u002Fcode>, 具体代码示例点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-35\">\u003Ccode>exists\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"exists(String%20existsSql)%0Aexists(boolean%20condition%2C%20String%20existsSql)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">exists\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">String\u003C\u002Fspan> existsSql\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">exists\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">String\u003C\u002Fspan> existsSql\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cp>作用：拼接 EXISTS ( sql语句 )\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>exists(&quot;select id from table where age = 1&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>exists (select id from table where age = 1)\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-36\">\u003Ccode>notExists\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"notExists(String%20notExistsSql)%0AnotExists(boolean%20condition%2C%20String%20notExistsSql)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">notExists\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">String\u003C\u002Fspan> notExistsSql\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">notExists\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">String\u003C\u002Fspan> notExistsSql\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cp>作用：拼接 NOT EXISTS ( sql语句 )\u003C\u002Fp>\n\u003Cul>\n\u003Cli>例: \u003Ccode>notExists(&quot;select id from table where age = 1&quot;)\u003C\u002Fcode>相当于条件\u003Ccode>not exists (select id from table where age = 1)\u003C\u002Fcode>, 具体示例代码点这里\u003Cspan>\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"color: #aaa; margin-left: 3px;\" aria-hidden=\"true\" focusable=\"false\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" width=\"15\" height=\"15\" class=\"icon outbound\">\u003Cpath fill=\"currentColor\" d=\"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z\">\u003C\u002Fpath> \u003Cpolygon fill=\"currentColor\" points=\"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9\">\u003C\u002Fpolygon>\u003C\u002Fsvg> \u003Cspan class=\"sr-only\">\u003C\u002Fspan>\u003C\u002Fspan>；\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-37\">QueryWrapper\u003C\u002Fh3>\n\u003Cp>QueryWrapper 继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件。LambdaQueryWrapper 支持以 lambda 形式组装条件, 可以通过 new QueryWrapper().lambda() 方法获取实例。\u003C\u002Fp>\n\u003Ch3 id=\"toc-38\">\u003Ccode>select\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cp>作用：设置查询字段\u003C\u002Fp>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"select(String...%20sqlSelect)%0Aselect(Predicate%3CTableFieldInfo%3E%20predicate)%0Aselect(Class%3CT%3E%20entityClass%2C%20Predicate%3CTableFieldInfo%3E%20predicate)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">select\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">String\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">.\u003C\u002Fspan> sqlSelect\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">select\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">Predicate\u003C\u002Fspan>\u003Cspan class=\"token generics\">\u003Cspan class=\"token punctuation\">&lt;\u003C\u002Fspan>\u003Cspan class=\"token class-name\">TableFieldInfo\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">>\u003C\u002Fspan>\u003C\u002Fspan> predicate\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">select\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">Class\u003C\u002Fspan>\u003Cspan class=\"token generics\">\u003Cspan class=\"token punctuation\">&lt;\u003C\u002Fspan>\u003Cspan class=\"token class-name\">T\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">>\u003C\u002Fspan>\u003C\u002Fspan> entityClass\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Predicate\u003C\u002Fspan>\u003Cspan class=\"token generics\">\u003Cspan class=\"token punctuation\">&lt;\u003C\u002Fspan>\u003Cspan class=\"token class-name\">TableFieldInfo\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">>\u003C\u002Fspan>\u003C\u002Fspan> predicate\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cblockquote>\n\u003Cp>TIP :\u003C\u002Fp>\n\u003Cp>以上方法分为两类.\n第二类方法为:过滤查询字段(主键除外),入参不包含 class 的调用前需要\u003Ccode>wrapper\u003C\u002Fcode>内的\u003Ccode>entity\u003C\u002Fcode>属性有值! 这两类方法重复调用以最后一次为准\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cul>\n\u003Cli>例: \u003Ccode>select(&quot;id&quot;, &quot;name&quot;, &quot;age&quot;)\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>例: \u003Ccode>select(i -&gt; i.getProperty().startsWith(&quot;test&quot;))\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"toc-39\">UpdateWrapper\u003C\u002Fh2>\n\u003Cp>UpdateWrapper 继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件。LambdaUpdateWrapper 支持以 lambda 形式组装条件, 可以通过 new QueryWrapper().lambda() 方法获取实例。\u003C\u002Fp>\n\u003Ch3 id=\"toc-40\">\u003Ccode>set\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cp>作用：SET 字段\u003C\u002Fp>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"set(String%20column%2C%20Object%20val)%0Aset(boolean%20condition%2C%20String%20column%2C%20Object%20val)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">set\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">String\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Object\u003C\u002Fspan> val\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003Cspan class=\"token function\">set\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token keyword\">boolean\u003C\u002Fspan> condition\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">String\u003C\u002Fspan> column\u003Cspan class=\"token punctuation\">,\u003C\u002Fspan> \u003Cspan class=\"token class-name\">Object\u003C\u002Fspan> val\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cul>\n\u003Cli>例: \u003Ccode>set(&quot;name&quot;, &quot;老李头&quot;)\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>例: \u003Ccode>set(&quot;name&quot;, &quot;&quot;)\u003C\u002Fcode>---&gt;数据库字段值变为\u003Cstrong>空字符串\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>例: \u003Ccode>set(&quot;name&quot;, null)\u003C\u002Fcode>---&gt;数据库字段值变为\u003Ccode>null\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-41\">\u003Ccode>setSql\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cp>作用：设置 SET 部分 SQL\u003C\u002Fp>\n\u003Cdiv class=\"language-java\" data-ext=\"java\" data-code=\"setSql(String%20sql)%0A\">\n        \u003Cbutton class=\"vp-copy-code-button\" data-copy data-copied=\"已复制\" aria-label=\"复制代码\">\u003C\u002Fbutton>\n        \u003Cpre>\u003Ccode class=\"language-java\">\u003Cspan class=\"token function\">setSql\u003C\u002Fspan>\u003Cspan class=\"token punctuation\">(\u003C\u002Fspan>\u003Cspan class=\"token class-name\">String\u003C\u002Fspan> sql\u003Cspan class=\"token punctuation\">)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n      \u003C\u002Fdiv>\n\u003Cul>\n\u003Cli>例: \u003Ccode>setSql(&quot;name = '老李头'&quot;)\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"toc-42\">\u003Ccode>lambda\u003C\u002Fcode>\u003C\u002Fh3>\n\u003Cp>作用：用于获取 \u003Ccode>LambdaWrapper\u003C\u002Fcode>。\u003C\u002Fp>"]