entity 实体类创建说明
插件中的数据表都是有entity实体类自动创建。所以一些字段说明、索引等,需要在实体类中标注上。如下示例:
````
package com.xnx3.wangmarket.plugin.example.entity;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Index;
import javax.persistence.Table;
import com.xnx3.j2ee.entity.BaseEntity;
/**
* 人员表,演示 entity 类
* @author 管雷鸣
*/
@Entity()
@Table(name = "plugin_example_person", indexes={@Index(name="suoyin_index",columnList="age,idcard")})
public class Person extends BaseEntity{
private Integer id; //主键,自动编号
private String name; //人员姓名
private Integer age; //年龄,几岁
private String idcard; //身份证号
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "id", unique = true, nullable = false)
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name = "name", columnDefinition="char(20) COLLATE utf8mb4_unicode_ci COMMENT '人员姓名' default ''")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Column(name = "age", columnDefinition="int(4) COMMENT '年龄,几岁' default '0'")
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Column(name = "idcard", columnDefinition="char(20) COMMENT '身份证号' default ''")
public String getIdcard() {
return idcard;
}
public void setIdcard(String idcard) {
this.idcard = idcard;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", age=" + age + ", idcard=" + idcard + "]";
}
}
````
又一个人员表,其中记录了每个人的姓名、年龄、身份证号。其中年龄跟身份证号是经常查询使用的,这两列加上了索引。
注意的地方:
1. @Table 的 name ,也就是数据表的命名,插件需要以 plugin_ 开头,如插件的名字是 example ,数据表是人员表,则是 plugin_example_person 这里便是 plugin_插件名字_表名字 进行组合的。如果一个插件就只有一个数据表,比如 cnzz插件,那么表名可以为 plugin_cnzz
1. @Table 中的 @Index 创建索引,其 columnList 里面的值为数据表中字段实际名字,而非Java中驼峰命名。多个字段用,分割,如 columnList="user_name,age"