在java中生成SQL字符串的好方法?

pgs*_*rom 9 java mysql sql generator sqlbuilder

我不是在寻找像Hibernate这样的持久层,我只想生成sql-strings,它们应该兼容PreparedStatement.我已经尝试了像Squiggle这样的库,但它只支持SELECT,我还想生成插入和更新.理想的用法是:

generateInsertOn("myTable").addValue("value1").addValue("value2").generate();
Run Code Online (Sandbox Code Playgroud)

会产生这个字符串:

"INSERT INTO myTable (value1, value2) VALUES(?, ?)"
Run Code Online (Sandbox Code Playgroud)

我知道,有存在很多像我这样的,如题,但他们不相当问同样的事情,和我一样.

干杯,

Luk*_*der 11

对于任意SQL,请使用jOOQ.jOOQ目前支持SELECT,INSERT,UPDATE,DELETE,TRUNCATE,和MERGE.您可以像这样创建SQL:

// Since you're not executing the SQL, set connection to null
Connection connection = null;
Factory create = new MySQLFactory(connection);
String sql1 = create.select(A, B, C)
                    .from(MY_TABLE)
                    .where(A.equal(5))
                    .and(B.greaterThan(8))
                    .getSQL();

String sql2 = create.insertInto(MY_TABLE)
                    .values(A, 1)
                    .values(B, 2)
                    .getSQL();

String sql3 = create.update(MY_TABLE)
                    .set(A, 1)
                    .set(B, 2)
                    .where(C.greaterThan(5))
                    .getSQL();
Run Code Online (Sandbox Code Playgroud)

支持的语法非常丰富.您还可以找到条款,如支持ON DUPLICATE KEY UPDATE,FOR UPDATE,LOCK IN SHARE MODE,等.

有关详细信息,请参阅

http://www.jooq.org

(免责声明,我为jOOQ背后的公司工作)