下面要给大家带来的是和ibatis相关的知识点,那么你对于动态拼接aql有多了解呢?下面一起来看一个实例吧。
在编写SqlMaps时,常常要将一个sql拆分成多个片段,对此,IBatis提供了一个非常简单实用的分割节点来进行sql分割,下面的话例举一个非常简单的例子,例如,要去查询一些学生的信息,下面是之前的写法:
<!--查询所有信息--> <select id="SelectAllCraft" resultMap="StudentMap"> SELECT Id, Name, Age, Address, ClassID from Student </select> <!--根据学生编号查询信息--> <select id="SelectAllCraft" resultMap="StudentMap" parameterClass="Int">> SELECT Id, Name, Age, Address, ClassID from Student Where Id=#Value# </select>
那么,现在使用sql标签的话,就可以这样写:
<sql id="selectAll"> select Id, Name, Age, Address, ClassID,ClassName from Student </sql> <!--查询所有信息--> <select id="SelectAllCraft" resultMap="StudentMap"> <include refid="SelectALL" /> </select> <!--根据编号查询信息--> <select id="SelectAllCraft" resultMap="StudentMap" parameterClass="Int"> <include refid="SelectALL" /> where id=#Value# </select>
这个表示要调用sql标签的id。
sql标签就好比C#里的定义一个字符串,里面存着一些值,能够被其他标签调用,这样的话就能够减少重复代码的书写。
下面再一起来看看ibatis动态拼接sql的实例吧。
实例:
<!--动态加载sql语句--> <select id="SelectByWhere" resultMap="StudentMap" resultClass="Hashtable"> <include refid="SelectALL" /> <include refid="s"></include> <dynamic prepend="where"> <isParameterPresent> <isNotEmpty prepend="and" property="Name"> Name like '%$Name$%' </isNotEmpty> <isNotEmpty prepend="and" property="Address"> Address like '%$Address$%' </isNotEmpty> <isGreaterThan prepend="and" property="ClassID" compareValue="0"> <!--大于--> ClassID=#ClassID# </isGreaterThan> <isNotEqual prepend="and" property="Age" compareValue="0"> <!--不等于--> Age=#Age# </isNotEqual> </isParameterPresent> </dynamic> order by Id $Orderby$ </select>
对于ibatis框架你还有什么想要了解的吗?请继续关注奇Q工具网的java架构师栏目的内容来进行了解和学习吧!
推荐阅读: