/**
* 1.传递的参数如果是实体类
* <p>
* 注:这种情况传递过来的参数是等值的也就是=
* 如果不想等值,例如:like '条件'
* 在实体类中,需要处理属性的上面添加@TableField(condition ="%s<#{%s}")
* <p>
* 里面的condition,可以采用已经有的栗子,如果没有符合你需求的,
* 可以参考SqlCondition(比较条件常量定义类)它的形式,仿写除符合自己需求的condition
* <p>
* 例如:age 小于 条件
* age < '传过来的条件'
*
* @TableField(condition ="%s<,#{%s}")
* age
*/
@Test
public void selectByWrapperEntity() {
User whereUser = new User();
whereUser.setName("刘雨红");
whereUser.setAge(32);
QueryWrapper<User> queryWrapper = new QueryWrapper<User>(whereUser);
List<User> userList = userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
}
/*
sql形式:SELECT id,name,age,email,manager_id,create_time FROM user WHERE name=? AND age=?
不等值的sql:SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE CONCAT('%',?,'%') AND age<?
*/
/**
* 2.传递的参数如果是实体类和参数条件同时存在,这种情况互不影响,条件都会拼接在where后边
* <p>
* 注意:不要重复了
*/
@Test
public void selectByWrapperEntity2() {
User whereUser = new User();
whereUser.setName("刘雨红");
whereUser.setAge(32);
QueryWrapper<User> queryWrapper = new QueryWrapper<>(whereUser);
queryWrapper.like("name", "雨").lt("age", 40);
List<User> userList = userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
}
/*
sql形式:SELECT id,name,age,email,manager_id,create_time FROM user
WHERE name=? AND age=? AND name LIKE ? AND age < ?
*/
@Data
public class User {
// 主键
private Long id;
//姓名
@TableField(condition = SqlCondition.LIKE)
private String name;
//年龄
@TableField(condition ="%s<#{%s}")
private Integer age;
//邮箱
private String email;
// 上级id
private Long manager_id;
//创建时间
private LocalDateTime createTime;
}