我正在使用jOOQ-3.11.9来构建SQL。以下是我的代码:
String sql = DSL.using(SQLDialect.MYSQL)
.select(DSL.asterisk())
.from(table("service"))
.where("name = ?", "service1")
.getSQL();我期望的是
select * from service where (name = "service1")但结果是
select * from service where (name = ?)我的代码有什么问题吗?
发布于 2019-01-24 03:10:54
这与预期的一样。默认的SQL值是StatementType.PREPARED_STATEMENT,因此jOOQ在默认情况下在Settings.statementType字符串中生成绑定值占位符,该占位符可用于在其他工具中执行,如JDBC、Spring等。
可以将ParamType.INLINE值传递给getSQL()方法,或指定Settings.withStatementType(StatementType.STATIC_STATEMENT)
有关更多详细信息,请考虑Javadoc中的解释:https://www.jooq.org/javadoc/latest/org/jooq/Query.html#getSQL--
发布于 2019-01-23 16:28:23
您应该使用jOOQ生成的类中的字段名称:
String sql = DSL.using(SQLDialect.MYSQL)
.select(DSL.asterisk())
.from(YOURENTITY)
.where(YOURENTITY.NAME.eq(nameParam))
.getSQL();YOURENTITY应该是项目中由jOOQ生成的类。然后,nameParam将是传递给包装上述查询的方法的参数。
jOOQ有非常好的文档,有很多例子:https://www.jooq.org/doc/3.11/manual/sql-building/sql-statements/select-statement/where-clause/
https://stackoverflow.com/questions/54321453
复制相似问题