我想使用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) {
}
}
}
}
}
答案 0 :(得分:3)
是的,您可以通过编程方式配置jOOQ的代码生成器。当您查看GenerationTool
的源代码时,您会看到您可以从控制台(as documented in the manual)调用其重载的main()
方法,或者通过传递{{1}对象。一个例子:
org.jooq.util.jaxb.Configuration
上述配置POJO由XJC生成,因此您可以使用与XML配置完全相同的结构。