订单与货物时属于多对多关系,创建数据表的时候是要用第三张表来表示,第三表应该有本表的id,order表的id (order_id作为外键) 和goods表的id(id做为外键),这3个id;或者可以把order表的id与goods表的id做联合主键。而上面中间表中你有totalPrice,这字段数属于order表的,你写在第三张表中就会违反数据库第二范式。
使用 @Getter 和/或 @Setter 注释任何字段,以使 lombok 自动生成默认的 getter / setter 。
默认的 getter 只是返回该字段,如果该字段被称为 foo ,则名为 getFoo (如果该字段的类型为 boolean ,则为 isFoo )。
默认生成的 getter / setter 方法是公共的,除非你明确指定一个 AccessLevel 。合法访问级别为 PUBLIC,PROTECTED,PACKAGE和PRIVATE 。
你还可以在类上添加 @Getter 和/或 @Setter 注释。在这种情况下,就好像你使用该注释来注释该类中的所有非静态字段一样。
你始终可以使用特殊的 AccessLevelNONE 访问级别来手动禁用任何字段的 getter / setter 生成。这使你可以覆盖类上的 @Getter,@Setter或@Data 注释的行为。
With Lombok:
Native Java:
任何类定义都可以使用 @ToString 注释,以使 lombok 生成 toString() 方法的实现。
默认情况下,将打印所有非静态字段。如果要跳过某些字段,可以使用 @ ToStringExclude 注释这些字段。或者,可以通过使用 @ToString(onlyExplicitlyIncluded = true) ,然后使用 @ToStringInclude 标记要包含的每个字段,来确切指定希望使用的字段。
通过将 callSuper 设置为 true ,可以将 toString 的超类实现的输出包含到输出中。请注意, javalangObject中toString() 的默认实现几乎毫无意义。
With Lombok:
Native Java:
任何类定义都可以使用 @EqualsAndHashCode 进行注释,以使 lombok 生成 equals(Object other) 和 hashCode() 方法的实现。默认情况下,它将使用所有非静态,非瞬态字段,但是您可以通过使用 @EqualsAndHashCodeInclude 标记类型成员来修改使用哪些字段(甚至指定要使用各种方法的输出)。 @EqualsAndHashCodeExclude 。或者,可以通过使用@ EqualsAndHashCodeInclude 标记并使用 @EqualsAndHashCode(onlyExplicitlyIncluded = true) 来精确指定要使用的字段或方法。
如果将 @EqualsAndHashCode 应用于扩展另一个类的类,则此功能会有些棘手。通常,为此类自动生成 equals 和 hashCode 方法是一个坏主意,因为超类还定义了字段,该字段也需要 equals / hashCode 代码,但不会生成此代码。通过将 callSuper 设置为 true ,可以在生成的方法中包括超类的 equals 和 hashCode 方法。
搜索Java知音公众号,回复“后端面试”,送你一份Java面试题宝典pdf
With Lombok:
Native Java:
@NoArgsConstructor 将生成没有参数的构造函数。如果字段由final修饰,则将导致编译器错误,除非使用 @NoArgsConstructor(force = true) ,否则所有final字段都将初始化为 0 / false / null 。对于具有约束的字段(例如 @NonNull 字段),不会生成任何检查。
@AllArgsConstructor 为类中的每个字段生成一个带有1个参数的构造函数。标有 @NonNull 的字段将对这些参数进行空检查。
搜索Java知音公众号,回复“后端面试”,送你一份Java面试题宝典pdf
With Lombok:
Native Java:
@Data 是一个方便的快捷方式批注,它将 @ToString , @EqualsAndHashCode , @ Getter / @Setter 和 @RequiredArgsConstructor 的功能捆绑在一起:换句话说, @Data 生成通常与简单 POJO 关联的所有样板(普通的旧 Java 对象)和 bean :所有字段的 getter ,所有 非final 字段的 setter ,以及涉及类字段的适当的 toString , equals 和 hashCode 实现,以及初始化所有 final 字段以及所有 非final 字段的构造函数没有使用 @NonNull 标记的初始化程序,以确保该字段永远不会为 null 。
With Lombok:
Native Java:
@Value注解和 @Data 类似,区别在于它会把所有成员变量默认定义为 private final 修饰,并且不会生成 set 方法。
构建者模式
只能标注到类上,将生成类的一个当前流程的一种链式构造工厂,如下:
可配合 @Singular 注解使用, @Singular 注解使用在jdk内部集合类型的属性, Map 类型的属性以及 Guava 的 comgooglecommoncollect 的属性上。例如 未标注 @Singular 的属性,一般 setter 时,会直接覆盖原来的引用,标注了 @Singular 的属性,集合属性支持添加 *** 作,会在属性原来的基础上增加。
With Lombok:
Native Java:
链式风格
@Accessors 批注用于配置 lombok 如何生成和查找 getter 和 setter 。
默认情况下, lombok 遵循针对 getter 和 setter 的 bean 规范:例如,名为 Pepper 的字段的 getter 是 getPepper 。但是,有些人可能希望打破 bean 规范,以得到更好看的 API 。 @Accessors 允许您执行此 *** 作。
可标注在类或属性上,当然最实用的功能还是标注到类上。
标注到类上, chain 属性设置为 true 时,类的所有属性的 setter 方法返回值将为 this ,用来支持 setter 方法的链式写法。如:
fluent 属性设置为 true 时,类的所有 getter , setter 方法将省略 get 和 set 前缀,获取属性值直接使用属性名相同的无参方法,设置属性值使用属性名相同的有参方法,并且返回值为this。如:
标注到属性上,使用 prefix 设置需要省略的属性生成 getter , setter 方法时的前缀,且属性必须为驼峰式命名。
编译之后为
在需要打印日志的类中使用,项目中使用 slf4j 、 log4j 日志框架
该注解快速判断是否为空,为空抛出 javalangNullPointerException 。
注解自动添加到同步机制,生成的代码并不是直接锁方法,而是锁代码块, 作用范围是方法上。
注解用于确保已分配的资源被释放( IO 的连接关闭)。
plsql 在oracle中创建表时添加注释使用comment字段。例如有以下表:
CREATE TABLE t1(
id varchar2(32) primary key,
name VARCHAR2(32) ,
age VARCHAR2(32)
)
添加表注释的命令为:
COMMENT ON table t1 IS '个人信息';
添加字段注释命令为:
comment on column t1id is 'id';
comment on column t1name is '姓名';
comment on column t1age is '年龄';
扩展资料
plsql中查看表注释和字段注释方法介绍
查看当前用户下所有表注释:select from user_tab_comments
结果: user_tab_comments:table_name,table_type,comments
查看当前用户下某表所有字段注释:select from user_col_comments where TABLE_NAME='某表名称';
结果:user_col_comments:table_name,column_name,comments
@Entity 表示当前为实体类 @Id 主键 @GeneratedValue(strategy=GenerationTypeUUID) 主键生成策略。 @Column 映射字段的定义,包括映射的数据库表的字段名称。是否允许为空。字段长度等等定义。
对java实体类的众多理解:
A 就是属性类,通常定义在model层里面
B 一般的实体类对应一个数据表,其中的属性对应数据表中的字段。
好处:
1对对象实体的封装,体现OO思想。
2属性可以对字段定义和状态进行判断和过滤
3把相关信息用一个实体类封装后,我们在程序中可以把实体类作为参数传递,更加方便。
C 说白了就是为了让程序员在对数据库 *** 作的时候不用写SQL语句
D 就是一个数据库表生成一个类
这样做对数据库 *** 作起来方便
编写代码较少 提高效率 可以使程序员专注逻辑关系
E 实体类就是把对某一个表的 *** 作全写在一个类中
F 在Java开发中经常要定义一些实体类,这些类的定义的好坏会直接影响,编写代码的质量和难易程度,以下是别人总结的一些经验。
一、实体类的名字尽量和数据库的表的名字对应相同。
二、实体类应该实现javaioSerializable接口。
三、实体类应该有个无参的构造方法。
四、实体类应该有个有参(所有的参数)的构造方法。
五、实体类有属性和方法,属性对应数据库中表的字段,主要有getter和setter方法。
六、实体类还应该有个属性serialVersionUID。例如:private static final long serialVersionUID = -6125297654796395674L;
七、属性一般是private类型,方法位public类型,对于数据库自动生成的ID字段对应的属性的set方法应为private。
G 实体类中都是实例对象,实例对象在jvm的堆区中开辟了一个该对象引用空间,并且让该引用指向某个实例,类声明只是在jvm的栈去中开辟了一个该对象引用,没有让该引用做任何指向
例如 :
1String str;
2String str = new String ("dgfgg");
1中的只是一个引用,说明str应该指向一个String 类型的实例,但还没对str和堆区的实例做具体的指向也就是说它还没有指向某个实例
而2中的即定义了一个引用(str)又对str做了具体的指向,它指向的内容就是后面new出来的String 实例
实体类中的构造方法+set方法+get方法:
构造函数:初始化成员变量
get,set方法,获取和改变成员变量的值,JavaBean规范规定只使用get/set访问成员变量
构造函数:你每次写一个Java文件,实际上都写了一个类(创建一个类,jvm就会自动为这个类开辟一块内存空间)。有了类就需要有类对象,要产生类对象就需要构造函数对这个刚刚申请的内存空间做一点事,赋属性值之类的工作。当然,如果你不写,它就默认有一个Class(){}的构造方法出现,当然它什么活也不干。
你的属性是什么样的?publicprivate?默认?还是protected这四种你找教材务必弄懂分清,很有用。如果是private,这种属性不许别的对象改和读,但有时候需要改/读,怎么办?写一个public void setAbc(xxx){}和一个public xxx getAbc(){}就实现外部读写属性的功能了。
set ,get完全是自我规定的,就是设置初值和获得值的意思.你也可以修改成其他字符.但是用set ,get还是要好些,因为你能通过单词理解你写的代码的意思,方便阅读而已。
以下是mybatis忽略映射字段的方法:
@TableField(exist = false):表示该属性不为数据库表字段,但又是必须使用的。
@TableField(exist = true):表示该属性为数据库表字段。
@TableName:数据库表相关
@TableId:表主键标识
@TableField:表字段标识
@TableLogic:表字段逻辑处理注解(逻辑删除)
扩展资料
mybatis---属性和字段映射:
1、查询时使用别名,别名和属性名保持一致
<select id="getUser" parameterType="int" resultType="comskdmybitsdomainUser">
select id_dif id, name_dif name, age_dif age from users where id=#{id}
</select>
别名和属性名保持一致。
2、通过resultMap标签映射字段名和属性名的关系
<!-- type:表示实体类的全限定类名 id:通过id其他标签可引用该标签-->
<resultMap type="comskdmybitsdomainUser" id="userResultMap">
<!-- id 标签映射主键字段 -->
<id property="id_dif" column="id"/>
<!-- result 标签映射其他字段 -->
<result property="id_dif" column="id"/>
</resultMap>
以上就是关于注解 生成有多个字段的中间表 怎么配置全部的内容,包括:注解 生成有多个字段的中间表 怎么配置、超级全面的 Lombok 注解介绍,学一波、plsql 建表 如何添加注释等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)