MyBatis-Plus 用起来真的很舒服( 四 )


删除最后来看看删除操作:
@Autowiredprivate EmployeeMapper employeeMapper;@Testvoid contextLoads() {    employeeMapper.deleteById(10);}

MyBatis-Plus 用起来真的很舒服

文章插图
 
根据id删除员工信息 。然后是deleteByMap方法:
@Autowiredprivate EmployeeMapper employeeMapper;@Testvoid contextLoads() {    Map<String,Object> map = new HashMap<>();    map.put("last_name","aaa");    employeeMapper.deleteByMap(map);}
MyBatis-Plus 用起来真的很舒服

文章插图
 
该方法通过Map集合封装的条件进行删除,Map中的键也为数据表的列名 。deleteBatchIds方法:
@Autowiredprivate EmployeeMapper employeeMapper;@Testvoid contextLoads() {    employeeMapper.deleteBatchIds(Arrays.asList(1,2,3));}
MyBatis-Plus 用起来真的很舒服

文章插图
 
该方法是批量删除方法,会删除集合中的所有id对应的员工信息 。
条件构造器刚才我们体验了MyBatisPlus的增删改查操作,不过这都是一些最基本的操作方法,对于查询,MyBatis提供了一个条件构造器——QueryWrapper,使用它能够自由构建查询条件,简单便捷,能够极大提升开发效率 。
现在有一个需求,查询年龄在10~30岁之间的员工信息,并分页显示:
@Testvoid contextLoads() {    QueryWrapper<Employee> wrapper = new QueryWrapper<>();    wrapper.between("age", 10, 30);    Page<Employee> page = employeeMapper.selectPage(new Page<>(1, 2), wrapper);    List<Employee> emps = page.getRecords();    for (Employee emp : emps) {        System.out.println(emp);    }}
MyBatis-Plus 用起来真的很舒服

文章插图
 
首先构造QueryWrapper对象,通过between拼接sql,注意其中的参数必须是表字段名,然后通过selectPage方法进行分页查询,分页规则为 new Page<>(1,2) ,即:按每页两行数据进行分页,显示第一页,最后从Page对象中取出数据即可,不要忘记注册一下分页拦截器:
@Configurationpublic class MyBatisConfig {    @Bean    public PaginationInterceptor paginationInterceptor() {        return new PaginationInterceptor();    }}
MyBatis-Plus 用起来真的很舒服

文章插图
 
执行结果:
==>  Preparing: SELECT COUNT(1) FROM tbl_employee WHERE (age BETWEEN ? AND ?) ==> Parameters: 10(Integer), 30(Integer)<==    Columns: COUNT(1)<==        Row: 5==>  Preparing: SELECT id,last_name,email,gender,age FROM tbl_employee WHERE (age BETWEEN ? AND ?) LIMIT ?,? ==> Parameters: 10(Integer), 30(Integer), 0(Long), 2(Long)<==    Columns: id, last_name, email, gender, age<==        Row: 1, tom, tom@qq.com, 1, 20<==        Row: 2, jack, jack@qq.com, 1, 21<==      Total: 2Employee(id=1, lastName=tom, email=tom@qq.com, gender=1, age=20, salary=null)Employee(id=2, lastName=jack, email=jack@qq.com, gender=1, age=21, salary=null)
MyBatis-Plus 用起来真的很舒服

文章插图
 
若是想要查询年龄在10~30岁且性别为男的员工信息,该怎么实现呢?
@Testvoid contextLoads() {    QueryWrapper<Employee> wrapper = new QueryWrapper<Employee>()        .between("age", 10, 30)        .eq("gender",1);    Page<Employee> page = employeeMapper.selectPage(new Page<>(1, 2), wrapper);    List<Employee> emps = page.getRecords();    for (Employee emp : emps) {        System.out.println(emp);    }}


推荐阅读