ibatis动态拼接sql实例分享

KLQ 2020-07-28 09:04:44 java常见问答 7592

下面要给大家带来的是和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标签的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架构师栏目的内容来进行了解和学习吧!

推荐阅读:

ibatis框架如何测试?ibatis入门解析

ibatis框架怎么进行并列条件判断?

ibatis框架是mybatis吗?有什么区别?