MyBatis-Plus的条件构造器是一个强大的查询条件构建工具,它允许开发者以面向对象的方式构建SQL查询条件,而不需要手动编写SQL语句。通过条件构造器,开发者可以使用链式调用的方式构建各种条件,如等于、不等于、大于、小于、模糊查询等,从而简化了查询条件的编写过程。
条件构造器
我们写一些复杂的sql就可以使用它来替代!
isNotNull() & ge()
isNotNull()不为空 ge()大于等于
查询name不为空的用户,并且邮箱不为空的用户,年龄大于等于12
@Test
void contextLoads() {
//查询name不为空的用户,并且邮箱不为空的用户,年龄大于等于12
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.isNotNull("name")
.isNotNull("email")
.ge("age", 12);
userMapper.selectList(wrapper).forEach(System.out::println);//和我们刚才学习的map对比一下!
}
eq()
eq()等于
查询名字为kylin年龄为3岁
@Test
void test2() {
//查询名字为kylin
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name", "kylin").eq("age",3);
User user = userMapper.selectOne(wrapper);//查询一个数据。查询多个使用list或者map
System.out.println(user);
}
between()
between()在什么什么之间 [x,y]
查询年龄在20-30岁之间的用户
@Test
void test3() {
//查询年龄在20-30岁之间的用户
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.between("age", 20, 30);//年龄 区间
Integer count = userMapper.selectCount(wrapper);//返回个数
System.out.println(count);
}
notLike() & likeRight() & likeLeft()
notLike()不包含 likeRight相当于sql语句中的like X%也就是以X开头 likeLeft相当于sql语句中的like %X也就是以X结尾
查询名字中不包含e和email以t开头的用户
// 模糊查询 查询名字中不包含e和email以t开头的用户
@Test
void test4() {
// 查询年龄在 20 ~ 30 岁之间的用户
QueryWrapper<User> wrapper = new QueryWrapper<>();
// 左和右 t%
wrapper
.notLike("name", "e")
.likeRight("email", "t");//t%
List<Map<String, Object>> maps = userMapper.selectMaps(wrapper);
maps.forEach(System.out::println);
}
inSql()
inSql()子查询
查询id小于3的用户数据
@Test
void test5() {
QueryWrapper<User> wrapper = new QueryWrapper<>();
// id 在子查询中查出来
wrapper.inSql("id", "select id from user where id<3");
List<Object> objects = userMapper.selectObjs(wrapper);
objects.forEach(System.out::println);
}
orderByAsc() & orderByDesc()
orderByAsc()升序排序orderByDesc()降序排序
查询用户塑胶通过id升序进行排序
更多的例子可以查看官网文档,MyBatis-Plus是国人开发的,其开发文档是中文。非常适合我们学习,并且适合新手通过查看文档进行学习,提升我们的文档自学能力。毕竟当今目前先进的技术,大都是英文的,我们可以先学习中文的官方文档,培养我们的思维,有助于我们后续的能力提升和进步。
当然看到这里你可能问?为什么MyBatis-Plus没有inner join、left join、right join这种多表查询的API。事实上,的确没有。而且我们也不推荐使用API去实现多表查询的SQL,因为这样其实代码更加复杂耗时,也有人封装过这种框架。但事实证明并不实用,不仅费事,而且效率、安全、可靠性都存在问题。所以涉及多表的操作,我们推荐使用手写SQL。MyBatis-Plus这一类框架,只是简化我们涉及单表的操作。