条件构造器
MP通过EntityWrapper(简称EW,MP封装的一个查询条件构造器 )或者Condition(与EW类似)来让用户自由的构建查询条件,简便快捷,没有额外的负担。
条件参数
https://baomidou.com/guide/wrapper.html#abstractwrapper
allEq ,eq,ne,gt,ge,lt ,le
between, notBetween,like,
notLike:
notLike("name", "王")--->name not like '%王%'
likeLeft:
likeLeft("name", "王")--->name like '%王'
likeRight:
likeRight("name", "王")--->name like '王%'
isNull, isNotNull
in, notIn
inSql
inSql("id", "select id from table where id < 3")--->id in (select id from table where id < 3)
notInSql
notInSql("id", "select id from table where id < 3")--->id not in (select id from table where id < 3)
groupBy,orderByAsc,orderByDesc,orderBy
having
func
or ,and
nested
apply
last
exists , notExists
查找
@Test
public void testEntiytWrapperSelect1() {
EntityWrapper<Employee> wrapper = new EntityWrapper<Employee>();
wrapper.between("age", 10, 35).eq("gender", 1).eq("last_name", "Jerry");
List<Employee> employees = employeeMapper.selectPage(new Page<Employee>(1,2), wrapper);
employees.forEach(System.out::println);
}
@Test
public void testEntiytWrapperSelect2() {
EntityWrapper<Employee> wrapper = new EntityWrapper<Employee>();
//SQL: (gender = ? AND last_name LIKE ? OR email LIKE ?)
wrapper.eq("gender", 0).like("last_name", "J").or().like("email", "gmail");
List<Employee> employees = employeeMapper.selectList(wrapper);
employees.forEach(System.out::println);
}
@Test
public void testEntiytWrapperSelect3() {
EntityWrapper<Employee> wrapper = new EntityWrapper<Employee>();
//SQL: (gender = ? AND last_name LIKE ?) OR (email LIKE ?)
wrapper.eq("gender", 0).like("last_name", "J").orNew().like("email", "gmail");
List<Employee> employees = employeeMapper.selectList(wrapper);
employees.forEach(System.out::println);
}
更新
@Test
public void testEntityWrapperUpdate1() {
Employee employee = new Employee();
employee.setLastName("KhanKing");
employee.setAge(999);
EntityWrapper<Employee> wrapper = new EntityWrapper<Employee>();
wrapper.eq("last_name", "Khan").eq("age", 8);
employeeMapper.update(employee, wrapper);
}
删除
@Test
public void testEntityWrapperDelete1() {
EntityWrapper<Employee> wrapper = new EntityWrapper<Employee>();
wrapper.eq("last_name", "Khan").eq("age", 88);
employeeMapper.delete(wrapper);
}
last以及排序
@Test
public void testEntitySelect1() {
List<Employee> list = employeeMapper.selectList(
new EntityWrapper<Employee>()
.eq("gender", 0)
.orderBy("age")
.last("desc") //默认是升序
);
list.forEach(System.out::println);
}
查找降序
@Test
public void testEntitySelect2() {
List<Employee> list = employeeMapper.selectList(
new EntityWrapper<Employee>()
.eq("gender", 0)
.orderDesc(Arrays.asList(new String[]{"age"}))
);
list.forEach(System.out::println);
}
使用Condition
@Test
public void testEntityWrapperSelectByCondition1() {
List<Employee> emps = employeeMapper.selectPage(
new Page<Employee>(1,2),
Condition.create()
.between("age", 10, 55)
.eq("gender", 1)
.like("last_name", "i")
);
emps.forEach(System.out::println);
}