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


在这里插入图片描述

个人主页: 叶落闲庭
我的专栏:
c语言
数据结构
javaEE
操作系统

石可破也,而不可夺坚;丹可磨也,而不可夺赤。


MyBatisPlus

  • 一、 查询条件设置
  • 二、 映射匹配兼容性
    • 2.1 字段映射与表名映射
    • 2.2 编码中出现了数据库中未出现的属性
    • 2.3 采用默认查询开放了更多的字段查看权限
    • 2.4 表名映射设置
  • 三、 id生成策略
    • 3.1 id生成策略控制
    • 3.2 id生成策略全局配置
    • 3.3 表名前缀全局配置
    • 3.4 全局配置(综合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);
	}

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

你可能感兴趣的:(java,spring,boot,mybatis)