IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> QueryWrapper、UpdateWrapper和LambdaWrapper的使用 -> 正文阅读

[开发测试]QueryWrapper、UpdateWrapper和LambdaWrapper的使用

mybatis plus条件构造器关系图

?介绍 :

1.上图绿色框为抽象类abstract
2.蓝色框为正常class类,可new对象
3.黄色箭头指向为父子类关系,箭头指向为父类

废话不多说,直接上示例 :

注:示例中的 Service接口 都继承了 IService 的接口?

1. QueryWrapper

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

1.1 select函数

//String... sqlSelect 表示不定参数,也就是调用这个方法的时候这里可以传入多个String对象。
select(String... sqlSelect)
select(Predicate<TableFieldInfo> predicate)
select(Class<T> entityClass, Predicate<TableFieldInfo> predicate)
  • 设置查询字段

过滤查询字段,入参不包含 class 的调用前需要wrapper内的entity属性必须有值! 这两类方法重复调用以最后一次调用为准!

  • 示例
@Test
public void test(){
    QueryWrapper<Demo> queryWrapper = new QueryWrapper<>();
    //需要查询出来的字段
    queryWrapper.select("test1","test2");
    List<Demo> list = demoMapper.selectList(queryWrapper);
    list.forEach(System.out::println);
}

?控制台输出

Demo(id=null, test1=1111, test2=2222, test3=null, test4=null)
Demo(id=null, test1=5555, test2=6666, test3=null, test4=null)
  • 可以排除或指定要查询的字段
QueryWrapper<Demo> wrapper = new QueryWrapper<>();
//常量在前,变量再后避免空指针
wrapper.select(Demo.class,i -> !"1111".equals(i.getTest1()));

2. UpdateWrapper

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

2.1 set函数

//column 表字段,val 值 ,condition表示该条件是否加入最后生成的sql中
set(String column, Object val)
set(boolean condition, String column, Object val)
  • 示例

UpdateWrapper<ManagerSection> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("status",status);
updateWrapper.eq("id",id);
boolean result = iProjectUnitService.update(updateWrapper);

2.2 setSql函数

setSql(String sql)
  • 示例

@Test
public void test(){
    UpdateWrapper<Demo> updateWrapper = new UpdateWrapper<>();
    // 设置sql语句部分
    updateWrapper.setSql("test3 = 18");
    updateWrapper.eq("test1","1111");
    userService.update(updateWrapper);
}

3. LambdaWrapper

3.1 LambdaQueryWrapper

LambdaQueryWrapper<ManagerSectionPerson> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ManagerSectionPerson::getId,id)
            .between(ManagerSectionPerson::getInvalid,0,1);
List<ManagerSectionPerson > personList = this.list(queryWrapper);

3.2 LambdaUpdateWrapper

LambdaUpdateWrapper<ManagerSectionPerson> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(ManagerSectionPerson::getId, id)
             .le(ManagerSectionPerson::getLockStatus,30)
             .set(ManagerSectionPerson::getInvalid,1)
             .setSql("status = 1");
this.update(updateWrapper);

4.使用 Wrapper 自定义SQL

4.1? 注解方式 Mapper.java

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

4.2? XML形式 Mapper.xml

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

?下面图表为条件构造器使用中的各个方法格式和说明,如有不懂可参考官方文档内容在这里插入图片描述

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-01-14 02:17:03  更:2022-01-14 02:17:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 5:46:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码