§<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是Java持久层框架,提供了动态SQL标签来实现动态查询。动态SQL标签可以根据不同的条件生成不同的SQL语句,从而提高查询效率和灵活性。 动态SQL片段 iBatis提供了动态SQL片段的功能,...
标题中的“ibatis标签”指的是在iBATIS框架中用于动态SQL的一个关键功能。iBATIS是一个优秀的持久层框架,它允许将SQL语句直接嵌入到Java代码中,简化了数据库操作。而`<iterate>`标签是iBATIS提供的一个便利的循环...
标题 "ibatis UPDATE 动态XML与insert" 涉及到的是MyBatis框架中对数据库数据进行更新(UPDATE)和插入(INSERT)操作的动态XML配置方式。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,...
通过在 `<select>` 标签中设置 `remapResults="true"`,可以有效地解决IBatis缓存动态字段带来的问题。这不仅避免了因缓存错误而导致的查询失败,还确保了程序能够灵活地处理动态表名和字段名。同时,需要注意的是,...
在ibatis中,`<dynamic>`标签是用来构建动态SQL的核心元素之一。当使用`<dynamic>`标签时,可以将一系列条件组合起来,根据参数的不同值来决定是否加入到最终的SQL语句中。例如,在给定的部分内容中,可以看到`...
iBATIS动态SQL主要通过XML映射文件中的特定标签实现,允许我们根据业务需求动态地构建SQL语句。这些动态元素使得SQL语句可以根据传入的参数值动态地调整,避免了大量IF-ELSE语句或者字符串拼接,提高了代码的可读性...
iBatis框架中的动态SQL主要通过XML映射文件来实现,它允许在映射文件中使用各种标签来控制SQL语句的生成过程。这些标签包括但不限于`<if>`、`<choose>`、`<when>`、`<otherwise>`、`<trim>`、`<where>`、`<set>`、`...
在SQL映射文件中,可以使用动态SQL来处理复杂的查询条件,如`<if>`、`<choose>`、`<when>`、`<otherwise>`等标签。 2. 数据库代码规范: - 在编写SQL时,应避免使用全模糊匹配`LIKE '%text%'`,而应尽可能使用带有...
在Ibatis的XML映射文件中,我们可以通过条件标签来构建动态SQL。这些标签包括`<if>`, `<choose>`, `<when>`, `<otherwise>`, `<where>`, `<set>`, `<foreach>`等。它们允许我们在不编写大量重复代码的情况下,根据...
本篇将深入探讨Ibatis3在Oracle数据库环境下的具体应用实例,涵盖CRUD(创建、读取、更新、删除)操作以及动态SQL的使用。 一、Ibatis3简介 Ibatis3是MyBatis的前身,它放弃了Hibernate的全对象关系映射,转而采用...
4. **动态SQL**:Ibatis的动态SQL功能非常强大,可以在XML映射文件中通过`<if>`、`<choose>`、`<when>`、`<otherwise>`、`<where>`等标签实现条件判断,使得SQL语句更加灵活。 5. **参数映射**:Ibatis支持多种方式...
### ibatis的动态查询知识点详解 #### 一、模糊查询 **知识点1:** 在进行模糊查询时,ibatis支持两种不同的语法标记:`#` 和 `$`。 1. **使用 `$value$` 进行模糊查询:** - 在进行模糊查询时,使用 `$value$` ...
Ibatis 的一大亮点是支持动态 SQL,可以使用 `<if>`、`<choose>`、`<when>`、`<otherwise>`、`<where>` 等标签根据条件动态构建 SQL 语句,提高代码复用性。 五、参数映射与结果映射 1. 参数映射:通过 `...
实际上,Ibatis还支持动态SQL、结果映射、参数映射等多种高级特性,可以实现更复杂的业务逻辑。例如,你可以通过使用`<if>`、`<choose>`等标签来编写条件语句,通过`<resultMap>`来定义复杂的对象关系映射。 学习...
总的来说,Ibatis的DTD文件是其核心配置语言的基石,它定义了所有可用的标签和它们的属性,是理解并有效使用Ibatis的关键。通过深入研究这两个DTD文件,开发者可以更全面地掌握Ibatis的配置语法,从而在实际项目中...
1. 动态SQL:Ibatis支持在XML或注解中编写动态SQL,根据条件灵活拼接SQL。 2. 缓存:提供本地缓存和二级缓存,提高数据读取速度。 3. 参数映射:通过`@Param`注解或`<param>`标签实现参数绑定。 4. 结果映射:通过`@...
在描述中提到的问题,"iBatis.net拼接字符串不能直接拷贝然后在dbms里执行",这实际上涉及到iBatis动态SQL的概念。iBatis并不鼓励直接复制SQL字符串到数据库管理系统(DBMS)进行执行,因为这样会丧失iBatis的一些...
此外,通过动态SQL,开发者可以根据条件灵活地修改查询,比如使用`<if>`、`<choose>`、`<when>`、`<otherwise>`等标签来实现条件判断。 2. 参数映射:Ibatis 提供了参数映射机制,可以通过`<parameterMap>`和`...