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);
- }
封装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语句控制

②条件参数控制

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

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


问题一:表字段和编码属性设计不同步
问题二:编码中添加了数据库中未定义的属性
问题三:设定某个字段不参与查询,比如密码pwd字段
问题四:表名与编码开发设计不同步
前三个问题采用@TableField注解,问题四采用@TableName注解

不同的表,应用不同的id生成策略。
使用@TableId注解



删除操作的问题:业务数据从数据库中丢弃
逻辑删除:为数据设置是否可用状态字段,删除时设置字段为不可用状态,数据保留在数据库中。
具体使用@TableLogic注解
