MyBatisPlus查询条件设置、映射匹配兼容性、id生成策略、多数据操作

简介: MyBatisPlus查询条件设置、映射匹配兼容性、id生成策略、多数据操作

一、 查询条件设置

查询条件

  • 范围匹配(>、= 、between)
  • 模糊匹配(like)
  • 空判定(null)
  • 包含性匹配(in)
  • 分组(group)
  • 排序(order)
  • 用户登录
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
    //等同于"="
    lqw.eq(User::getUsername,"张三").eq(User::getPassword,123);
    List<User> selectList = userDao.selectList(lqw);
    System.out.println(selectList);
  • 购物设定价格区间、户籍设定年龄区间(le ge匹配或者between匹配)
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
    //范围查询lt le gt ge eq between
    lqw.between(User::getId,1,3);
    User user = userDao.selectOne(lqw);
    System.out.println(user);
  • 查信息、搜索新闻(非全文检索版:like匹配)
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
    //模糊匹配 like
    lqw.like(User::getUsername,"张");
    List<User> userList = userDao.selectList(lqw);
    System.out.println(userList);
  • 统计报表(分组查询聚合函数)
QueryWrapper<User> qw = new QueryWrapper<>();
    qw.select("count(*) as count");
    qw.groupBy("gender");
    LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
    List<User> userList = userDao.selectList(lqw);
    System.out.println(userList);

二、 映射匹配兼容性

2.1 字段映射与表名映射

  • 名称:@TableFiled
  • 类型:属性注解
  • 位置:模型类属性定义上方
  • 作用:设置当前属性对应的数据库表中的字段关系
  • 范例:
public class User {
    private Integer id;
    @TableField(value = "username")
    private String userName;
    @TableField(value = "password")
    private String passWord;
    private String gender;
    private String addr;
}
  • 相关属性:
  • value(默认):设置数据库表字段名称

2.2 编码中出现了数据库中未出现的属性

  • exist:设置属性在数据库表字段中是否存在,默认为true,此属性无法与value合并使用。
public class User {
    private Integer id;
    @TableField(value = "username")
    private String userName;
    @TableField(value = "password")
    private String passWord;
    private String gender;
    private String addr;
    @TableField(exist = false)
    private Integer online;
}

2.3 采用默认查询开放了更多的字段查看权限

  • select:设置属性是否参与查询,此属性与select()映射匹配不冲突
public class User {
    private Integer id;
    @TableField(value = "username")
    private String userName;
    @TableField(value = "password",select = false)
    private String passWord;
    private String gender;
    private String addr;
    @TableField(exist = false)
    private Integer online;
}

2.4 表名映射设置

  • 名称:@TableName
  • 类型:类注解
  • 位置:模型类属性定义上方
  • 作用:设置当前类对应与数据库表关系
  • 范例:
@TableName("tb_user")
public class User {
    private Integer id;
    @TableField(value = "username")
    private String userName;
    @TableField(value = "password")
    private String passWord;
    private String gender;
    private String addr;
}
  • 相关属性:
  • value:设置数据库表名称

三、 id生成策略

3.1 id生成策略控制

  • 不同的表应用不同的id生成策略
  • 日志:自增(1,2,3,4,5…)
  • 购物订单:特殊规则(FQ23948AK3843)
  • 外卖单:关联地区日期等信息(10 04 20200314 34 91)
  • 关系表:可省略id
  • 名称:@TableId
  • 类型:属性注解
  • 位置:模型类中用于表示主键的属性定义上方
  • 作用:设置当前类中主键属性的生成策略
  • 范例:
@TableName("tb_user")
public class User {
    private Integer id;
    @TableField(value = "username")
    private String userName;
    @TableField(value = "password")
    private String passWord;
    private String gender;
    private String addr;
}
  • 相关属性:
  • value:设置数据库主键名称
  • type:设置主键属性的生成策略,值参照IdType枚举值
  • AUTO(0):使用数据库id自增策略控制id生成
  • NONE(1):不设置id生成策略
  • INPUT(2):用户手工输入id
  • ASSIGN_ID(3):雪花算法生成id(可兼容数值型与字符串型)

  • ASSIGN_UUID(4):以UUID生成算法作为id生成策略

3.2 id生成策略全局配置

@TableName("tb_user")
public class User {
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
}

3.3 表名前缀全局配置

@TableName("tb_user")
public class User {
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
}

3.4 全局配置(综合id生成前缀和表名前缀)

# 设置统一id生成算法(为所有实体类设置)
mybatis-plus:
  global-config:
    banner: false
    db-config:
      id-type: assign_id
      # 设置数据库表名前缀
      table-prefix: tb_

四、多数据操作

  • 按照主键删除多条记录
void testDelete() {
    List<Long> list = new ArrayList<>();
    list.add(1698537145196683265L);
    list.add(1698539961168465921L);
    list.add(1698540047797653506L);
    userDao.deleteBatchIds(list);
  }
  • 根据主键查询多条记录
void testSelect() {
    List<Long> list = new ArrayList<>();
    list.add(1L);
    list.add(2L);
    list.add(3L);
    list.add(4L);
    userDao.selectBatchIds(list);
  }


相关文章
|
2天前
|
Java 关系型数据库 MySQL
Mybatis入门之在基于Springboot的框架下拿到MySQL中数据
Mybatis入门之在基于Springboot的框架下拿到MySQL中数据
12 4
|
2天前
|
SQL XML Java
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
18 3
|
5天前
|
SQL XML Java
【MyBatis】 MyBatis框架下的高效数据操作:深入理解增删查改(CRUD)
【MyBatis】 MyBatis框架下的高效数据操作:深入理解增删查改(CRUD)
9 1
|
6天前
|
Java 数据库连接 数据库
实现Spring Boot与MyBatis结合进行数据库历史数据的定时迁移
实现Spring Boot与MyBatis结合进行数据库历史数据的定时迁移
21 2
|
22天前
|
存储 Java 关系型数据库
留言板——增添功能(持久化存储数据,使用MyBatis)
留言板——增添功能(持久化存储数据,使用MyBatis)
24 4
|
22天前
|
Java 数据库连接 数据库
mybatis自制插件+注解实现数据脱敏
mybatis自制插件+注解实现数据脱敏
22 1
|
1月前
|
SQL 存储 算法
Mybatis-Plus- CRUD接口-主键策略-自动填充和乐观锁-分页-逻辑删除-条件构造器和常用接口
Mybatis-Plus- CRUD接口-主键策略-自动填充和乐观锁-分页-逻辑删除-条件构造器和常用接口
|
1月前
|
算法 Java 数据库连接
Spring+MySQL+数据结构+集合,Alibaba珍藏版mybatis手写文档
Spring+MySQL+数据结构+集合,Alibaba珍藏版mybatis手写文档
|
1月前
|
Java 数据库连接 Spring
Spring 整合mybatis
Spring 整合mybatis
29 2
|
6天前
|
Java 数据库连接 mybatis
在Spring Boot应用中集成MyBatis与MyBatis-Plus
在Spring Boot应用中集成MyBatis与MyBatis-Plus
38 5