mybatis plus条件构造器关系图

1.上图绿色框为抽象类abstract

2.蓝色框为正常class类,可new对象

3.黄色箭头指向为父子类关系,箭头指向为父类

QueryWrapper

继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件及 LambdaQueryWrapper, 可以通过 new QueryWrapper().lambda() 方法获取

@Test
public void query(){
QueryWrapper<Demo> queryWrapper = new QueryWrapper<>();
//需要查询出来的字段
queryWrapper.select("test1", "test2");
//排除或指定要查询的字段(常量在前,变量再后避免空指针)
queryWrapper.select(Demo.class,i -> !"1111".equals(i.getTest1()));
//对参数进行非空判断,代替if非空判断
queryWrapper.eq(StrUtil.isNotEmpty(name), "name", "张三");
List<Demo> list = iTestService.list(queryWrapper);
list.forEach(System.out::println); // or 用法
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("name", "张三");
queryWrapper.and(wrapper -> wrapper.eq("age", 18).or().eq("sex", "男"));
}

UpdateWrapper

继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件及 LambdaUpdateWrapper, 可以通过 new UpdateWrapper().lambda() 方法获取

@Test
public void update(){
UpdateWrapper<ManagerSection> updateWrapper = new UpdateWrapper<>();
// 修改字段值
updateWrapper.set("status", status);
// 设置sql语句部分
updateWrapper.setSql("test3 = 18");
// where条件
updateWrapper.eq("id",id);
boolean result = iTestService.update(updateWrapper);
}

LambdaQueryWrapper

@Test
public void queryLambda(){
LambdaQueryWrapper<ManagerSectionPerson> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ManagerSectionPerson::getId, id)
.between(ManagerSectionPerson::getInvalid, 0, 1);
//对参数进行非空判断,代替if非空判断
queryWrapper.eq(StrUtil.isNotEmpty(name), ManagerSectionPerson::getName, "李四");
List<ManagerSectionPerson > personList = this.list(queryWrapper);
}

LambdaUpdateWrapper

@Test
public void updateLambda(){
LambdaUpdateWrapper<ManagerSectionPerson> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(ManagerSectionPerson::getId, id)
.le(ManagerSectionPerson::getLockStatus, 30)
.set(ManagerSectionPerson::getInvalid, 1)
.setSql("status = 1");
this.update(updateWrapper);
}

使用 Wrapper 自定义SQL

  • 在mapper文件中定义方法,方法的参数为:@Param(Constants.WRAPPER) Wrapper wrapper

  • 在sql的最后添加上:${ew.customSqlSegment} ;

注解方式 Mapper.java

@Select("select * from mysql_data ${ew.customSqlSegment}")
List<MysqlData> getAll(@Param(Constants.WRAPPER) Wrapper wrapper);

XML形式 Mapper.xml

<select id="getAll" resultType="MysqlData">
SELECT * FROM mysql_data ${ew.customSqlSegment}
</select>

mybatis plus 封装的函数列表

Mybatis-plus 中Wrapper的使用的更多相关文章

  1. Mybatis框架中实现双向一对多关系映射

    学习过Hibernate框架的伙伴们很容易就能简单的配置各种映射关系(Hibernate框架的映射关系在我的blogs中也有详细的讲解),但是在Mybatis框架中我们又如何去实现 一对多的关系映射呢 ...

  2. 详解Java的MyBatis框架中SQL语句映射部分的编写

    这篇文章主要介绍了Java的MyBatis框架中SQL语句映射部分的编写,文中分为resultMap和增删查改实现两个部分来讲解,需要的朋友可以参考下 1.resultMap SQL 映射XML 文件 ...

  3. 【转】MyBatis学习总结(三)——优化MyBatis配置文件中的配置

    [转]MyBatis学习总结(三)——优化MyBatis配置文件中的配置 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的con ...

  4. SpringBoot Mybatis项目中的多数据源支持

    1.概述 有时项目里里需要抽取不同系统中的数据源,需要访问不同的数据库,本文介绍在Springboot+Mybatis项目中如何支持多数据源操作. 有需要的同学可以下载 示例代码 项目结构如下: 2. ...

  5. MyBatis Generator中文文档

    MyBatis Generator中文文档 MyBatis Generator中文文档地址: http://mbg.cndocs.tk/ 该中文文档由于尽可能和原文内容一致,所以有些地方如果不熟悉,看 ...

  6. Mybatis系列(二):优化MyBatis配置文件中的配置和解决字段名与实体类属性名不相同的冲突

    原文链接:http://www.cnblogs.com/xdp-gacl/p/4264301.html     http://www.cnblogs.com/xdp-gacl/p/4264425.ht ...

  7. SpringMVC+MyBatis开发中指定callSettersOnNulls,可解决返回字段不全的问题

    Spring+MyBatis开发过程中,在xxMapper.xml配置文件进行select查询时resultType="map",如果要查询的字段是空值,在返回的map中会出现找不 ...

  8. MyBatis配置文件中的标签mappers的子标签mapper的url属性

    在浏览器中输入file:/可以打开访达根目录,file:后面至少跟一个杠 MyBatis配置文件中的标签mappers的子标签mapper的url属性中file:后面至少要跟两个杠

  9. mybatis框架中XxxxMaper.xml的文件

    我们知道在mybatis框架中,config.xml中会关联到许多的XxxxMapper的xml文件,这些文件又对应着一个个的接口,来观察下这些xml文件 从以下这个文件为例子: <?xml v ...

  10. Mybatis 学习过程中出现空指针异常的错误【已解决】

    Mybatis 学习过程中出现空指针异常的错误[已解决] 以下是写的小测试的代码 bean层 Player类(篮球队队员) bean层 Team类(篮球队) dao层 TeamDao.xml配置文件 ...

随机推荐

  1. 命令行创建vue项目

    vue -h vue create learn-vue ❯ Manually select features 选择下面的组件(空格为选中/取消)回车确认 使用 history mode 使用node ...

  2. Android Framework学习之系统启动流程

    最近抽空看了framework一些内存,总结一下,留作后续回顾复习

  3. Docker 必知必会3----使用自己制作的镜像

    前面的两篇文章分别讲了,docker的基础概念,设计思路以及docker的基本操作.感兴趣的同学可以查阅: https://www.cnblogs.com/jilodream/p/18177695ht ...

  4. 4G EPS 的架构模型

    目录 文章目录 目录 前文列表 EPS 的架构 EPS 的架构模型 E-UTRAN UE eNodeB EPC MME(移动性管理) SGW(本地移动性锚点) PGW(业务锚点) HSS(用户认证及鉴 ...

  5. 10分钟搞定Mysql主从部署配置

    流程 Master数据库安装 Slave数据库安装 配置Master数据库 配置Slave数据库 网络信息 Master数据库IP:192.168.198.133 Slave数据库IP:192.168 ...

  6. pageoffice6 版本实现在线打开word 文件禁止保存、禁止另存、禁止打印的需求

    在实际项目需求中,有时需要限制用户的保存.另存.打印文件操作,实现此效果只需在OnPageOfficeCtrlInit或AfterDocumentOpened事件中调用js设置PageOffice控件 ...

  7. (二)Redis 数据类型与结构

    1.值的数据类型 Redis "快"取决于两方面,一方面,它是内存数据库,另一方面,则是高效的数据结构.Redis 键值对中值的数据类型,也就是数据的保存形式有5种:String( ...

  8. 构建自定义镜像并优化dockerfile文件

    目录 一.系统环境 二.前言 三.镜像构建步骤 四.dockerfile文件常用指令 4.1 dockerfile文件常用指令 4.2 RUN.CMD.ENTRYPOINT的区别 五.构建centos ...

  9. 阿里巴巴 MySQL 数据库之建表规约(一)

    建表规约 强制部分 [强制] 表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint (1 表示是,0 表示否). 说明:任何字段如果为非负数,必须是 ...

  10. Android 13 - Media框架(30)- ACodec(六)

    关注公众号免费阅读全文,进入音视频开发技术分享群! 前一节我们了解了input buffer写入的流程,知道了起播写前几笔数据时会先获取graphic buffer,这一节我们就一起来了解下deque ...