文章目录
前言
一、EntityWrapper简介
1、MyBatisPlus是通过EntityWrapper(简称EW,MP封装的一个查询条件构造器)或者Condition(与EW类似)来让用户自由的构建查询条件,简单编辑、提高开发效率
2、实体包装器、主要用于处理SQL拼接、排序、实体参数查询等
3、注意:使用的是数据库字段、不是Java属性!
4、条件参数说明:
二、使用EntityWrapper的方式条件查询分页
/**
* 条件构造器查询
*/
@Test
public void testEntityWrapper(){
//我们要分页查询Employee表中、年龄在19-50之间、性别为男性且姓名为Tom的用户
// Preparing: SELECT id AS id,last_name AS lastName,email,gender,age FROM tbl_employee WHERE (age BETWEEN ? AND ? AND gender = ? AND last_name = ?)
List<Employee> employeeList= employeeMapper.selectPage(new Page<Employee>(1, 2),
new EntityWrapper<Employee>()
.between("age", 18, 50)
.eq("gender",1)
.eq("last_name", "Tom"));
System.out.println(employeeList);
}
三、带条件的查询
//查询性别女 并且名字带有老师或者邮箱中带有a
List<Employee> employees = employeeMapper.selectList(new EntityWrapper<Employee>()
.eq("gender", 0)
.like("last_name", "老师")
//.or()// SELECT id AS id,last_name AS lastName,email,gender,age FROM tbl_employee WHERE (gender = ? AND last_name LIKE ? OR email LIKE ?)
.orNew()//Preparing: SELECT id AS id,last_name AS lastName,email,gender,age FROM tbl_employee WHERE (gender = ? AND last_name LIKE ?) OR (email LIKE ?)
.like("email", "a")
);
System.out.println(employees);
四、带条件的修改
public class TestMp {
private ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
private EmployeeMapper employeeMapper = context.getBean("employeeMapper",EmployeeMapper.class);
@Test
public void entityWrapperUpdate(){
//修改名字为Tom年龄为44岁
Employee employee = new Employee();
employee.setLastName("TomA");
employee.setEmail("ffff5@qq.com");
Integer update = employeeMapper.update(employee, new EntityWrapper<Employee>()
.eq("last_name", "Tom")
.eq("age", 44)
);
//Preparing: UPDATE tbl_employee SET last_name=?, email=? WHERE (last_name = ? AND gender = ?)
System.out.println(update);
}
}
五、带条件的删除
@Test
public void entityWrapperDelete(){
// Preparing: DELETE FROM tbl_employee WHERE (id = ?)
Integer id = employeeMapper.delete(new EntityWrapper<Employee>()
.eq("id", 14));
}
六、使用Condition的方式条件查询并分页
@Test
public void testCondition(){
//查询性别女 并且名字带有老师或者邮箱中带有a
// SELECT id AS id,last_name AS lastName,email,gender,age FROM tbl_employee WHERE (gender = ? AND last_name LIKE ? OR email LIKE ?)
List<Employee> list = employeeMapper.selectPage(new Page<Employee>(1, 2), Condition.create()
.eq("gender", "女")
.like("last_name", "老师")
.or()
.like("email", "a")
);
System.out.println(list);
}
条件构造器小结
MP:EntityWrapper、Condition 条件构造器
Mybatis:MBG逆向工程,xxxExample–>criteria帮我封装条件的:QBC(query By Criteria)
Hibernate、通用Mapper 用到了QBC