如何使用jooq而不是xml从表创建java pojo?

时间:2014-01-14 07:12:55

标签: java pojo jooq

我想使用jooq以编程方式而不是.xml创建表中的.java。

我已经尝试过xml,但这不是我想要的。

首先可以通过jooq做什么?

其次有人知道怎么做吗?

import org.jooq.DSLContext;
import org.jooq.Record;
import org.jooq.Result;
import org.jooq.SQLDialect;
import org.jooq.impl.DSL;
import org.jooq.util.DefaultGenerator;
import org.jooq.util.JavaGenerator;
import org.jooq.util.mysql.MySQLDatabase;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Main {
    public static void main(String[] args) {
        Connection conn = null;

        String userName = "root";
        String password = "root";
        String url = "jdbc:mysql://localhost:3306/library";

        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            conn = DriverManager.getConnection(url, userName, password);

            DSLContext create = DSL.using(conn, SQLDialect.MYSQL);
            Result<Record> result = create.select().from("AUTHOR").fetch();

            //------------ here I want to create AUTHOR.java from table AUTHOR by connecting to database  
            DefaultGenerator  g = new DefaultGenerator();
            MySQLDatabase database = new MySQLDatabase();
            database.getSchema(conn.getSchema());
            JavaGenerator javaGenerator = new JavaGenerator();
            javaGenerator.generate(database);

            //------------

            for (Record r : result) {
                Long id = r.getValue(AUTHOR.ID);
                String firstName = r.getValue(AUTHOR.FIRST_NAME);
                String lastName = r.getValue(AUTHOR.LAST_NAME);

                System.out.println("ID: " + id + " first name: " + firstName + " last name: " + lastName);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException ignore) {
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:3)

是的,您可以通过编程方式配置jOOQ的代码生成器。当您查看GenerationTool的源代码时,您会看到您可以从控制台(as documented in the manual)调用其重载的main()方法,或者通过传递{{1}对象。一个例子:

org.jooq.util.jaxb.Configuration

上述配置POJO由XJC生成,因此您可以使用与XML配置完全相同的结构。

This is now also documented in the manual