在前一篇文章中,我们使用mvn clean compile后发现编译器在指定的路径下自动生成了很多文件,这些文件究竟各自有什么作用呢?
generator/tables/daos
daos文件下下存放编译自动生成的数据表所对应的dao层的类,并且该类中根据数据表的字段定义了常用的查询操作的方法。
上图中代码可以很轻易的发现实现了根据ID查询一个、或者多个数据,根据firstname查询多个数据的功能。
generator/tables/pojos
pojos文件下存放着编译生成的数据表对应的标准的pojo类。
public class Users implements Serializable {
private static final long serialVersionUID = -926895054;
private Integer id;
private String firstname;
private String gender;
private String province;
private String city;
private String phonenumber;
private String secondname;
private Integer age;
public Users() {}
public Users(Users value) {
this.id = value.id;
this.firstname = value.firstname;
this.gender = value.gender;
this.province = value.province;
this.city = value.city;
this.phonenumber = value.phonenumber;
this.secondname = value.secondname;
this.age = value.age;
}
public Users(
Integer id,
String firstname,
String gender,
String province,
String city,
String phonenumber,
String secondname,
Integer age
) {
this.id = id;
this.firstname = firstname;
this.gender = gender;
this.province = province;
this.city = city;
this.phonenumber = phonenumber;
this.secondname = secondname;
this.age = age;
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getFirstname() {
return this.firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getGender() {
return this.gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getProvince() {
return this.province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return this.city;
}
public void setCity(String city) {
this.city = city;
}
public String getPhonenumber() {
return this.phonenumber;
}
public void setPhonenumber(String phonenumber) {
this.phonenumber = phonenumber;
}
public String getSecondname() {
return this.secondname;
}
public void setSecondname(String secondname) {
this.secondname = secondname;
}
public Integer getAge() {
return this.age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder("Users (");
sb.append(id);
sb.append(", ").append(firstname);
sb.append(", ").append(gender);
sb.append(", ").append(province);
sb.append(", ").append(city);
sb.append(", ").append(phonenumber);
sb.append(", ").append(secondname);
sb.append(", ").append(age);
sb.append(")");
return sb.toString();
}
}
生成的类实现了Serializable 接口,所有的属性皆为私有数据类型并且所有属性提供getter和setter接口,实现了无参构造函数,并且重写toString()方法。
generator/tables/records
records文件夹下的文件主要用于对数据库语句运算结果的处理。
public class UsersRecord extends UpdatableRecordImpl<UsersRecord> implements Record8<Integer, String, String, String, String, String, String, Integer> {
private static final long serialVersionUID = 1376102661;
/**
* Setter for <code>scheme1.users.id</code>.
*/
public void setId(Integer value) {
set(0, value);
}
/**
* Getter for <code>scheme1.users.id</code>.
*/
public Integer getId() {
return (Integer) get(0);
}
/**
* Setter for <code>scheme1.users.firstname</code>.
*/
public void setFirstname(String value) {
set(1, value);
}
/**
* Getter for <code>scheme1.users.firstname</code>.
*/
public String getFirstname() {
return (String) get(1);
}
/**
* Setter for <code>scheme1.users.gender</code>.
*/
public void setGender(String value) {
set(2, value);
}
/**
* Getter for <code>scheme1.users.gender</code>.
*/
public String getGender() {
return (String) get(2);
}
/**
* Setter for <code>scheme1.users.province</code>.
*/
public void setProvince(String value) {
set(3, value);
}
/**
* Getter for <code>scheme1.users.province</code>.
*/
public String getProvince() {
return (String) get(3);
}
/**
* Setter for <code>scheme1.users.city</code>.
*/
public void setCity(String value) {
set(4, value);
}
/**
* Getter for <code>scheme1.users.city</code>.
*/
public String getCity() {
return (String) get(4);
}
/**
* Setter for <code>scheme1.users.phonenumber</code>.
*/
public void setPhonenumber(String value) {
set(5, value);
}
/**
* Getter for <code>scheme1.users.phonenumber</code>.
*/
public String getPhonenumber() {
return (String) get(5);
}
/**
* Setter for <code>scheme1.users.secondname</code>.
*/
public void setSecondname(String value) {
set(6, value);
}
/**
* Getter for <code>scheme1.users.secondname</code>.
*/
public String getSecondname() {
return (String) get(6);
}
/**
* Setter for <code>scheme1.users.age</code>.
*/
public void setAge(Integer value) {
set(7, value);
}
/**
* Getter for <code>scheme1.users.age</code>.
*/
public Integer getAge() {
return (Integer) get(7);
}
// -------------------------------------------------------------------------
// Primary key information
// -------------------------------------------------------------------------
/**
* {@inheritDoc}
*/
@Override
public Record1<Integer> key() {
return (Record1) super.key();
}
// -------------------------------------------------------------------------
// Record8 type implementation
// -------------------------------------------------------------------------
/**
* {@inheritDoc}
*/
@Override
public Row8<Integer, String, String, String, String, String, String, Integer> fieldsRow() {
return (Row8) super.fieldsRow();
}
/**
* {@inheritDoc}
*/
@Override
public Row8<Integer, String, String, String, String, String, String, Integer> valuesRow() {
return (Row8) super.valuesRow();
}
/**
* {@inheritDoc}
*/
@Override
public Field<Integer> field1() {
return Users.USERS.ID;
}
/**
* {@inheritDoc}
*/
@Override
public Field<String> field2() {
return Users.USERS.FIRSTNAME;
}
/**
* {@inheritDoc}
*/
@Override
public Field<String> field3() {
return Users.USERS.GENDER;
}
/**
* {@inheritDoc}
*/
@Override
public Field<String> field4() {
return Users.USERS.PROVINCE;
}
/**
* {@inheritDoc}
*/
@Override
public Field<String> field5() {
return Users.USERS.CITY;
}
/**
* {@inheritDoc}
*/
@Override
public Field<String> field6() {
return Users.USERS.PHONENUMBER;
}
/**
* {@inheritDoc}
*/
@Override
public Field<String> field7() {
return Users.USERS.SECONDNAME;
}
/**
* {@inheritDoc}
*/
@Override
public Field<Integer> field8() {
return Users.USERS.AGE;
}
/**
* {@inheritDoc}
*/
@Override
public Integer component1() {
return getId();
}
/**
* {@inheritDoc}
*/
@Override
public String component2() {
return getFirstname();
}
/**
* {@inheritDoc}
*/
@Override
public String component3() {
return getGender();
}
/**
* {@inheritDoc}
*/
@Override
public String component4() {
return getProvince();
}
/**
* {@inheritDoc}
*/
@Override
public String component5() {
return getCity();
}
/**
* {@inheritDoc}
*/
@Override
public String component6() {
return getPhonenumber();
}
/**
* {@inheritDoc}
*/
@Override
public String component7() {
return getSecondname();
}
/**
* {@inheritDoc}
*/
@Override
public Integer component8() {
return getAge();
}
/**
* {@inheritDoc}
*/
@Override
public Integer value1() {
return getId();
}
/**
* {@inheritDoc}
*/
@Override
public String value2() {
return getFirstname();
}
/**
* {@inheritDoc}
*/
@Override
public String value3() {
return getGender();
}
/**
* {@inheritDoc}
*/
@Override
public String value4() {
return getProvince();
}
/**
* {@inheritDoc}
*/
@Override
public String value5() {
return getCity();
}
/**
* {@inheritDoc}
*/
@Override
public String value6() {
return getPhonenumber();
}
/**
* {@inheritDoc}
*/
@Override
public String value7() {
return getSecondname();
}
/**
* {@inheritDoc}
*/
@Override
public Integer value8() {
return getAge();
}
/**
* {@inheritDoc}
*/
@Override
public UsersRecord value1(Integer value) {
setId(value);
return this;
}
/**
* {@inheritDoc}
*/
@Override
public UsersRecord value2(String value) {
setFirstname(value);
return this;
}
/**
* {@inheritDoc}
*/
@Override
public UsersRecord value3(String value) {
setGender(value);
return this;
}
/**
* {@inheritDoc}
*/
@Override
public UsersRecord value4(String value) {
setProvince(value);
return this;
}
/**
* {@inheritDoc}
*/
@Override
public UsersRecord value5(String value) {
setCity(value);
return this;
}
/**
* {@inheritDoc}
*/
@Override
public UsersRecord value6(String value) {
setPhonenumber(value);
return this;
}
/**
* {@inheritDoc}
*/
@Override
public UsersRecord value7(String value) {
setSecondname(value);
return this;
}
/**
* {@inheritDoc}
*/
@Override
public UsersRecord value8(Integer value) {
setAge(value);
return this;
}
/**
* {@inheritDoc}
*/
@Override
public UsersRecord values(Integer value1, String value2, String value3, String value4, String value5, String value6, String value7, Integer value8) {
value1(value1);
value2(value2);
value3(value3);
value4(value4);
value5(value5);
value6(value6);
value7(value7);
value8(value8);
return this;
}
// -------------------------------------------------------------------------
// Constructors
// -------------------------------------------------------------------------
/**
* Create a detached UsersRecord
*/
public UsersRecord() {
super(Users.USERS);
}
/**
* Create a detached, initialised UsersRecord
*/
public UsersRecord(Integer id, String firstname, String gender, String province, String city, String phonenumber, String secondname, Integer age) {
super(Users.USERS);
set(0, id);
set(1, firstname);
set(2, gender);
set(3, province);
set(4, city);
set(5, phonenumber);
set(6, secondname);
set(7, age);
}
UsersRecord类中实现了众多方法,包括对单个字段的取值、赋值操作,对行数据取值、赋值操作。
generator/tables/Users
/**
* The column <code>scheme1.users.id</code>.
*/
public final TableField<UsersRecord, Integer> ID = createField("id", org.jooq.impl.SQLDataType.INTEGER.nullable(false).defaultValue(org.jooq.impl.DSL.field("nextval('users_id_seq'::regclass)", org.jooq.impl.SQLDataType.INTEGER)), this, "");
/**
* The column <code>scheme1.users.firstname</code>.
*/
public final TableField<UsersRecord, String> FIRSTNAME = createField("firstname", org.jooq.impl.SQLDataType.VARCHAR(255).nullable(false), this, "");
generators下的Users类中记录了数据表中每个字段信息,包括字段名、数据类型、非空、默认值等。
generator/
generator下的index类记录数据库的索引。
public class Indexes {
public static final Index USERS_PKEY = Indexes0.USERS_PKEY;
private static class Indexes0 {
public static Index USERS_PKEY = Internal.createIndex("users_pkey", Users.USERS, new OrderField[] { Users.USERS.ID }, true);
}
}
generator下的key类记录数据库的特殊键。Identities为自增键,UniqueKeys为唯一键。
private static class Identities0 {
public static Identity<UsersRecord, Integer> IDENTITY_USERS = Internal.createIdentity(Users.USERS, Users.USERS.ID);
}
private static class UniqueKeys0 {
public static final UniqueKey<UsersRecord> USERS_PKEY = Internal.createUniqueKey(Users.USERS, "users_pkey", Users.USERS.ID);
}
generator下的Scheme1类记录操作的数据库模式(scheme)。
generator下的Tables类记录改数据库模式下的所有表。
public class Tables {
/**
* The table <code>scheme1.users</code>.
*/
public static final Users USERS = com.generator.tables.Users.USERS;
}