`

iBATIS动态标签

阅读更多

文章转自:
http://xueliang1yi.blog.163.com/blog/static/114557016201002984135366/
&<dynamic>标签
§二元标签
§一元标签
§<iterate>标签
§ 共同的属性 prepend,open,close
<dynamic>标签

§<dynamic>标签
§属性 prepend,open,close
二元条件标签

§<isEqual property=“age” compareValue=“20”>  
比较属性值和静态值或另一个属性值是否相等 

§<isNotEqual>  
比较属性值和静态值或另一个属性值是否不相等。 

§<isGreaterThan>  
比较属性值是否大于静态值或另一个属性值。 

§<isGreaterEqual>  
比较属性值是否大于等于静态值或另一个属性值。 

§<isLessThan>  
比较属性值是否小于静态值或另一个属性值。 

§<isLessEqual>  
比较属性值是否小于等于静态值或另一个属性值。 



一元条件标签


§<isPropertyAvailable>  
检查是否存在该属性(存在parameter bean的属性) 

§<isNotPropertyAvailable>  
检查是否不存在该属性(不存在parameter bean的属性) 

§<isNull>  
检查属性是否为null 

§<isNotNull>  
检查属性是否不为null 

§<isEmpty>  
检查Collection.size()的值,属性的String或String.valueOf()值,是否为null或空(“”或size() < 1) 

§<isNotEmpty>  
检查Collection.size()的值,属性的String或String.valueOf()值,是否不为null或不为空(“”或size() > 0)


其他标签





§<isParameterPresent>  
检查是否存在参数对象(不为null)

§<isNotParameterPresent>  
检查是否不存在参数对象(参数对象为null)

§<iterate>  
遍历类型为java.util.List的元素。 




view plaincopy to clipboardprint?
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"  
   "http://ibatis.apache.org/dtd/sql-map-2.dtd">

<sqlMap>

    <!-- 动态查询1-->
    <select id="getOrders1" parameterClass="com.air.Account"
        resultClass="com.air.Product">
        SELECT   
            orders.id as id,   
            orders.product as product,  
            orders.customer as customer   
        FROM orders  
        <dynamic prepend=" WHERE ">
            <isNull property="username">customer IS NOT NULL</isNull>
            <isNotNull property="username">
                orders.customer=#username#  
            </isNotNull>
        </dynamic>
    </select>

    <!-- 动态查询2-->
    <select id="getOrders2" parameterClass="com.air.Account"
        resultClass="com.air.Product">
        SELECT   
            o.id as id,   
            o.product as product,  
            o.customer as customer  
        FROM orders o   
            <isNotNull property="username">
                INNER JOIN user_account a ON o.customer=a.username   
            </isNotNull>
            <dynamic prepend="where ">
                <isNotEmpty property="groupname" prepend="and " open="(" close=")">
                    a.groupname=#groupname#  
                </isNotEmpty>
            </dynamic>
    </select>

    <!-- 动态查询3-->
    <select id="getOrders3" parameterClass="com.air.Product"
        resultClass="com.air.Product">
        SELECT   
            orders.id as id,   
            orders.product as product,  
            orders.customer as customer   
        FROM orders   
        <dynamic prepend="WHERE ">
            <isNotEmpty property="product" prepend="and" open="(" close=")" removeFirstPrepend="true">
                product=#product#  
            </isNotEmpty>
            <isNotEmpty property="customer" prepend="and" open="(" close=")">
                customer=#customer#  
            </isNotEmpty>
        </dynamic>
    </select>
      
    <!-- 动态查询4-->
    <select id="getOrders4" parameterClass="com.air.Product"
        resultClass="com.air.Product">
        SELECT   
            *  
        FROM orders   
        <dynamic prepend="WHERE ">
            <iterate property="keywords" open="(" close=")" conjunction="OR">   
                product=#keywords[]#  
            </iterate>
        </dynamic>
<!--     <dynamic prepend="WHERE product IN ">-->
<!--         <iterate property="keywords" open="(" close=")" conjunction=","> -->
<!--             #keywords[]#-->
<!--         </iterate>-->
<!--     </dynamic>-->
    </select>
</sqlMap>
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
   "http://ibatis.apache.org/dtd/sql-map-2.dtd">

<sqlMap>

<!-- 动态查询1-->
<select id="getOrders1" parameterClass="com.air.Account"
   resultClass="com.air.Product">
   SELECT
    orders.id as id,
    orders.product as product,
    orders.customer as customer
   FROM orders
   <dynamic prepend=" WHERE ">
    <isNull property="username">customer IS NOT NULL</isNull>
    <isNotNull property="username">
     orders.customer=#username#
    </isNotNull>
   </dynamic>
</select>

<!-- 动态查询2-->
<select id="getOrders2" parameterClass="com.air.Account"
   resultClass="com.air.Product">
   SELECT
    o.id as id,
    o.product as product,
    o.customer as customer
   FROM orders o
    <isNotNull property="username">
     INNER JOIN user_account a ON o.customer=a.username
    </isNotNull>
    <dynamic prepend="where ">
     <isNotEmpty property="groupname" prepend="and " open="(" close=")">
      a.groupname=#groupname#
     </isNotEmpty>
    </dynamic>
</select>

<!-- 动态查询3-->
<select id="getOrders3" parameterClass="com.air.Product"
   resultClass="com.air.Product">
   SELECT
    orders.id as id,
    orders.product as product,
    orders.customer as customer
   FROM orders
   <dynamic prepend="WHERE ">
    <isNotEmpty property="product" prepend="and" open="(" close=")" removeFirstPrepend="true">
     product=#product#
    </isNotEmpty>
    <isNotEmpty property="customer" prepend="and" open="(" close=")">
     customer=#customer#
    </isNotEmpty>
   </dynamic>
</select>

<!-- 动态查询4-->
<select id="getOrders4" parameterClass="com.air.Product"
   resultClass="com.air.Product">
   SELECT
    *
   FROM orders
   <dynamic prepend="WHERE ">
    <iterate property="keywords" open="(" close=")" conjunction="OR">
     product=#keywords[]#
    </iterate>
   </dynamic>
<!--   <dynamic prepend="WHERE product IN ">-->
<!--    <iterate property="keywords" open="(" close=")" conjunction=","> -->
<!--     #keywords[]#-->
<!--    </iterate>-->
<!--   </dynamic>-->
</select>
</sqlMap>
分享到:
评论

相关推荐

    ibatis动态SQL标签用法

    iBatis动态SQL标签用法 iBatis是Java持久层框架,提供了动态SQL标签来实现动态查询。动态SQL标签可以根据不同的条件生成不同的SQL语句,从而提高查询效率和灵活性。 动态SQL片段 iBatis提供了动态SQL片段的功能,...

    ibatis标签

    标题中的“ibatis标签”指的是在iBATIS框架中用于动态SQL的一个关键功能。iBATIS是一个优秀的持久层框架,它允许将SQL语句直接嵌入到Java代码中,简化了数据库操作。而`&lt;iterate&gt;`标签是iBATIS提供的一个便利的循环...

    ibatis UPDATE 动态XML与insert

    标题 "ibatis UPDATE 动态XML与insert" 涉及到的是MyBatis框架中对数据库数据进行更新(UPDATE)和插入(INSERT)操作的动态XML配置方式。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,...

    解决IBatis缓存动态字段问题

    通过在 `&lt;select&gt;` 标签中设置 `remapResults="true"`,可以有效地解决IBatis缓存动态字段带来的问题。这不仅避免了因缓存错误而导致的查询失败,还确保了程序能够灵活地处理动态表名和字段名。同时,需要注意的是,...

    ibatis的dynamicSQL中,关于prepend的使用

    在ibatis中,`&lt;dynamic&gt;`标签是用来构建动态SQL的核心元素之一。当使用`&lt;dynamic&gt;`标签时,可以将一系列条件组合起来,根据参数的不同值来决定是否加入到最终的SQL语句中。例如,在给定的部分内容中,可以看到`...

    ibatis动态注入

    iBATIS动态SQL主要通过XML映射文件中的特定标签实现,允许我们根据业务需求动态地构建SQL语句。这些动态元素使得SQL语句可以根据传入的参数值动态地调整,避免了大量IF-ELSE语句或者字符串拼接,提高了代码的可读性...

    iBatis的动态SQL语句

    iBatis框架中的动态SQL主要通过XML映射文件来实现,它允许在映射文件中使用各种标签来控制SQL语句的生成过程。这些标签包括但不限于`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`、`&lt;trim&gt;`、`&lt;where&gt;`、`&lt;set&gt;`、`...

    ibatis总结 ibatis ibatis ibatis ibatis

    在SQL映射文件中,可以使用动态SQL来处理复杂的查询条件,如`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`等标签。 2. 数据库代码规范: - 在编写SQL时,应避免使用全模糊匹配`LIKE '%text%'`,而应尽可能使用带有...

    动态ibatis查询语句配置

    在Ibatis的XML映射文件中,我们可以通过条件标签来构建动态SQL。这些标签包括`&lt;if&gt;`, `&lt;choose&gt;`, `&lt;when&gt;`, `&lt;otherwise&gt;`, `&lt;where&gt;`, `&lt;set&gt;`, `&lt;foreach&gt;`等。它们允许我们在不编写大量重复代码的情况下,根据...

    ibatis3应用实例(oracle数据库)

    本篇将深入探讨Ibatis3在Oracle数据库环境下的具体应用实例,涵盖CRUD(创建、读取、更新、删除)操作以及动态SQL的使用。 一、Ibatis3简介 Ibatis3是MyBatis的前身,它放弃了Hibernate的全对象关系映射,转而采用...

    ibatis demo,ibatis例子,ibatis示例

    4. **动态SQL**:Ibatis的动态SQL功能非常强大,可以在XML映射文件中通过`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`、`&lt;where&gt;`等标签实现条件判断,使得SQL语句更加灵活。 5. **参数映射**:Ibatis支持多种方式...

    ibatis的动态查询

    ### ibatis的动态查询知识点详解 #### 一、模糊查询 **知识点1:** 在进行模糊查询时,ibatis支持两种不同的语法标记:`#` 和 `$`。 1. **使用 `$value$` 进行模糊查询:** - 在进行模糊查询时,使用 `$value$` ...

    Ibatis 入门经典 实例

    Ibatis 的一大亮点是支持动态 SQL,可以使用 `&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`、`&lt;where&gt;` 等标签根据条件动态构建 SQL 语句,提高代码复用性。 五、参数映射与结果映射 1. 参数映射:通过 `...

    Ibatis入门例子,Ibatis教程

    实际上,Ibatis还支持动态SQL、结果映射、参数映射等多种高级特性,可以实现更复杂的业务逻辑。例如,你可以通过使用`&lt;if&gt;`、`&lt;choose&gt;`等标签来编写条件语句,通过`&lt;resultMap&gt;`来定义复杂的对象关系映射。 学习...

    ibatis的dtd文件

    总的来说,Ibatis的DTD文件是其核心配置语言的基石,它定义了所有可用的标签和它们的属性,是理解并有效使用Ibatis的关键。通过深入研究这两个DTD文件,开发者可以更全面地掌握Ibatis的配置语法,从而在实际项目中...

    ibatisDemo 入门源码

    1. 动态SQL:Ibatis支持在XML或注解中编写动态SQL,根据条件灵活拼接SQL。 2. 缓存:提供本地缓存和二级缓存,提高数据读取速度。 3. 参数映射:通过`@Param`注解或`&lt;param&gt;`标签实现参数绑定。 4. 结果映射:通过`@...

    ibatis基本操作数据库

    在描述中提到的问题,"iBatis.net拼接字符串不能直接拷贝然后在dbms里执行",这实际上涉及到iBatis动态SQL的概念。iBatis并不鼓励直接复制SQL字符串到数据库管理系统(DBMS)进行执行,因为这样会丧失iBatis的一些...

    ibatis

    此外,通过动态SQL,开发者可以根据条件灵活地修改查询,比如使用`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`等标签来实现条件判断。 2. 参数映射:Ibatis 提供了参数映射机制,可以通过`&lt;parameterMap&gt;`和`...

Global site tag (gtag.js) - Google Analytics