MyBatisPlus之DQL编程控制

简介: MyBatisPlus之DQL编程控制

一、 条件查询方式(三种格式)

  • MyBatisPlus将书写复杂的SQL查询条件进行了封装,使用编程的形式完成查询条件的组合
  • 格式一:常规格式
//方式一:按条件查询
    QueryWrapper qw = new QueryWrapper();
    //小于3
    qw.lt("id",3);
    List userList = userDao.selectList(qw);
    System.out.println(userList);
  • 格式二:链式编程查询
QueryWrapper qw = new QueryWrapper();
    //小于3大于1
    qw.lt("id",3).gt("id",1);
    List userList = userDao.selectList(qw);
    System.out.println(userList);
  • 格式三:lambda格式(推荐)
//方式三:lambda格式按条件查询
    LambdaQueryWrapper<User> lwq = new LambdaQueryWrapper<>();
    //id为1到3之间
    lwq.lt(User::getId,3);
    lwq.gt(User::getId,1);
    //id为小于2或者大于3
    //链式查询
    lwq.lt(User::getId,2).or().gt(User::getId,3);
    List userList = userDao.selectList(lwq);
    System.out.println(userList);
  • 并且:
qw.lt("id",3).gt("id",1);
  • 或者:
lwq.lt(User::getId,2).or().gt(User::getId,3);

二、 条件查询 – – null值处理

2.1 if语句控制追加

UserQuery uq = new UserQuery();
    uq.setId(1);
    uq.setId2(3);
    //null判定
    LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
    if(null != uq.getId()) {
      lqw.lt(User::getId,uq.getId2());
    }
    if(null != uq.getId2()) {
      lqw.gt(User::getId,uq.getId());
    }
    List<User> userList = userDao.selectList(lqw);
    System.out.println(userList);

2.2 条件参数控制

//先判定第一个参数是否为true,如果为true,连接当前条件
    UserQuery uq = new UserQuery();
    uq.setId(1);
    uq.setId2(3);
    //null判定
    LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
    lqw.gt(null!=uq.getId2(), User::getId, uq.getId())
    lqw.lt(null!= uq.getId(),User::getId,uq.getId2());
    List<User> userList = userDao.selectList(lqw);
    System.out.println(userList);

2.3 条件参数控制(链式编程)

//先判定第一个参数是否为true,如果为true,连接当前条件
    UserQuery uq = new UserQuery();
    uq.setId(1);
    uq.setId2(3);
    //null判定
    LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
    lqw.gt(null!=uq.getId2(), User::getId, uq.getId())
          .lt(null!= uq.getId(),User::getId,uq.getId2());
    List<User> userList = userDao.selectList(lqw);
    System.out.println(userList);

三、查询投影

3.1 查询结果包含模型类中部分属性

LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
    lqw.select(User::getId,User::getAddr);
    List<User> userList = userDao.selectList(lqw);
    System.out.println(userList);

3.2 查询结果包含模型类中未定义的属性

QueryWrapper<User> qw = new QueryWrapper<>();
    qw.select("count(*) as count");
    qw.groupBy("gender");
    List<Map<String, Object>> userList = userDao.selectMaps(qw);
    System.out.println(userList);


相关文章
|
4月前
|
SQL Java 数据库连接
六万字最全总结Java数据库编程MyBatis(建议收藏)
六万字最全总结Java数据库编程MyBatis(建议收藏)
59 0
|
3月前
|
SQL XML Java
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
60 3
【测试开发】知识点-mybatis,主要使用方式:接口式编程
【测试开发】知识点-mybatis,主要使用方式:接口式编程
【测试开发】知识点-mybatis,主要使用方式:接口式编程
|
Oracle Java 关系型数据库
MyBatis插入100w数据使用编程式事务造成数据库被锁原因
MyBatis插入100w数据使用编程式事务造成数据库被锁原因
195 0
|
Java 数据库连接 数据库
Java编程:MyBatis读取数据库数据
Java编程:MyBatis读取数据库数据
236 0
Java编程:MyBatis读取数据库数据
|
SQL Java 数据库连接
[MyBatisPlus]DQL编程控制②(查询投影、查询条件)
目前我们在查询数据的时候,什么都没有做默认就是查询表中所有字段的内容,我们所说的查询投影即不查询所有字段,只查询出指定内容的数据。
[MyBatisPlus]DQL编程控制②(查询投影、查询条件)
|
SQL 前端开发 Java
[MyBatisPlus]DQL编程控制①(条件查询)
# 条件查询 结构还是前文的结构这里不再多赘述。 ## 解决日志冗长的问题 * 不过测试的时候,控制台打印的日志比较多,速度有点慢而且不利于查看运行结果,所以接下来我们把这个日志处理下
[MyBatisPlus]DQL编程控制①(条件查询)
|
XML SQL Java
【Mybatis】(二)接口式编程
【Mybatis】(二)接口式编程
148 0
|
SQL Java 关系型数据库
好好编程-物流项目04【Mybatis逆向工程】
本文开始数据库表结构和mybatis的逆向工程
好好编程-物流项目04【Mybatis逆向工程】