JavaBean常用的注解开发包

1.Lokbom

一般情况下的Javabean是下面这样的,但这样代码看上去稍微有点长,不太美观,这时候我们可以使用lokbom注解使代码更美观更简短

public class Students {
    private   Long   id;
    private   String  sname;
    private   String   grade;

    public void setgrade(String grade) {
        this.grade = grade;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public Long getId() {
        return id;
    }

    public String getgrade() {
        return grade;
    }

    public String getSname() {
        return sname;
    }

    @Override public String toString() {
        return "Students[id:"+id+",sname"+sname+",grade"+grade+"]";
    }
    public   Students(){
        
    }
    public  Students(Long  id,String  sname,String grade){
        this.id=id;
        this.sname=sname;
        this.grade=grade;
    }
}

 使用注解后:

@Data
@AllArgsConstructor
@ToString
public class Students {
    private   Long   id;
    private   String  sname;
    private   String   grade;

}

 就这样短短三个注解就和上面一大坨代码功能完全一样了,​常用的注解主要如下:

 @Data 注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法
@Setter :注解在属性上;为属性提供 setting 方法
@Getter :注解在属性上;为属性提供 getting 方法
@Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
@NoArgsConstructor :注解在类上;为类提供一个无参的构造方法
@AllArgsConstructor :注解在类上;为类提供一个全参的构造方法
@Synchronized : 加个同步锁
@SneakyThrows : 等同于try/catch 捕获异常
@NonNull : 如果给参数加个这个注解 参数为null会抛出空指针异常
@Value : 注解和@Data类似,区别在于它会把所有成员变量默认定义为private final修饰,并且不会生成set方法。
@ToString:注解在类上;为类提供toString方法(可以添加排除和依赖);
更多的详细信息请查看官方文档:https://projectlombok.org/features/all

2.JPA

JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。由于JPA内容比较多,所以这次主要讲一下javax.persistence中常用的一些注解:

@Entity : 标注用于实体类声明语句之前,指出该Java 类为实体类,将映射到指定的数据库表。如声明一个实体类 Student,它将映射到数据库中的 Student表上                                                    

@Table:当实体类与其映射的数据库表名不同名时需要使用 @Table 标注说明,该标注与 @Entity 标注并列使用,置于实体类声明语句之前,可写于单独语句行,也可与声明语句同行。@Table 标注的常用选项是 name,用于指明数据库的表名 。除此之外还有三个选项较为少用,catalog:指定数据库名称,schema:指定数据库的用户名,uniqueConstraints:指定唯一性字段约束(字段值唯一不重复)

@Id: 标注用于声明一个实体类的属性映射为数据库的主键列

@GeneratedValue: 用于标注主键的生成策略,通过strategy 属性指定。@GeneratedValue(generator="xxx",strategy= GenerationType.AUTO)。generator表示生成器的名字,属性和使用的ORM框架有关,用的较少,可以不写。strategy有四个选项:AUTO主键由程序控制, 是默认选项 ,不设置就是这个;IDENTITY 主键由数据库生成, 采用数据库自增长, 适合MYSQL  ,Oracle不支持这种方式;SEQUENCE 通过数据库的序列产生主键, 适合Oracle,MYSQL  不支持;Table 提供特定的数据库产生主键, 该方式更有利于数据库的移植

@Column:指定字段的详细定义。name: 数据库字段的名称,默认与属性名称一致;nullable: 是否允许为null,默认为true

unique: 是否唯一,默认为false;length: 字段的长度,仅对String类型的字段有效;columnDefinition: 表示该字段在数据库中的实际类型,通常ORM框架根据属性类型自动判断数据库中字段的类型:例如:String的默认映射类型为VARCHAR,如果要将String类型映射到特定数据库的BLOB 或TEXT字段类型,该属性非常有用,如:@Column(name="BIRTH",nullable="false",columnDefinition="TEXT");insertable: 默认情况下,JPA假设所有列始终包含在SQL INSERT 语句中。如果该列不应包含在这些语句中,请将insertable设置为false;updatable:默认情况下,JPA假设所有列始终包含在 SQL UPDATE 语句中。如果该列不应包含在这些语句中,请将updatable 设置为false;table: 当实体类使用@SecondaryTable注解时会保存于多张表中,该字段指定实体类中的某个属性保存于到那张表,不设置时该属性,默认保存到与类名相同的默认表中。

@Basic:是默认Entity类的属性的默认注解。 即普通字段未加@Column注解,也会将其属性作为一个数据库的对应表的字段。

etch=FetchType.EAGER即时加载(默认值,即不写Basic注释的默认值),fetch=FetchType.LAZY 惰性加载;optional:指定在生成数据库结构时字段是否允许为null,(默认值为true,允许为空)

@Transient:表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性.也就是说数据库表中没有这个字段,操作数据库时会忽略这个属性

@Temporal:在核心的 Java API 中并没有定义 Date 类型的精度(temporal precision). 而在数据库中,表示 Date 类型的数据有 DATE, TIME, 和 TIMESTAMP 三种精度(即单纯的日期,时间,或者两者 兼备).在进行属性映射时可使用@Temporal注解来调整精度

@SecondaryTable:将一个实体映射到多个数据库表中

@Entity
@SecondaryTables({@SecondaryTable(name = "tb_sudent"), @SecondaryTable(name = "tb_teacher")})
public class People implements Serializable {

    @Column(table = "tb_sudent")
    private String sno;

    @Column(table = "tb_sudent")
    private String sname;

    @Column(table = "tb_teacher")
    private String course;

    @Column(table = "tb_teacher")
    private String tname;
    
}
@Entity
@Table(name = "tb_student",catalog = "tao",schema = "root")
public class Students {
    @Id
    @GeneratedValue(strategy= GenerationType.AUTO)
    private   Long   id;
    @Column(name = "sname",unique = false,nullable = false,insertable = true,updatable = true,length = 255,precision = 0,scale = 0)
    private   String  sname;

    @Basic(optional = true,fetch = FetchType.LAZY)
    private   String   grade;


    @Temporal(TemporalType.DATE)
    private Date   birthday;


}

以上为常用注解,更多详细JPA注解请查看官方介绍:https://www.oracle.com/technetwork/middleware/ias/toplink-jpa-annotations-096251.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值