使用注解创建主键为String的实体类

本文介绍了一个名为Asset的Java实体类,该类用于管理资产信息,包括资产的基本属性如IP地址、联系人等,并通过注解定义了其在数据库中的映射。
package mdstack.zc.entity;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;

@Entity
@Table(name="t_asset")
public class Asset {
    
    @Id
    @GeneratedValue(generator = "uuid")
    @GenericGenerator(name = "uuid", strategy = "uuid")
    @Column(name="ip")
    private String ip;
    
    @Column(name="lip")
    private Long lip;
    
    @Column(name="natip")
    private String natip;
    
    @Column(name="natlip")
    private Long  natlip;
    
    @Column(name="linkman")
    private String linkman;
    
    @Column(name="assetcode")
    private String assetcode;
    
    @Column(name="assetname")
    private String assetname;
    
    @Column(name="specification")
    private String specification;
    
    @Column(name="acid")
    private Long acid;
    
    @Column(name="position")
    private String position;
    
    @Column(name="cabinet")
    private String cabinet;
    
    @Column(name="slot")
    private String  slot;
    
    @Column(name="application")
    private String application;
    
    @Column(name="asid")
    private Long  asid;
    
    @Column(name="apid")
    private Long  apid;
    
    @Column(name="remark")
    private String  remark;
    
    @Column(name="creator")
    private String  creator;
    
    @Column(name="creatime")
    private Date  creatime;
    
    @Column(name="lastmodifier")
    private String  lastmodifier;
    
    @Column(name="lastmoditime")
    private Date  lastmoditime;

    
    public String getIp() {
        return ip;
    }

    public void setIp(String ip) {
        this.ip = ip;
    }

    public Long getLip() {
        return lip;
    }

    public void setLip(Long lip) {
        this.lip = lip;
    }

    public String getNatip() {
        return natip;
    }

    public void setNatip(String natip) {
        this.natip = natip;
    }

    public Long getNatlip() {
        return natlip;
    }

    public void setNatlip(Long natlip) {
        this.natlip = natlip;
    }

    public String getLinkman() {
        return linkman;
    }

    public void setLinkman(String linkman) {
        this.linkman = linkman;
    }

    public String getAssetcode() {
        return assetcode;
    }

    public void setAssetcode(String assetcode) {
        this.assetcode = assetcode;
    }

    public String getAssetname() {
        return assetname;
    }

    public void setAssetname(String assetname) {
        this.assetname = assetname;
    }

    public String getSpecification() {
        return specification;
    }

    public void setSpecification(String specification) {
        this.specification = specification;
    }

    public Long getAcid() {
        return acid;
    }

    public void setAcid(Long acid) {
        this.acid = acid;
    }

    public String getPosition() {
        return position;
    }

    public void setPosition(String position) {
        this.position = position;
    }

    public String getCabinet() {
        return cabinet;
    }

    public void setCabinet(String cabinet) {
        this.cabinet = cabinet;
    }

    public String getSlot() {
        return slot;
    }

    public void setSlot(String slot) {
        this.slot = slot;
    }

    public String getApplication() {
        return application;
    }

    public void setApplication(String application) {
        this.application = application;
    }

    public Long getAsid() {
        return asid;
    }

    public void setAsid(Long asid) {
        this.asid = asid;
    }

    public Long getApid() {
        return apid;
    }

    public void setApid(Long apid) {
        this.apid = apid;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getCreator() {
        return creator;
    }

    public void setCreator(String creator) {
        this.creator = creator;
    }

    public Date getCreatime() {
        return creatime;
    }

    public void setCreatime(Date creatime) {
        this.creatime = creatime;
    }

    public String getLastmodifier() {
        return lastmodifier;
    }

    public void setLastmodifier(String lastmodifier) {
        this.lastmodifier = lastmodifier;
    }

    public Date getLastmoditime() {
        return lastmoditime;
    }

    public void setLastmoditime(Date lastmoditime) {
        this.lastmoditime = lastmoditime;
    }
    
    
    
    
}

<think>我们需要创建一个使用@Data注解实体类。@Data是Lombok库中的一个注解,它自动生成getter、setter、toString、equals和hashCode方法。注意:使用前需要确保项目中引入了Lombok依赖。假设我们为之前设计的订单表创建一个实体类,类名为OrderEntity(或OrderTable),字段与表中的列对应。实体类字段说明:id:对应主键customerName:客户名称businessName:商家名称price:价格orderContent:订单内容paymentStatus:支付状态createTime:订单创建时间注意:我们将使用Java的Date类型来映射数据库的DATETIME类型。也可以使用Java8的LocalDateTime,这里以Date为例。依赖配置(Maven):在pom.xml中添加:<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version><scope>provided</scope></dependency>下面使用Java代码创建实体类:</think> 下面是一个使用 Lombok 的 `@Data` 注解创建实体类的完整示例。我将创建一个对应之前设计的 MySQL 订单表的 Java 实体类: ```java import lombok.Data; import java.math.BigDecimal; import java.util.Date; @Data public class OrderTable { private Long id; // 对应数据库的主键ID private String customerName; // 客户名称 private String businessName; // 商家名称 private BigDecimal price; // 订单价格(使用BigDecimal处理货币) private String orderContent; // 订单内容 private String paymentStatus; // 支付状态 private Date createTime; // 订单创建时间 // 如果需要额外的业务逻辑方法,可以在这里添加 public boolean isPaid() { return "paid".equalsIgnoreCase(paymentStatus); } } ``` ### 关解释: 1. **Lombok 的 `@Data` 注解**: - 自动生成以下方法: - Getter 方法(所有字段) - Setter 方法(所有非 final 字段) - `equals()` 和 `hashCode()`(基于所有非 static/transient 字段) - `toString()` 方法 - 只需一个注解就替代了数十行样板代码 2. **字段类型选择**: - **价格字段**:使用 `BigDecimal` 而不是 `Double`,确保精确的货币计算(避免浮点数精度问题) - **日期字段**:使用 `java.util.Date`(也可用 `java.time.LocalDateTime`) - **支付状态**:使用 `String` 对应数据库的 `VARCHAR` 3. **Maven 依赖(pom.xml)**: 添加 Lombok 依赖: ```xml <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> <scope>provided</scope> </dependency> ``` 4. **可选的自定义方法**: - 示例中添加了 `isPaid()` 业务方法 - 这是实体类中可以包含业务逻辑的常见做法 ### 对应 Spring Data JPA 的实体类版本: 如果配合 JPA 使用,可以这样增强: ```java import lombok.Data; import javax.persistence.*; import java.math.BigDecimal; import java.time.LocalDateTime; @Data @Entity @Table(name = "OrderTable") public class OrderTableEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "customerName", nullable = false, length = 100) private String customerName; @Column(name = "businessName", nullable = false, length = 100) private String businessName; @Column(name = "price", nullable = false, precision = 10, scale = 2) private BigDecimal price; @Lob // 对应 TEXT 类型 @Column(name = "orderContent") private String orderContent; @Column(name = "paymentStatus", nullable = false, length = 20) private String paymentStatus = "unpaid"; @Column(name = "createTime", nullable = false, updatable = false) private LocalDateTime createTime = LocalDateTime.now(); } ``` ### 使用说明: 1. 安装 Lombok 插件(IDE 需要支持) 2. 在项目中使用 `@Data` 的类可直接: ```java OrderTable order = new OrderTable(); order.setCustomerName("张三"); order.setPrice(new BigDecimal("299.99")); System.out.println(order); // 自动调用toString() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值