MyBatis-Plus非表字段的三种处理方法小结

目录
  • MyBatis-Plus非表字段的处理方式
    • 1、使用关键字
    • 2、关键字static
    • 3、使用@TableField注解
  • mybatisplus 非数据库字段设置
    • 使用transient修饰

MyBatis-Plus非表字段的处理方式

1、使用关键字

transient修饰字段,不让这个字段参与序列化

    //备注
    private transient String remark;

2、关键字static

mybatis不会给static构建setter和getter,需要自己构建setter和getter方法,全类只有一份,没有每个对象都有。

    //备注
    private static String remark;
    public static void setRemark(String remark) {
        User.remark = remark;
    }
    public static String getRemark() {
        return remark;
    }

3、使用@TableField注解

把exist设置为false,可以保证每个对象都有。

 @TableField(exist = false)
    private String remark;

mybatisplus 非数据库字段设置

transient  Dept dept;

使用transient修饰

我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。

然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序列化,打个比方,如果一个用户有一些敏感信息(如密码,银行卡号等),为了安全起见,不希望在网络操作(主要涉及到序列化操作,本地序列化缓存也适用)中被传输,这些信息对应的变量就可以加上transient关键字。换句话说,这个字段的生命周期仅存于调用者的内存中而不会写到磁盘里持久化。

@TableField(exist = false)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Mybatis-Plus select不列出全部字段的方法

    mybatis-plus select查询语句默认是查全部字段,有两种方法可以指定要查询的字段 CREATE TABLE `user` ( `id` bigint(20) NOT NULL COMMENT '主键', `name` varchar(30) DEFAULT NULL COMMENT '姓名', `age` int(11) DEFAULT NULL COMMENT '年龄', `email` varchar(50) DEFAULT NULL COMMENT '邮箱', `manage

  • mybatis plus怎么忽略映射字段

    其实mybatis plus是比mybatis优秀的mybatis有的,他全有,它没的,或者不优秀的地方,mybatis plus全优秀,所以晚的总比早的好. 今天要说的是: 忽略字段问题,我被这个坑了好长时间,我开发项目呐有个需求是忽略数据库中字段,但是实体类还要有,我操,我目前的知识告诉我,@Transient这个是很好的选择,我操,我于是,开始搞,忘了说了,我的数据库中间件是mybatis plus,搞的我烦,先是看网上的,发现无论在字段上加还是在get方法上加,都不行,最后我配置文件又试

  • mybatis-plus 返回部分字段的解决方式

    mybatis-plus的代码生成器会在实体类中生成数据库所有字段,我们去用mapper接口查询时,会返回数据库所有的字段. 但有些字段不是我们想要的,比如:deleted,所以我们可以在不需要的字段上面加@JsonIgnore注解,返回给前端的时候会自动把这个字段去除. 补充知识:Mybatis-Plus只查询特定字段与创建子类方法 Mybatis-Plus查询特定字段例子: Seal seal = sealService.selectOne( new EntityWrapper<Seal>

  • 详解mybatis-plus实体类中字段和数据库中字段名不对应解决办法

    在使用mybatis或者mybatis-plus时候,有些时候会出现数据库的字段名和实体类的字段名不一致的情况,如果运行那么这个字段就会无法进行自动映射而报错.这里就以我的数据库name字段名和这里的实体类的u_name字段名为例. 解决办法有以下三种 方法一: 将数据库中的字段和实体类中的字段名修改成一样的名字 方法二: 如果是自定以mapper.xml文件中手写的sql查询语句,可以给字段起一个别名例如这里就可以写成select name as u_name from- 方法三: 使用注解@

  • MyBatis-Plus非表字段的三种处理方法小结

    目录 MyBatis-Plus非表字段的处理方式 1.使用关键字 2.关键字static 3.使用@TableField注解 mybatisplus 非数据库字段设置 使用transient修饰 MyBatis-Plus非表字段的处理方式 1.使用关键字 transient修饰字段,不让这个字段参与序列化 //备注 private transient String remark; 2.关键字static mybatis不会给static构建setter和getter,需要自己构建setter和g

  • SQL中的三种去重方法小结

    目录 distinct group by row_number 在使用SQL提数的时候,常会遇到表内有重复值的时候,比如我们想得到 uv (独立访客),就需要做去重. 在 MySQL 中通常是使用 distinct 或 group by子句,但在支持窗口函数的 sql(如Hive SQL.Oracle等等) 中还可以使用 row_number 窗口函数进行去重. 举个栗子,现有这样一张表 task: task_id order_id start_time 1 123 2020-01-05 1 2

  • springboot ApplicationContextInitializer的三种使用方法小结

    目录 ApplicationContextInitializer的三种使用方法 概述 1.使用spring.factories方式 2.application.properties添加配置方式 3.直接通过add方法 ApplicationContextInitializer都干了些什么 ApplicationContextInitializer的三种使用方法 概述 ApplicationContextInitializer是在springboot启动过程(refresh方法前)调用,主要是在A

  • Mybatis传递多个参数的三种实现方法

    方案一 Dao层的函数方法 1 Public User selectUser(String name,String area); 对应的Mapper.xml <select id=" selectUser" resultMap="BaseResultMap"> select * from user_user_t where user_name = #{userName,jdbcType=VARCHAR} and user_area=#{userArea,

  • js ie非ie浏览器的几种判断方法小结

    最近在 司徒正美js 全世界最短的IE浏览器判断代码 一文,看到只有6byte的判断ie与非ie的方法.其代码如下: if(!+[1,])alert("这是ie浏览器"); else alert("这不是ie浏览器"); [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 其实有很多判断的方法,大都是根据浏览器的特性来的. 比如库prototype的方法是:!!(window.attachEvent && navigator.userAgen

  • spring与mybatis三种整合方法

    1.采用MapperScannerConfigurer,它将会查找类路径下的映射器并自动将它们创建成MapperFactoryBean. spring-mybatis.xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3

  • php递归函数三种实现方法及如何实现数字累加

    递归函数在编程中是比较常用的一类函数,其特点是函数自身可以调用自身,但是必须在调用自身前有条件判断,否则会导致无限调用下去.本文列出了三种递归函数实现方法,第一种利用引用做参数,第二种利用全局变量,第三种利用静态变量,理解此类问题需要有点基础,包括对全局变量,引用,静态变量的理解,也需对他们的作用范围有所理解.在这不废话了,具体介绍请看下文. 第一种方法:利用引用做参数 先不管引用做不做参数,必须先明白引用到底是什么?引用不过是指两个不同名的变量指向同一块存储地址.本来每个变量有各自的存储地址,

  • jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法

    首先,大家都知道,jQuery事件触发时有2种机制,一种是事件委托,另一种是事件冒泡(IE情况暂时不考虑).拿click事件做例子,先附上一段代码: html: <body> <div id="box"> <p id="btn">我是按钮</p> </div> </body> style: .hid{ display:none; } script: $('#box').click(functio

  • C#使用DataSet Datatable更新数据库的三种实现方法

    本文以实例形式讲述了使用DataSet Datatable更新数据库的三种实现方法,包括CommandBuilder 方法.DataAdapter 更新数据源以及使用sql语句更新.分享给大家供大家参考之用.具体方法如下: 一.自动生成命令的条件 CommandBuilder 方法 a)动态指定 SelectCommand 属性 b)利用 CommandBuilder 对象自动生成 DataAdapter 的 DeleteCommand.InsertCommand 和 UpdateCommand

  • C#多态的三种实现方式(小结)

    C#实现多态主要有3种方法,虚方法,抽象类,接口 1 虚方法 在父类的方法前面加关键字virtual, 子类重写该方法时在方法名前面加上override关键字,例如下面的Person类的SayHello方法 class Person { public Person(string name) { this.Name = name; } string _name; public string Name { get => _name; set => _name = value; } //父类方法加v

随机推荐