借助mybatis实现动态sql语句

数据库 0 49040
00223927
00223927 LV2 关注 2021年5月21日 10:44 编辑
<p>有时候我们可能需要sql是可以动态配置的,比如部分动态报表之类,此功能可借助mybatis的功能实现,通过下面的方式可以获得动态sql最后生成的sql语句</p><pre><code>注意&gt;&lt;特殊字符不能出现<br>public static void main(String[] args) {<br> //参数<br> HashMap&lt;String,Object&gt; param=new HashMap&lt;&gt;();<br> param.put("id", "撒扥");<br> <br> //原sql<br> String sourceSQL = "&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n" + <br> "&lt;!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\"&gt;\r\n" + <br> "&lt;mapper namespace=\"customMapperUtils\"&gt;\r\n" + <br> " &lt;select id=\"selectData\" parameterType=\"map\" resultType=\"map\"&gt;\r\n" + <br> " select * from table where 1=1 \r\n" + <br> " &lt;if test=\"id!=null and id!=''\"&gt;\r\n" + <br> " and id=${id}\r\n" + <br> " &lt;/if&gt;\r\n" + <br> " &lt;/select&gt;\r\n" + <br> "&lt;/mapper&gt;";<br> <br> //解析<br> XMLMapperBuilder xmlMapperBuilder = new XMLMapperBuilder(new ReaderInputStream(new StringReader(sourceSQL),"UTF-8"), new Configuration(), sourceSQL, new HashMap&lt;String, XNode&gt;());<br> xmlMapperBuilder.parse();<br> MappedStatement mappedStatement = xmlMapperBuilder.getConfiguration().getMappedStatement("selectData");<br> String sql = mappedStatement.getBoundSql(param).getSql();<br> <br> <br> System.out.println(sql);<br> }</code></pre><p><br></p>
赞(0) 收藏(0)  分享
相关标签: 报表 动态sql mybatis
0个回复
  • 消灭零回复
Vaptcha启动中...