MyBatisPlus入门篇2 - 条件查询、查询投影、查询条件、id生成策略、多记录操作、逻辑删除

目录

1.条件查询、多条件查询

MyBatisPlus将书写复杂的SQL查询条件进行了封装,使用编程的形式完成查询条件的组合。

复制代码
@Test
void testGetByCondition() {
    // 方式一:按条件查询
    QueryWrapper<User> qw = new QueryWrapper<User>();
    qw.lt("age", 20);
    List<User> userList = userDao.selectList(qw);
    System.out.println(userList);
    // 方式二:lambda格式
    QueryWrapper<User> qw2 = new QueryWrapper<User>();
    qw2.lambda().lt(User::getAge, 10);
    List<User> userList2 = userDao.selectList(qw2);
    System.out.println(userList2);
    // 方式三:lambda格式
    LambdaQueryWrapper<User> qw3 = new LambdaQueryWrapper<User>();
    qw3.lt(User::getAge, 10);
    List<User> userList3 = userDao.selectList(qw3);
    System.out.println(userList3);

    // 多条件查询
    LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
    // 10到30岁之间
    // lqw.lt(User::getAge, 30).gt(User::getAge, 10);
    // 小于10岁或大于30岁
    lqw.lt(User::getAge, 10).or().gt(User::getAge, 30);
    List<User> userList4 = userDao.selectList(lqw);
}

2.条件查询null判定

封装User模型的查询条件,这里age是具有上下限的,User类里面的age作为下限,这里的age2作为上限。

domain.query.UserQuery.java

复制代码
package com.example.domain.query;

import com.example.domain.User;
import lombok.Data;

@Data
public class UserQuery extends User {
    private int age2;
}

①if语句控制

②条件参数控制

3. 查询投影

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

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

4.查询条件

5.@TableField注解和@TableName注解

问题一:表字段和编码属性设计不同步

问题二:编码中添加了数据库中未定义的属性

问题三:设定某个字段不参与查询,比如密码pwd字段

问题四:表名与编码开发设计不同步

前三个问题采用**@TableField注解**,问题四采用**@TableName注解**

6.id生成策略控制

不同的表,应用不同的id生成策略。

  • 日志:自增(1,2,3....)
  • 购物订单:特殊规则(FQ23948c232e)
  • 外卖单:关联地区、日期等信息

使用@TableId注解

7. 多记录操作

8.逻辑删除

删除操作的问题:业务数据从数据库中丢弃

逻辑删除:为数据设置是否可用状态字段,删除时设置字段为不可用状态,数据保留在数据库中。

具体使用**@TableLogic**注解

相关推荐
摇滚侠12 分钟前
DBeaver 导入数据库 导入 SQL 文件 MySQL 备份恢复
java·数据库·mysql
keep one's resolveY36 分钟前
SpringBoot实现重试机制的四种方案
java·spring boot·后端
天空属于哈夫克31 小时前
企业微信API常见的错误和解决方案
java·数据库·企业微信
摇滚侠2 小时前
VMvare 虚拟机 Oracle19c 安装步骤,远程连接 Oracle19c,百度网盘安装包
java·oracle
梁萌2 小时前
idea报错找不到XX包的解决方法
java·intellij-idea·启动报错·缺少包
Agent产品评测局2 小时前
生产排期与MES/ERP系统打通,实操方法详解 —— 2026企业级智能体自动化选型与实战指南
java·运维·人工智能·ai·chatgpt·自动化
阿丰资源2 小时前
基于Spring Boot的电影城管理系统(直接运行)
java·spring boot·后端
呱牛do it3 小时前
企业级门户网站设计与实现:基于SpringBoot + Vue3的全栈解决方案(Day 8)
java
消失的旧时光-19433 小时前
Spring Boot 工程化进阶:统一返回 + 全局异常 + AOP 通用工具包
java·spring boot·后端·aop·自定义注解
NE_STOP4 小时前
Redis--发布订阅命令和Redis事务
java