allbetgmaing下载:小书MybatisPlus第2篇-条件组织器的应用及总结

admin 3个月前 (07-07) 科技 34 0

一、条件组织器Wrapper

mybatis Plus为我们提供了如下的一些条件组织器,我们可以行使它们实现查询条件、删除条件、更新条件的组织。

条件组织器用于给如下的Mapper方式传参,通常情况下:

  • updateWrapper用于给update方式传条件参数
  • queryWrapper用于给delete和select方式传参
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);
}

举例一:like 条件组织

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);
  • QueryWrapper是查询条件组织器,like是一种条件组织函数,另有许多的条件组织函数。请参考:条件组织器

  • 险些所有的条件组织函数,都提供了condition参数实现动态SQL。也就是参数判断是否返回true,若是返回false,该条件不成立。如email=“”,以是.like(StringUtils.isNotEmpty(email), "email", email); 的条件不成立。

  • 以是最终的执行SQL,如下(只有name LIKE条件,没有email LIKE 条件):

SELECT id,name,age,email,create_time 
FROM user 
WHERE name LIKE %字母%

举例二:allEq条件组织器

  • all示意所有
  • Eq是equal的缩写示意相等关系
//组织条件
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);
  • 第一个参数是过滤器(可选参数),lambda表达式示意(k, v) -> !k.equals("name"),参数的Key不能是name,以是params.put("name", "字母哥");这个查询条件被过滤掉
  • 第二个参数示意传入所有的params查询参数
  • 第三个参数(可选参数),示意若是值为null是否按IS NULL查询,false则忽略null列的查询,以是params.put("email", null);这个查询条件被过滤掉

最终执行的SQL如下:

SELECT id,name,age,email,create_time 
FROM user 
WHERE age = ?

更多组织器使用方式总结

请参考:官方文档:条件组织器

二、lambda条件组织器

举例一:

// 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如下:

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如下:

SELECT id,name,age,email,create_time 
FROM user 
WHERE name LIKE '字母%'
AND ( age < 18 OR email IS NOT NULL )

迎接关注我的博客,内里有许多精品

  • 本文转载注明出处(必须带毗邻,不能只转文字):字母哥博客。

以为对您有辅助的话,帮我点赞、分享!您的支持是我不竭的创作动力! 。另外,笔者最近一段时间输出了如下的精品内容,期待您的关注。

  • 《手摸手教你学Spring Boot2.0》
  • 《Spring Security-JWT-OAuth2一本通》
  • 《实战前后端星散RBAC权限治理系统》
  • 《实战SpringCloud微服务铜到王者》
  • 《VUE深入浅出系列》
,

欧博手机版下载

欢迎进入欧博手机版下载(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。

皇冠体育声明:该文看法仅代表作者自己,与本平台无关。转载请注明:allbetgmaing下载:小书MybatisPlus第2篇-条件组织器的应用及总结

网友评论

  • (*)

最新评论

文章归档

站点信息

  • 文章总数:528
  • 页面总数:0
  • 分类总数:8
  • 标签总数:995
  • 评论总数:161
  • 浏览总数:5214