我想在 Oracle 12g 数据库中使用 mybatis 进行动态 sql 语句,我可以利用哈希映射来添加如下条件:
<select id="getUsers" resultType="hashmap" parameterType="hashmap">
select *
from users
<where>
<iterate var="i=0" increment>
${columni} like #{valuei}
</iterate>
</where>
</select>
我有办法完成类似的事情吗?
From 文档 http://mybatis.github.io/mybatis-3/sqlmap-xml.html:
字符串替换
默认情况下,使用#{}
语法将导致 MyBatis 生成PreparedStatement属性并根据PreparedStatement参数安全地设置值(例如?
)。虽然这更安全、更快并且几乎总是首选,但有时您只想直接将未经修改的字符串注入 SQL 语句中。例如,对于ORDER BY
,你可以使用这样的东西:
ORDER BY ${columnName}
这里MyBatis 不会修改或转义字符串。
这允许您例如将列名作为参数传递给查询等。
记得always清理直接粘贴到 SQL 的数据。
如果您需要生成多个条件WHERE
条款、使用<where>
标记为<foreach>
里面。注意<foreach>
具有允许指定分隔符、开始/结束字符串等的高级属性。结合${}
我之前提到过的符号允许构建动态WHERE
条款。有关示例,请参见这个答案 https://stackoverflow.com/a/7560384/1995170.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)