🐌个人主页: 🐌 叶落闲庭
💨我的专栏:💨
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);
}