借助mybatis实现动态sql语句
提示:列表可左右滑动查看。
<p>有时候我们可能需要sql是可以动态配置的,比如部分动态报表之类,此功能可借助mybatis的功能实现,通过下面的方式可以获得动态sql最后生成的sql语句</p><pre><code>注意><特殊字符不能出现<br>public static void main(String[] args) {<br> //参数<br> HashMap<String,Object> param=new HashMap<>();<br> param.put("id", "撒扥");<br> <br> //原sql<br> String sourceSQL = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n" + <br> "<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\r\n" + <br> "<mapper namespace=\"customMapperUtils\">\r\n" + <br> " <select id=\"selectData\" parameterType=\"map\" resultType=\"map\">\r\n" + <br> " select * from table where 1=1 \r\n" + <br> " <if test=\"id!=null and id!=''\">\r\n" + <br> " and id=${id}\r\n" + <br> " </if>\r\n" + <br> " </select>\r\n" + <br> "</mapper>";<br> <br> //解析<br> XMLMapperBuilder xmlMapperBuilder = new XMLMapperBuilder(new ReaderInputStream(new StringReader(sourceSQL),"UTF-8"), new Configuration(), sourceSQL, new HashMap<String, XNode>());<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)
分享
相关标签: