`
xys_777
  • 浏览: 211411 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

iBATIS动态标签

 
阅读更多

§<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