首页 > 其他分享 >Mybatis-plus 中Wrapper的使用

Mybatis-plus 中Wrapper的使用

时间:2023-04-14 15:57:27浏览次数:34  
标签:queryWrapper Wrapper Test plus updateWrapper ManagerSectionPerson Mybatis new

mybatis plus条件构造器关系图

image

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()));
    List<Demo> list = iTestService.list(queryWrapper);
    list.forEach(System.out::println);
}

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);
    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 封装的函数列表

image

标签:queryWrapper,Wrapper,Test,plus,updateWrapper,ManagerSectionPerson,Mybatis,new
From: https://www.cnblogs.com/zhaojinhui/p/17318546.html

相关文章

  • springboot-web-mybatis
    Restful开发规范Restful是网络应用接口程序的接口设计风格,基于HTTP协议GET:查询POST:新增PUT:修改DELETE:删除Restful是一种风格,可以不遵守如何为请求参数设置默认值可以在Service层判断是否为null,如果为true则给它赋值默认值可以在Controller层参数列表添加@RequstPa......
  • mybatis 连接 ORACLE
     application-common-dev.ymlspring:profiles:include:[common]main:allow-bean-definition-overriding:true#Redis服务器IPredis:host:127.0.0.1#Redis服务器连接端口port:6379#Redis服务器连接密码password:testj......
  • 基于imx8m plus开发板全体系开发教程4:Linux系统开发
    前言:i.MX8MPlus开发板是一款拥有4个Cortex-A53核心,运行频率1.8GHz;1个Cortex-M7核心,运行频率800MHz;此外还集成了一个2.3TOPS的NPU,大大加速机器学习推理。全文所使用的开发平台均为与NXP官方合作的FS-IMX8MPCA开发板(华清远见imx8mp开发板),支持Weston、ubuntu20.04、A......
  • SpringBoot 集成 MybatisPlus 八——插件
    1Mybatis插件机制Mybatis插件是对Executor、StatementHandler、ParameterHandler、ResultSetHandler这四个接口上的方法进行拦截,利用JDK动态代理机制,为这些接口的实现类创建代理对象,在执行方法时,先去执行代理对象的方法,从而执行自己编写的拦截逻辑。ExecutorMyBatis的内部执行器......
  • MyBatisPlus解决逻辑删除与唯一索引的兼容问题
    需求背景比如有张用户表,在插入或者更新数据的时候,我们需要用户名称(username),不能重复。我们首先考虑的是给该字段创建唯一索引createuniqueindexuni_usernameonuser(username)似乎这样就可以了,然而事情并没有那么简单。因为我们表中的数据在删除的时候不会真的的删......
  • Element Plus Tree 树 回显
     <el-form-itemlabel="菜单权限">       <el-tree:data="navList"ref="treeRef"  node-key="menuId"highlight-current=“true”:props="defaultProps" @check="checked" show-checkboxcl......
  • Mybatis_06 _查询语句对应关系
    Mybatis_06对应关系多对一:使用关联association一对多:使用集合collection创建SQL表:CREATETABLE`teacher`(`id`INT(10)NOTNULL,`name`VARCHAR(30)DEFAULTNULL,PRIMARYKEY(`id`))ENGINE=INNODBDEFAULTCHARSET=utf8CREATETABLE`student`(`id`INT(10......
  • springboot学习之四(整和mybatis)
    springboot整和mybatis    1.mapper文件开发 2.纯注解开发    https://www.cnblogs.com/fps2tao/p/13821490.html ......
  • 老冯笔记MyBatisPlus&lombok
    1.MyBatis-Plus介绍参考资料官方指南:https://baomidou.com/pages/24112f/#特性官方配置:https://baomidou.com/pages/56bac0/GitHub:https://github.com/baomidou/mybatis-plus特点只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。只需简单配置,即可快速进行......
  • 在Django+Vue3+GraphQL的Blog例子代码中引入Element-Plus UI Framework
    Vue3的UIFramework中有Element-Plus、BalmUI、Quasar、PrimeVue、AntDesignVue等UIFramework.Element-Plus是Element-UI的Vue3版,Element-UI的使用人数的基数较大,Github上的Star数也较多,就选择了Element-Plus作为这个Blog项目的UIFramework.UIFramework的好处就是提供了......