
排除字段
排除非表字段的三种方式
使用场景:实体类中的某个属性不对应表中的任何字段,只是用于保存临时数据,或者临时组装的数据。
使用方式:
1、transient修饰实体类属性(修饰的属性不会被序列化)。
缺陷:有些需求需要序列化该字段。
2、static修饰属性(Lombok对静态属性不会提供get、set方法)。
缺陷:每个对象的属性值一致。
3、@TableField(exist=false),这个注解用来表示数据表中不存在该字段,默认是true。
推荐使用第三种方式
mybatis-plus:主键采用雪花算法生成值的前提是实体类的主键属性名称必须为id。
mybatis-plus:数据表字段带有_的可以自动映射到驼峰式命名的属性上(t_user 映射为 tUser)。
注解:
@TableName(“数据库表名”):使用场景实体类名称和数据表名不一致时,通过它指定表名,此时就可以使用mp的单表操作。
@TableId(“主键名”):使用场景实体类属性名称和数据表主键不是id时,通过它声明该属性为主键,就可以采用雪花算法生成主键值操作。
@TableField(“字段名”):使用场景实体类属性名称和数据表字段名不一致时,通过它指定数据表字段名称,就可以和实体类属性一起使用。
排除非表字段的三种方式
使用场景:实体类中的某个属性不对应表中的任何字段,只是用于保存临时数据,或者临时组装的数据。
使用方式
1、transient修饰实体类属性(修饰的属性不会被序列化)。缺陷:有些需求需要序列化该字段。
2、static修饰属性(前提手动实现get、set方法,Lombok对静态属性不会提供get、set方法)。缺陷:每个对象的属性值一致。
3、@TableField(exist=false),这个注解用来表示数据表中不存在该字段,默认是true。推荐
排除非表字段的三种方式
1、添加 transient 排除。
2、添加 static 全局静态变量排除。
3、添加 @TableField(exist = false) 排除非表中的字段,exist = false 表示不是表中存在的列字段。
@TableField(exist = false)
private String text_transient;




transient 不参与实例化
使用 static标识
@TableField(exist=fasel)
排除实体类中非数据库表的字段三种方式
1、使用关键字transient申明实体变量不参与序列化
2、使用关键字static申明实体变量为静态变量,使用Lombok的话,Lombok不会为静态变量生成set/get方法
3、为实体变量添加@TableField(exist=false)注解表示这个变量不是表中的字段,exist默认为true
插入的时候忽略字段(排除非表字段的三种方式)
1、申明transient标志不参与序列化过程
2、字段添加static标志静态变量,
3、添加@TableField(exist=false) 注解表示不是表中字段
测试
3种方法排除字段:
transient修饰符 ,不会参加序列化
static修饰符,需要自己get set
@TableField(exist=false) 数据库中不存在
排除非字段变量3种方式
1、private transient String remark; // 不序列化
2、private static String remark; // 静态
3、注解:@TableField(exist=false)
排除非表字段的三种方式
使用场景:实体类中的某个属性不对应表中的任何字段,只是用于保存临时数据,或者临时组装的数据。
使用方式
1、transient修饰实体类属性(修饰的属性不会被序列化)。
缺陷:有些需求需要序列化该字段。
2、static修饰属性(前提手动实现get、set方法,Lombok对静态属性不会提供get、set方法)。
缺陷:每个对象的属性值一致。
3、@TableField(exist=false),这个注解用来表示数据表中不存在该字段,默认是true。推荐
1、用transient给属性做声明,该方式无序列化
eg:private transient int flag;
2、用static给属性做声明,默认不给静态变量生成get/set方法,所以这时需要手动写get/set方法,全类唯一一个的属性。
3、@TableField(exist=false)
给属性添加该注解,表示该字段在数据库中不存在。默认exist=true。
该种方式可以生成get/set方法,也不是唯一的属性。
transient, static, @TableField(exist = false)
CRUD - 新增
transient
实现序列化,static 必须手动生成get/set方法
每个对象必须有一个此属性@TableField(exist=false)
3、添加注解@TableField(exist=false) 表示不是数据库表字段
2、给属性添加关键字:static
1、实体中不想在表中出现的属性字段
给属性加关键字:transient (表示该属性不参与实体序列号)
private transient String remark;
如果实体属性和数据库字段对不上:MP提供有三种方式排除非表字段使用方法:
1.在实体类使用transient标注成员变量,数据映射时就不会参与序列化
2.要序列化: 设置该属性位静态变量static
3.在该属性上面添加@TableFieId(exist=false):exist代表数据库是否有该字段,false代表没有
@TableField(exist=false) //exist=false表示数据库字段并无该属性
private String remark;
@Transient 注解的实体类字段不参数序列化过程
有时候只是保存临时数据,或者通过计算获得的数据。所以要排除非表字段的三种方式1,transient标识成员变量,不参与序列化过程2,标志为静态变量3.@TableField(exist=false)如果为true,代表数据库表中有字段,false为无。
MP 数据库对应实体注解
@Data @TableName @TableId(当数据库主键名称不是id) @TableField
当一个字段在表中忽略 :
1.用transient 不可序列化
2.用static 许自动生成setget
3.@TableField(exist=false)
排除非表字段的三种方式
1. 使用 transient 修饰
private transient String remark;
2. 使用static修饰
private static String remark;
3. @TableField(exist=false)
transient关键词:该字段不参与序列化过程;
静态变量:变量会归属于类而不是对象;
@TableFieldId(exit=false):推荐用法。
排除非表字段的三种方式
1. 使用 transient 修饰
private transient String remark;
2. 使用static修饰
private static String remark;
3. @TableField(exist=false)
@TableField(exist = false) private String remark;
排除非表字段的三种方式:
第三种:
使用 @TableField(exist=false)标识当前变量不是数据库表中的字段,这种情况下,该属性不会被映射到数据库中
排除非表字段的三种方式:
第二种:
将要排除的字段声明为静态变量,手动创建 对应的静态GET/SET 方法,静态的属性的静态方法只能使用类进行调用,此时,实例化的过程会将该静态字段排除掉,在调用 MP 进行映射时不会被映射进去
排除非表字段的三种方式:
第一种:
添加 transient 标识 某一字段不参与实例化过程,一般用于过渡字段,在数据库表中没有对应的字段,如果直接添加而进行实例化的排除, 会被自动进行映射到数据库表中,而由于没有对应的字段,会报错。