mic*_*oon 8 java sql parameters constants mybatis
我有一个用MyBatis映射文件写的sql,它是这样的:
<select id="somesql">
select a,b,c from tbl_name where d = ?
</select>
Run Code Online (Sandbox Code Playgroud)
占位符值d应该是在名为的文件中声明的常量Constants.java:
public static final String d = "d_value";
Run Code Online (Sandbox Code Playgroud)
如何在不实际传递<select>构造中的参数的情况下用值替换占位符
?我试过#{com.pkg.name.Constants.d}但它没用.
没有硬编码!!!
小智 11
<select id="getConvenienceStoreList" resultType ="Store">
SELECT * FROM Store
WHERE type = ${@foo.product.constant.StoreType@CONVENIENCE_STORE}
ORDER BY id
LIMIT #{start}, #{limit}
</select>
Run Code Online (Sandbox Code Playgroud)
参考:http://qiita.com/ApplePedlar/items/12dc389cc32f3db5557a
据我所知,对于 MyBatis 的开箱即用行为,您不能这样做。
您可以尝试为 ParameterHandler 编写一个拦截器并在那里注入值,但这并不总是可能的,因为您只能使用参数处理程序上的两种方法:
getParameterObject它返回发送到查询的参数(可以是常量、字符串、映射、自定义对象,甚至可以是 null,因为在您不发送参数的示例中)setParameters我想如果您知道参数在准备好的语句中的位置(大多数时候您可能不知道),您可以尝试设置该参数。我的建议是将其作为参数传递给您的查询。MyBatis 的拦截器功能没有很好的文档记录,因此您可能无法从一开始就获得正确的工作组合,并且最终可能会遇到更多的麻烦。