zoukankan      html  css  js  c++  java
  • QueryWrapper、UpdateWrapper和LambdaWrapper

    前提

    目前 mybatis 基本不直接使用, 而是使用 baomidou 进行增强,这个框架的背景图就是 红斗罗好基友的照片。简直就是mybatis 的孪生栾弟。
    基本使用步骤如下:

    1. 通过 baomidou 自带的 CodeGenerator 生成器生成对应表的 dao 、do、service、action、mapper 层
    2. 调用 生成的 service就基本够用了,保留批量插入。。
    3. 若涉及到多个表的查询, 希望直接SQL 就进行表的join等复杂逻辑,则可以单独在 mapper.xml中 进行复杂SQL的编写,再在 dao中封装调用

    QueryWrapper、UpdateWrapper和LambdaWrapper 使用闭坑指南

    QueryWrapper

    select函数

    select(String... sqlSelect)
    select(Predicate<TableFieldInfo> predicate)
    select(Class<T> entityClass, Predicate<TableFieldInfo> predicate)
    
    /**
    * 设置所要查询的字段
    */
    @Test
    public void test01(){
       QueryWrapper<User> queryWrapper = new QueryWrapper<>();
       queryWrapper.select("name","age");
       List<User> users = userMapper.selectList(queryWrapper);
       users.forEach(System.out::println);
    }
    
    

    第二种方法的使用(可以排除或指定查询字段)

    QueryWrapper<Admin> wrapper = new QueryWrapper<>();
    // 下列构造方式指定排除password字段
    wrapper.select(Admin.class,i -> !i.getColumn().equals("password"));
    

    UpdateWrapper

    set函数

    set(String column, Object val)
    set(boolean condition, String column, Object val)
    
    @Test
    public void test03(){
        UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
        updateWrapper.in("age",Arrays.asList(20,30,40));
        updateWrapper.set("name","jack");
        updateWrapper.set("age",43);
        updateWrapper.set("email","sakara@qq.top");
        userService.update(updateWrapper);
    }
    
    

    setSql函数 ,设置 SET 部分 SQL

    setSql(String sql)
    
     /**
      * 根据 UpdateWrapper 条件,更新记录 需要设置 sqlset
      */
    @Test
    public void test06(){
        UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
        // 设置 set sql语句部分
        updateWrapper.setSql("age = 18");
        updateWrapper.eq("name","jason");
        userService.update(updateWrapper);
    }
    
    

    LambdaWrapper

    获取 LambdaWrapper
    在QueryWrapper中是获取LambdaQueryWrapper
    在UpdateWrapper中是获取LambdaUpdateWrapper

    LambdaQueryWrapper

    @Test
    public void test88(){
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda()
                .between(User::getAge,30,60)
                .orderByDesc(User::getId);
        List<User> list = userService.list(queryWrapper);
        list.forEach(System.out::println);
    }
    

    LambdaUpdateWrapper

    @Test
    public void test99(){
        UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
        updateWrapper.lambda()
                .le(User::getAge, 30)
                .setSql("email = 'le30@duck.top'");
        userService.update(updateWrapper);
    }
    

    使用 Wrapper 自定义SQL

    方案一 注解方式 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>
    
  • 相关阅读:
    常见的医学影像数据格式
    如何加到可选Kernel中?(jupyter notebook)
    GITHUB(3.2)实际动手使用
    GITHUB(3.1)前期准备
    GITHUB(2.1-2.5)Git的导入
    GITHUB(1.5)GitHub提供的主要功能
    HTML
    python day21
    python day20
    python day19
  • 原文地址:https://www.cnblogs.com/yyystar/p/15510440.html
Copyright © 2011-2022 走看看