Mybatis-Plus查询中如何排除标识字段

 更新时间:2021年06月21日 11:27:41   作者:DT辰白  
这篇文章主要介绍了Mybatis-Plus查询中排除标识字段的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

一、查询中排除标识字段

1.1 测试查询

@Test
public void findAllTest() {
    List<User> userList = userMapper.selectList(null);
    userList.forEach(System.out::println);
}

1.2 实体类字段不添加@TableField注解

//逻辑删除注解(0 未删除 1 已删除)
@TableLogic
/*@TableField(select = false)*/
private Boolean isDeleted;

在没有加注解的情况下,is_deleted在查询中存在

Preparing: SELECT id,name,email,age,status,is_deleted,version FROM user WHERE is_deleted=0

1.3 实体类字段添加@TableField注解

//逻辑删除注解(0 未删除 1 已删除)
@TableLogic
@TableField(select = false)
private Boolean isDeleted;

在加注解的情况下,is_deleted在查询中不存在

Preparing: SELECT id,name,email,age,status,version FROM user WHERE is_deleted=0

二、查询中排除标识字段,自定义方法时需要注意

比如:自定义,查询年龄大于xxx岁的,返回list集合

@Test
public void mySelectTest() {
    // 查询年龄大于xxx岁的
    List<User> userList = userMapper.mySelectList(Wrappers.<User>lambdaQuery()
            .gt(User::getAge,1));
    userList.forEach(System.out::println);
}
@Select("select * from user ${ew.customSqlSegment}")
List<User> mySelectList(@Param(Constants.WRAPPER) Wrapper<User> wrapper);

此时查看控制台打印结果:

在这里插入图片描述

@TableField(select = false)该注解对于自定义方法查询失效了,怎么做呢?加限定条件

 // 查询年龄大于xxx岁的
 List<User> userList = userMapper.mySelectList(Wrappers.<User>lambdaQuery()
          .gt(User::getAge,1).eq(User::getIsDeleted,0));

在这里插入图片描述

三、@TableField注解其他用法

Mybatis-plus使用注解 @TableField(exist = false) 注明非数据库字段属性

@TableField(exist = false) 

注解加载bean属性上,表示当前属性不是数据库的字段,但在项目中必须使用,这样在新增等使用bean的时候,mybatis-plus就会忽略这个,不会报错

Mybatis-Plus排除自定义字段不查询

需求原因

由于数据库表设计为一张为组表

一张为对应组下的参数表

在查询数据时想要在查询组表的同时吧对应组下的数据页同时查出来

所以在组实体类下增加了一个对应的参数来接受对应的组数据

在这里插入图片描述

错误截图

在这里插入图片描述

错误分析

根据查询语句来看

条件查询默认把所有字段都查出来了

但由于自定义的字段在数据库中不存在,所以报错

尝试

这里最大的问题就是如何把自定义字段排除掉,在网上搜了一圈,

最后才在Mybatis-plus的官方文档里发现

@TableFiled有一个exist属性,是用来定义字段是否为数据库表字段的。。。。

在这里插入图片描述

在这里插入图片描述

于是把该属性加上

在这里插入图片描述

重新运行

在这里插入图片描述

完美解决!

结论

有问题下次先看官方文档吧,以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家

相关文章

  • Java 网络爬虫基础知识入门解析

    Java 网络爬虫基础知识入门解析

    这篇文章主要介绍了Java 网络爬虫基础知识入门解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Spring中获取Bean对象的三种注入方式与两种注入方法详解

    Spring中获取Bean对象的三种注入方式与两种注入方法详解

    平常的Java开发中程序员在某个类中需要依赖其它类的方法,下面这篇文章主要给大家介绍了关于Spring中获取Bean对象的三种注入方式与两种注入方法的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • Java嵌套类和内部类详解

    Java嵌套类和内部类详解

    这篇文章主要介绍了Java嵌套类和内部类详解,本文讲解了什么是嵌套类及内部类、静态嵌套类、在外部类中定义内部类、在方法中定义内部类、匿名内部类等内容,需要的朋友可以参考下
    2015-04-04
  • Spring与Web整合实例

    Spring与Web整合实例

    下面小编就为大家带来一篇Spring与Web整合实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • 详解Java如何优雅的实现字典翻译

    详解Java如何优雅的实现字典翻译

    当我们在Java应用程序中需要对字典属性进行转换返回给前端时,如何简单、方便、并且优雅的处理是一个重要问题。在本文中,我们将介绍如何使用Java中的序列化机制来优雅地实现字典值的翻译,从而简化开发
    2023-04-04
  • java双向循环链表的实现代码

    java双向循环链表的实现代码

    这篇文章介绍了java双向循环链表的实现代码,有需要的朋友可以参考一下
    2013-09-09
  • Java刷视频浏览量点赞量的实现代码

    Java刷视频浏览量点赞量的实现代码

    这篇文章主要介绍了Java刷视频浏览量点赞量的实现代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-04-04
  • Java 对 Cookie增删改查的实现示例

    Java 对 Cookie增删改查的实现示例

    这篇文章主要介绍了Java 对 Cookie增删改查的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • SpringMVC加载控制与Postmand的使用和Rest风格的引入及RestFul开发全面详解

    SpringMVC加载控制与Postmand的使用和Rest风格的引入及RestFul开发全面详解

    SpringMVC是一种基于Java,实现了Web MVC设计模式,请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将Web层进行职责解耦。基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,SpringMVC也是要简化我们日常Web开发
    2022-10-10
  • Java返回分页结果集的封装代码实例

    Java返回分页结果集的封装代码实例

    这篇文章主要介绍了java返回分页结果集的封装代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01

最新评论