Mybatis Plus为咱们提供了以下的一些条件构造器,咱们能够利用它们实现查询条件、删除条件、更新条件的构造。html
条件构造器用于给以下的Mapper方法传参,一般状况下:vue
public interface BaseMapper<T> extends Mapper<T> { int delete(@Param("ew") Wrapper<T> wrapper); int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper); T selectOne(@Param("ew") Wrapper<T> queryWrapper); Integer selectCount(@Param("ew") Wrapper<T> queryWrapper); List<T> selectList(@Param("ew") Wrapper<T> queryWrapper); List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> queryWrapper); List<Object> selectObjs(@Param("ew") Wrapper<T> queryWrapper); IPage<T> selectPage(IPage<T> page, @Param("ew") Wrapper<T> queryWrapper); IPage<Map<String, Object>> selectMapsPage(IPage<T> page, @Param("ew") Wrapper<T> queryWrapper); }
String name = "字母"; //name不为空 String email = ""; //email为空串 QueryWrapper<User> query = new QueryWrapper<>(); query.like(StringUtils.isNotEmpty(name), "name", name) //由于email为空串,该条件未生效 .like(StringUtils.isNotEmpty(email), "email", email); List<User> list = userMapper.selectList(query); list.forEach(System.out::println);
email=“”
,因此.like(StringUtils.isNotEmpty(email), "email", email);
的条件不成立。SELECT id,name,age,email,create_time FROM user WHERE name LIKE %字母%
//构造条件 QueryWrapper<User> query = new QueryWrapper<>(); Map<String, Object> params = new HashMap<>(); params.put("name", "字母哥"); params.put("age", 18); params.put("email", null); // query.allEq(params,false); query.allEq((k, v) -> !k.equals("name"), params, false); List<User> list = userMapper.selectList(query); list.forEach(System.out::println);
params.put("name", "字母哥");
这个查询条件被过滤掉params.put("email", null);
这个查询条件被过滤掉最终执行的SQL以下:spring
SELECT id,name,age,email,create_time FROM user WHERE age = ?
请参考:官方文档:条件构造器后端
// LambdaQueryWrapper<User> lambdaQ = new QueryWrapper<User>().lambda(); // LambdaQueryWrapper<User> lambdaQ = new LambdaQueryWrapper<>(); LambdaQueryWrapper<User> lambdaQ = Wrappers.lambdaQuery(); lambdaQ.like(User::getName, "字母") .lt(User::getAge, 18); List<User> list = userMapper.selectList(lambdaQ);
lambda条件构造器,最终执行SQL以下:springboot
SELECT id,name,age,email,create_time FROM user WHERE name LIKE %字母% AND age < 18
List<User> list = new LambdaQueryChainWrapper<User>(userMapper) .likeRight(User::getName, "字母") .and(q -> q.lt(User::getAge, 40) .or() .isNotNull(User::getEmail) ) .list(); list.forEach(System.out::println);
lambda条件构造器,最终执行SQL以下:mybatis
SELECT id,name,age,email,create_time FROM user WHERE name LIKE '字母%' AND ( age < 18 OR email IS NOT NULL )
以为对您有帮助的话,帮我点赞、分享!您的支持是我不竭的创做动力! 。另外,笔者最近一段时间输出了以下的精品内容,期待您的关注。app