Good way to generate SQL strings in java?
You should definitively take a look at SQLBuilder. It allows simple, yet complete, SQL generation using a very fluent API.
For arbitrary SQL, use jOOQ. jOOQ currently supports SELECT
, INSERT
, UPDATE
, DELETE
, TRUNCATE
, and MERGE
. You can create SQL like this:
// 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();
The supported syntax is quite rich. You will also find support for clauses such as ON DUPLICATE KEY UPDATE
, FOR UPDATE
, LOCK IN SHARE MODE
, etc.
For more details, see
http://www.jooq.org
(Disclaimer, I work for the company behind jOOQ)