前面提到一些复杂的sql无法直接调用MyBatis-Plus提供的方法,需要借助条件构造器wapper,下面编写几个测试类,主要感受一下wapper的强大。
环境准备:
public class User {@TableId(value = "id", type = IdType.ID_WORKER)private Long id;private String name;private String pwd;private Integer age;@TableLogicprivate Integer deleted;@TableField(fill = FieldFill.INSERT)private Date gmtCreate;@TableField(fill = FieldFill.INSERT_UPDATE)private Date gmtModified;@Versionprivate Integer version;//构造器和setXxx、getXxx}
测试一
@Testpublic void test1() {//查询name、age都不为null,而且年龄大于30岁的用户QueryWrapper<User> wrapper = new QueryWrapper<>();wrapper.isNotNull("name").isNotNull("age").ge("age", 30);//返回List集合-->selectListList<User> list = userMapper.selectList(wrapper);}
测试二
@Testpublic void test2() {//查询name="阿离"的用户QueryWrapper<User> wrapper = new QueryWrapper<>();wrapper.eq("name", "阿离");//返回一个对象-->selectOneUser user = userMapper.selectOne(wrapper);}
测试三
@Testpublic void test3() {//查询年龄位于[18,25]的用户QueryWrapper<User> wrapper = new QueryWrapper<>();wrapper.between("age",18,25);//返回数据中符合条件的数据量-->selectCountInteger count = userMapper.selectCount(wrapper);}
测试四
@Testpublic void test4() {//各种模糊查询QueryWrapper<User> wrapper = new QueryWrapper<>();wrapper.notLike("name", "张三").likeRight("name", "李").likeLeft("name", "离").like("name", "阿离");//返回List<Map<String, Object>>-->selectMapsList<Map<String, Object>> mapList = userMapper.selectMaps(wrapper);}
测试五
@Test
public void test5() {
//子查询
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.inSql("id", "select id from user where id<1422592632552742914");
//返回List<Object>-->selectObjs
List<Object> list = userMapper.selectObjs(wrapper);
}
测试六
@Test
public void test6() {
//排序
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.orderByAsc("id", "name");
List<User> list = userMapper.selectList(wrapper);
}

上面这些测试案例只是一些常用的条件构造,全面的条件构造参考官方文档。
