SpringBoot中MyBatis-Plus 查询时排除某些字段的操作方法

 更新时间:2023年08月22日 10:01:29   作者:cloneme01  
这篇文章主要介绍了SpringBoot中MyBatis-Plus 查询时排除某些字段的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

SpringBoot中MyBatis-Plus 查询时排除某些字段的操作方法

写在前面

查询时部分字段不想给前端显示,怎么办?

(1)使用SELECT方法,排除字段"password"

@Override
public Page<UserDO> list(String name, Integer status, Integer pageNo, Integer limit, Long adminId) throws ServiceException {
    QueryWrapper<UserDO> wrapper = new QueryWrapper<>();
    if (!ObjectUtils.isEmpty(name)) {
        wrapper.like("name", name);
    }
    if (status != null) {
        wrapper.eq("status", status);
    }
    wrapper.select(UserDO.class, user -> !user.getColumn().equals("password") && !user.getColumn().equals("salary"));
    wrapper.orderByDesc("id");
    return userMapper.selectPage(Page.div(pageNo, limit, UserDO.class), wrapper);
}
// 生成的SQL语句为:
SELECT id,presenter,qq,wx,mail,name,id_no,id_card_front,id_card_back,phone,
salt,ali_mp_open_id,wx_mp_open_id,wx_h5_open_id,wx_app_open_id,nickname,
avatar_url,province,city,county,level,gmt_vip_expire,birthday,gender,gmt_last_login,
last_login_ip,status,gmt_update,gmt_create 
FROM mcsx_user ORDER BY id DESC LIMIT ?

(2)使用SELECT方法,只显示某些字段

@Override
public Page<UserDO> list(String name, Integer status, Integer pageNo, Integer limit, Long adminId) throws ServiceException {
    QueryWrapper<UserDO> wrapper = new QueryWrapper<>();
    if (!ObjectUtils.isEmpty(name)) {
        wrapper.like("name", name);
    }
    if (status != null) {
        wrapper.eq("status", status);
    }
    wrapper.select("id", "name", "level", "qq", "wx", "gmt_last_login");
    wrapper.orderByDesc("id");
    return userMapper.selectPage(Page.div(pageNo, limit, UserDO.class), wrapper);
}
// 生成的SQL语句为:
SELECT id,name,level,qq,wx,gmt_last_login FROM mcsx_user ORDER BY id DESC LIMIT ?

(3)使用@TableField(exist = false),排除某些字段

注:表示当前属性不是数据库的字段,但在项目中必须使用,这样的话在新增/查询等使用BEAN时,MyBatis-Plus都会忽略这个属性,所以推荐使用方法1和方法2。

@Data
@ApiEntity(description = "用户领域模型表")
@TableName("mcsx_user")
public class UserDO extends SuperDO {
    @ApiField(description = "推荐者")
    private Long presenter;
    @TableField(exist = false)
    @ApiField(description = "QQQQ号")
    private String qq;
    @TableField(exist = false)
    @ApiField(description = "微信号")
    private String wx;
    @ApiField(description = "电子邮箱")
    private String mail;
    @ApiField(description = "姓名")
    private String name;
    @ApiField(description = "身份证号")
    private String idNo;
    ...
}
// 生成的SQL语句为:
SELECT id,presenter,mail,name,id_no,id_card_front,id_card_back,phone,
salt,ali_mp_open_id,wx_mp_open_id,wx_h5_open_id,wx_app_open_id,nickname,
avatar_url,province,city,county,level,gmt_vip_expire,birthday,gender,gmt_last_login,
last_login_ip,status,gmt_update,gmt_create FROM mcsx_user ORDER BY id DESC LIMIT ?

mybatis-plus 查询 queryWrapper 排除指定字段

void fun() {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.lambda()
            .select(User.class, i -> !i.getProperty().equals("password")) //不查询password字段
            .eq(User::getAccount, "zhangSan");
    User user = userService.getOne(queryWrapper);
    System.out.println(user);
}

到此这篇关于SpringBoot中MyBatis-Plus 查询时排除某些字段的操作方法的文章就介绍到这了,更多相关MyBatis-Plus 查询时排除某些字段内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Java和Ehcache实现缓存策略的设置及示例代码

    使用Java和Ehcache实现缓存策略的设置及示例代码

    本文介绍了如何使用Java和Ehcache实现缓存策略,包括基本配置、缓存策略的设置以及示例代码,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • 方法参数属性params,@PathVariable和@RequestParam用法及区别

    方法参数属性params,@PathVariable和@RequestParam用法及区别

    这篇文章主要介绍了方法参数属性params,@PathVariable和@RequestParam用法及区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • 使用Java实现文件夹的遍历操作指南

    使用Java实现文件夹的遍历操作指南

    网上大多采用java递归的方式遍历文件夹下的文件,这里我不太喜欢递归的风格,这篇文章主要给大家介绍了关于使用Java实现文件夹的遍历操作的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • Spring Cloud Gateway 获取请求体(Request Body)的多种方法

    Spring Cloud Gateway 获取请求体(Request Body)的多种方法

    这篇文章主要介绍了Spring Cloud Gateway 获取请求体(Request Body)的多种方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • 使用MyBatis进行简单的更新与查询方式

    使用MyBatis进行简单的更新与查询方式

    这篇文章主要介绍了使用MyBatis进行简单的更新与查询方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Java逻辑运算符之&&、|| 与&、 |的区别及应用

    Java逻辑运算符之&&、|| 与&、 |的区别及应用

    这篇文章主要介绍了Java逻辑运算符之&&、|| 与&、 |的区别及应用的相关资料,分别是&&、|| 与&、 |,并探讨了它们在不同应用场景中的表现和优化效果,需要的朋友可以参考下
    2025-03-03
  • SpringBoot集成JmsTemplate(队列模式和主题模式)及xml和JavaConfig配置详解

    SpringBoot集成JmsTemplate(队列模式和主题模式)及xml和JavaConfig配置详解

    这篇文章主要介绍了SpringBoot集成JmsTemplate(队列模式和主题模式)及xml和JavaConfig配置详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Java Base64编码方法详解及实例解析

    Java Base64编码方法详解及实例解析

    Base64是一种用于将二进制数据转换成文本数据的编码方式,在本文中,我们介绍了Base64.encodeBase64String方法的用途和功能,它是Java语言中用于Base64编码的一个重要工具,需要的朋友可以参考下
    2023-09-09
  • Java如何将若干时间区间进行合并的方法步骤

    Java如何将若干时间区间进行合并的方法步骤

    这篇文章主要介绍了Java如何将若干时间区间进行合并的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Spring示例讲解条件注入方法

    Spring示例讲解条件注入方法

    Spring支持按照条件来注入某些特定的bean,这也是Spring Boot实现自动化配置的底层方法,文中的示例代码讲解详细,需要的可以参考一下
    2022-06-06

最新评论