在前一篇文章中,我们使用mvn clean compile后发现编译器在指定的路径下自动生成了很多文件,这些文件究竟各自有什么作用呢?

Springboot+JOOQ(二)编译生成的文件

generator/tables/daos

daos文件下下存放编译自动生成的数据表所对应的dao层的类,并且该类中根据数据表的字段定义了常用的查询操作的方法。
Springboot+JOOQ(二)编译生成的文件
上图中代码可以很轻易的发现实现了根据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;
}

相关文章:

  • 2021-12-05
  • 2021-09-05
  • 2022-03-04
  • 2021-06-11
  • 2021-06-14
  • 2022-12-23
  • 2021-11-09
  • 2021-06-09
猜你喜欢
  • 2022-01-10
  • 2021-11-13
  • 2021-11-28
  • 2022-12-23
  • 2022-12-23
  • 2021-12-13
  • 2021-08-08
相关资源
相似解决方案