• mybayis-plus条件构造器


    首先在这里写下官方文档的链接位置,官方文档说的很详细。如果还想知道在项目中的具体用法请往下看。

    一、条件构造器关系介绍

    在这里插入图片描述

    介绍 :

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

    wapper介绍 :

    1. Wrapper : 条件构造抽象类,最顶端父类,抽象类中提供4个方法西面贴源码展示
    2. AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件
    3. AbstractLambdaWrapper : Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。
    4. LambdaQueryWrapper :看名称也能明白就是用于Lambda语法使用的查询Wrapper
    5. LambdaUpdateWrapper : Lambda 更新封装Wrapper
    6. QueryWrapper : Entity 对象封装操作类,不是用lambda语法
    7. UpdateWrapper : Update 条件封装,用于Entity对象更新操作

    二、项目实例

    在这里以QueryWrapper和UpdateWrapper为例,进行测试讲解。如果不喜欢搭建项目的可直接下载项目
    在这里插入图片描述

    上图表格为条件构造器使用中的各个方法格式和说明,如有不懂可参考官方文档内容

    代码:

      1 package com.lqf.crud;
      2 
      3 import com.baomidou.mybatisplus.core.conditions.Wrapper;
      4 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
      5 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
      6 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
      7 import com.baomidou.mybatisplus.core.metadata.IPage;
      8 import com.baomidou.mybatisplus.core.toolkit.Constants;
      9 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
     10 import com.lqf.crud.bean.crm.User;
     11 import com.lqf.crud.dao.crm.UserMapper;
     12 import com.sun.org.apache.xerces.internal.util.EntityResolverWrapper;
     13 import org.apache.ibatis.annotations.Param;
     14 import org.apache.ibatis.session.RowBounds;
     15 import org.junit.Test;
     16 import org.junit.runner.RunWith;
     17 import org.springframework.beans.factory.annotation.Autowired;
     18 import org.springframework.boot.test.context.SpringBootTest;
     19 import org.springframework.test.context.junit4.SpringRunner;
     20 import org.springframework.web.jsf.el.WebApplicationContextFacesELResolver;
     21 
     22 import javax.naming.Name;
     23 import java.util.ArrayList;
     24 import java.util.HashMap;
     25 import java.util.List;
     26 import java.util.Map;
     27 
     28 @RunWith(SpringRunner.class)
     29 @SpringBootTest
     30 public class QueryWrapperTests {
     31 
     32     @Autowired
     33     private UserMapper mapper;
     34 
     35     /**
     36      * <p>
     37      * 根据根据 entity 条件,删除记录,QueryWrapper实体对象封装操作类(可以为 null)
     38      * 下方获取到queryWrapper后删除的查询条件为name字段为null的and年龄大于等于12的and email字段不为null的
     39      * 同理写法条件添加的方式就不做过多介绍了。
     40      * </p>
     41      */
     42     @Test
     43     public void delete() {
     44         QueryWrapper<User> queryWrapper = new QueryWrapper<>();
     45         queryWrapper
     46                 .isNull("name")
     47                 .ge("age", 12)
     48                 .isNotNull("email");
     49         int delete = mapper.delete(queryWrapper);
     50         System.out.println("delete return count = " + delete);
     51     }
     52 
     53 
     54     /**
     55      * <p>
     56      * 根据 entity 条件,查询一条记录,
     57      * 这里和上方删除构造条件一样,只是seletOne返回的是一条实体记录,当出现多条时会报错
     58      * </p>
     59      */
     60     @Test
     61     public void selectOne() {
     62         QueryWrapper<User> queryWrapper = new QueryWrapper<>();
     63         queryWrapper.eq("name", "lqf");
     64 
     65         User user = mapper.selectOne(queryWrapper);
     66         System.out.println(user);
     67     }
     68 
     69 
     70     /**
     71      * <p>
     72      * 根据 Wrapper 条件,查询总记录数
     73      * </p>
     74      *
     75      * @param queryWrapper 实体对象
     76      */
     77     @Test
     78     public void selectCount() {
     79         QueryWrapper<User> queryWrapper = new QueryWrapper<>();
     80         queryWrapper.eq("name", "lqf");
     81 
     82         Integer count = mapper.selectCount(queryWrapper);
     83         System.out.println(count);
     84     }
     85 
     86 
     87     /**
     88      * <p>
     89      * 根据 entity 条件,查询全部记录
     90      * </p>
     91      *
     92      * @param queryWrapper 实体对象封装操作类(可以为 null)为null查询全部
     93      */
     94     @Test
     95     public void selectList() {
     96         List<User> list = mapper.selectList(null);
     97 
     98         System.out.println(list);
     99     }
    100 
    101     /**
    102      * <p>
    103      * 根据 Wrapper 条件,查询全部记录
    104      * </p>
    105      *
    106      * @param queryWrapper 实体对象封装操作类(可以为 null)
    107      */
    108     @Test
    109     public void selectMaps() {
    110         QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    111         queryWrapper.isNotNull("name");
    112         List<Map<String, Object>> maps = mapper.selectMaps(queryWrapper);
    113         for (Map<String, Object> map : maps) {
    114             System.out.println(map);
    115         }
    116     }
    117 
    118     /**
    119      * 打印结果
    120      * {name=lqf, id=1046282328366391406, age=12, email=lqf@163.com, status=false}
    121      * {name=lqf, id=1046282328366391407, age=12, email=lqf@163.com, status=false}
    122      * {name=lqf, id=1046282328366391408, age=12, email=lqf@163.com, status=false}
    123      * {name=lqf, id=1046282328366391409, age=12, email=lqf@163.com, status=false}
    124      * {name=lqf, id=1046282328366391410, age=12, email=lqf@163.com, status=false}
    125      * {name=lqf, id=1046282328366391411, age=12, email=lqf@163.com, status=false}
    126      * {name=lqf, id=1046282328366391412, age=12, email=lqf@163.com, status=false}
    127      * {name=lqf, id=1046282328366391413, age=12, email=lqf@163.com, status=false}
    128      * {name=lqf, id=1046282328366391414, age=12, email=lqf@163.com, status=false}
    129      * {name=lqf, id=1046282328366391415, age=12, email=lqf@163.com, status=false}
    130      * {name=lqf, id=1046282328366391416, age=12, email=lqf@163.com, status=false}
    131      * {name=lqf, id=1046282328366391417, age=12, email=lqf@163.com, status=false}
    132      * {name=lqf, id=1046282328366391418, age=12, email=lqf@163.com, status=false}
    133      * json类型的键值对模式
    134      */
    135 
    136     /**
    137      * <p>
    138      * 根据 entity 条件,查询全部记录(并翻页)
    139      * </p>
    140      *
    141      * @param page         分页查询条件(可以为 RowBounds.DEFAULT)
    142      * @param queryWrapper 实体对象封装操作类(可以为 null)
    143      */
    144     @Test
    145     public void selectPage() {
    146         Page<User> page = new Page<>(1, 5);
    147         QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    148 
    149         IPage<User> userIPage = mapper.selectPage(page, queryWrapper);
    150         System.out.println(userIPage);
    151     }
    152 
    153     /**
    154      * 打印结果
    155      * ==>  Preparing: SELECT COUNT(1) FROM user
    156      * ==> Parameters:
    157      * <==    Columns: COUNT(1)
    158      * <==        Row: 100
    159      * ==>  Preparing: SELECT id,name,age,email,status FROM user LIMIT 0,5
    160      * ==> Parameters:
    161      * <==    Columns: id, name, age, email, status
    162      * <==        Row: 1046282328366391319, lqf, 12, lqf@163.com, 0
    163      * <==        Row: 1046282328366391320, lqf, 12, lqf@163.com, 0
    164      * <==        Row: 1046282328366391321, lqf, 12, lqf@163.com, 0
    165      * <==        Row: 1046282328366391322, lqf, 12, lqf@163.com, 0
    166      * <==        Row: 1046282328366391323, lqf, 12, lqf@163.com, 0
    167      * <==      Total: 5
    168      *
    169      *
    170      * 这里需要在项目中加入分页插件
    171      *   @Bean
    172      *     public PaginationInterceptor paginationInterceptor() {
    173      *         return new PaginationInterceptor();
    174      *     }
    175      */
    176 
    177 
    178     /**
    179      * <p>
    180      * 根据 Wrapper 条件,查询全部记录(并翻页)
    181      * </p>
    182      *
    183      * @param page         分页查询条件
    184      * @param queryWrapper 实体对象封装操作类
    185      */
    186     @Test
    187     public void selectMapsPage() {
    188         Page<User> page = new Page<>(1, 5);
    189         QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    190 
    191         IPage<Map<String, Object>> mapIPage = mapper.selectMapsPage(page, queryWrapper);
    192         System.out.println(mapIPage);
    193     }
    194 
    195     /**
    196      * 和上个分页同理只是返回类型不同
    197      */
    198 
    199 
    200     /**
    201      * <p>
    202      * 根据 whereEntity 条件,更新记录
    203      * </p>
    204      *
    205      * @param entity        实体对象 (set 条件值,不能为 null)
    206      * @param updateWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)
    207      */
    208     @Test
    209     public void update() {
    210 
    211         //修改值
    212         User user = new User();
    213         user.setStatus(true);
    214         user.setName("zhangsan");
    215 
    216         //修改条件s
    217         UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
    218         userUpdateWrapper.eq("name", "lqf");
    219 
    220         int update = mapper.update(user, userUpdateWrapper);
    221 
    222         System.out.println(update);
    223     }
    224 
    225     /**
    226      * 打印结果
    227      * ==>  Preparing: UPDATE user SET name=?, status=? WHERE name = ?
    228      * ==> Parameters: zhangsan(String), true(Boolean), lqf(String)
    229      * <==    Updates: 100
    230      * Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@56a4f272]
    231      * 100
    232      * 2018-10-02 15:08:03.928  INFO 7972 --- [       Thread-2] o.s.w.c.s.GenericWebApplicationContext   : Closing org.springframework.web.context.support.GenericWebApplicationContext@37313c65: startup date [Tue Oct 02 15:08:00 CST 2018]; root of context hierarchy
    233      * 2018-10-02 15:08:03.937  INFO 7972 --- [       Thread-2] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
    234      * 2018-10-02 15:08:04.053  INFO 7972 --- [       Thread-2] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.
    235      *
    236      * Process finished with exit code 0
    237      */
    238 
    239 }
    条件构造器

    上方代码对通过构造器条件进行的查询、删除、修改进行是演示,构造器方法没有做过多演示,但是所有的构造器方法同理使用,如果还有不会用的点开看官方文档查看并按照上方例子使用即可。

  • 相关阅读:
    css换行和超出隐藏
    [转]ObjectARX SDK 下载全集
    ObjectARX延时动画之定时器简单示意
    ObjectARX延时动画效果简单示意
    ObjectARX选择集快还是遍历块表记录获取实体objectid快?
    ObjectARX插入属性块简单例子
    AcDbRegion面域交集布尔运算简单实例
    wblockCloneObjects从块定义写块到外部文件
    ObjectARX 创建AcDbLeader引线附着块对象实例
    ObjectARX JIG简单示意,实现正交例子
  • 原文地址:https://www.cnblogs.com/2393920029-qq/p/13489644.html
Copyright © 2020-2023  润新知