`
hujin1979
  • 浏览: 80144 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ibatis动态查询操作

阅读更多

本篇第一版本基于有一定了解的哥们准备的。之后有时间会把关联资料补齐,我也在整理学习中。开始转载记录:

 

<select id="SelectEemployee" parameterClass="string" resultMap = "employee-result"> select * from employee //动态SQL语句 <dynamic prepend="WHERE"> <isParameterPresent> emp_id = #value# </isParameterPresent> </dynamic> </select> </statements> </sqlMap>

 

 

 

补充规范示例:

 

<isGreaterThan prepend="and" compareValue="-1" property="State"> State = #State# </isGreaterThan> <isNotEqual prepend="and" property="OrderStateTime" compareValue="0001-1-1 0:00:00" > CreateDate>=#OrderStateTime# </isNotEqual> <isNotEqual prepend="and" property="OrderEndTime" compareValue="0001-1-1 0:00:00" > <![CDATA[ CreateDate <= #OrderEndTime#]]> </isNotEqual> <isNotEmpty prepend="and" property="OrderId"> id like '%$OrderId$%' </isNotEmpty>

 

 

/*动态SQL的写法:

开始 <dynamic

条件成立时前面要加的字符串 prepend ="字符串">

<属性关键字 (见下表)

prepend="字符串"

判断条件的对象属性名 property="字符串"

如果是属性关键字是比较条件时,字符串存放要比较的值compareValue="字符串">

要显示的条件名

</属性关键字>

结束</dynamic>

*/

/*动态SQL的参数有

 

 

属性关键字

含义

<isEqual>

如果参数相等于值则查询条件有效。

<isNotEqual>

如果参数不等于值则查询条件有效。

<isGreaterThan>

如果参数大于值则查询条件有效。

<isGreaterEqual>

如果参数等于值则查询条件有效。

<isLessEqual>

如果参数小于值则查询条件有效。如下所示:

<isLessEqual prepend = ”AND” property = ”age” compareValue = ”18” >

ADOLESCENT = ‘TRUE’

</isLessEqual>

<isPropertyAvailable>

如果参数有使用则查询条件有效。

<isNotPropertyAvailable>

如果参数没有使用则查询条件有效。

<isNull>

如果参数为NULL则查询条件有效。

<isNotNull>

如果参数不为NULL则查询条件有效。

<isEmpty>

如果参数为空则查询条件有效。

<isNotEmpty>

如果参数不为空则查询条件有效。参数的数据类型为CollectionString 时参数不为NULL或“”。如下所示:

<isNotEmpty prepend=”AND” property=”firstName” >

FIRST_NAME=#firstName#

</isNotEmpty>

<isParameterPresent>

如果参数类不为NULL则查询条件有效。

<isNotParameterPresent>

Checks to see if the parameter object is not present (null). Example Usage:

<isNotParameterPresent prepend=”AND”>

EMPLOYEE_TYPE = ‘DEFAULT’

</isNotParameterPresent>


 

其实在IBATIS中SQL的解析是比较符合常规的数据库的SQL操作的,它的XML解析功能做得是比较实用的,适合用JAVA程序员管用的思维,给一段代码:

 

<select id="querySysLogList" parameterClass="SystemLogPara" resultMap="SystemLogResult" >
     select  * from (
            SELECT 
          r.*,rownum rn from ( select * from AMS_SYSTEM_LOG t
           <dynamic prepend="where">
                 <isNotNull prepend="AND" property="userID">
                      t.UserID like '%$userID$%'
                 </isNotNull>
                <isNotNull prepend="AND" property="userName">
                      t.UserName like '%$userName$%'
                 </isNotNull>
                 <isNotNull prepend="AND" property="operObjectName">
                      t.OperObjectName like '%$operObjectName$%'
                 </isNotNull>
                  <isNotNull prepend="AND" property="theModule">
                      t.TheModule like '%$theModule$%'
                 </isNotNull>
                  <isNotNull prepend="AND" property="userIP">
                      t.UserIP like '%$userIP$%'
                 </isNotNull>
                 <isNotNull prepend="AND" property="operResult">
                    OperResult like '%$operResult$%'
                 </isNotNull>
                 <isNotNull prepend="AND" property="beginTime">
                     t.OperTime >= #beginTime#
                 </isNotNull>
                  <isNotNull prepend="AND" property="endTime">
                     <![CDATA[
                     t.OperTime <= #endTime#
                      ]]>
                 </isNotNull>
                 <isNotNull prepend="AND" property="userGroupList">
                    <iterate property="userGroupList" open="(" close=")" conjunction="OR">
	       t.userGroupKey like '%$userGroupList[]$%'
                    </iterate>
                 </isNotNull>
             </dynamic>
             order by t.OperTime desc
             ) r
               <![CDATA[
            
        ) s  where s.rn <= #endRowNum# and  s.rn >=#startRowNum# 
      ]]>
            
  </select>

 仔细看以上的查询配置不难看出,这个SQL提供了动态条件判断的物理分页查询,代码的效率还是不错的。


     

分享到:
评论

相关推荐

    IBATIS动态查询语句.doc

    本文将深入探讨IBATIS动态查询语句的运用,解析其背后的逻辑与机制,以及如何利用这些特性来增强查询的灵活性与安全性。 ### IBATIS动态查询基础 IBATIS,现在更广为人知的名字为MyBatis,是一种半自动映射的持久...

    动态ibatis查询语句配置

    首先,我们需要理解Ibatis动态SQL的基本概念。在Ibatis的XML映射文件中,我们可以通过条件标签来构建动态SQL。这些标签包括`&lt;if&gt;`, `&lt;choose&gt;`, `&lt;when&gt;`, `&lt;otherwise&gt;`, `&lt;where&gt;`, `&lt;set&gt;`, `&lt;foreach&gt;`等。它们...

    Ibatis复杂查询语句.doc

    在Ibatis中,复杂查询通常涉及到多个表的联接、条件动态拼接、子查询以及各种数据类型的处理。文档"Ibatis复杂查询语句.doc"所展示的查询语句就是一个很好的例子,展示了Ibatis如何处理复杂的数据库操作。接下来,...

    操作数据库 iBATIS查询

    ### 操作数据库iBATIS查询详解 #### 一、iBATIS中的LIKE查询技巧 iBATIS是一款优秀的Java持久层框架,它简化了基于SQL的程序编写,避免了程序员手动处理结果集和手工编写SQL语句。在进行数据库查询时,LIKE查询是...

    ibatis基本操作数据库

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

    iBatis条件查询

    在描述中提到的"按条件查询",就是通过iBatis动态构建SQL语句来实现的。开发者可以在SQL Map中定义一个模板SQL,然后在Java代码中传入参数,iBatis会自动替换SQL中的占位符,生成实际的查询语句。这种方式既避免了硬...

    ibatis多表查询

    在Ibatis中,多表查询是一项重要的功能,它允许我们处理复杂的数据库操作,例如一对多、多对一或一对一的关系。在这个例子中,我们将探讨如何使用Ibatis进行一对多的多表查询,以`book`和`user`两个表为例。 首先,...

    IBatis完成单表基本的数据库操作 模糊查询

    iBatis还支持动态SQL,使得在XML映射文件中构建复杂的查询变得非常灵活。比如,你可以根据参数是否为空来决定是否包含某个条件,这在处理模糊查询时尤其有用。 标签"源码"和"工具"暗示了这篇博客可能深入讲解了...

    Ibatis查询Id列表.doc

    根据提供的文档信息,我们可以深入探讨Ibatis框架中的一个具体应用场景:如何通过动态SQL查询特定条件下的ID列表。本文将从以下几个方面进行详细解析: ### 一、Ibatis简介 Ibatis是一个基于Java的持久层框架,它...

    解决IBatis缓存动态字段问题

    可以看到,在调用 `getResDataByCondition` 方法时,会进一步调用父类中的 `queryForListPagination` 方法来执行查询操作。为了确保每次查询都能正确获取到字段信息,这里需要确保缓存在查询前被清除或更新。 #### ...

    ibatis实现CRUD操作

    同时,Ibatis支持动态SQL,可以方便地处理复杂的查询逻辑。此外,它的学习曲线相对较平缓,适合对SQL有深入了解的开发者。 通过Ibatis提供的这些特性,我们可以高效地完成数据库的CRUD操作,同时保持代码的简洁性...

    iBATIS动态标签

    iBATIS动态标签是SQL映射文件中的一种功能强大的特性,它允许在SQL语句中进行条件判断,根据传入的参数动态生成合适的查询条件。动态标签主要用于提高灵活性,使得SQL映射文件能够适应多种查询场景,而无需为每种...

    ibatis 之分页

    2. **动态SQL**:Ibatis的动态SQL功能可以进一步优化分页查询。通过`&lt;if&gt;`、`&lt;choose&gt;`等标签,可以在SQL中根据条件动态插入分页语句,使得SQL更加灵活。 3. **PageHelper插件**:为了简化分页操作,社区开发了...

    IBatis常用操作封装

    4. **动态SQL**:`IBatis`的动态SQL功能非常强大,可以在映射文件中编写条件语句,如`if`, `choose`, `when`, `otherwise`等,根据传入参数动态生成SQL。这有助于减少代码重复,提高灵活性。 5. **事务管理**:`...

    ibatis做连接查询 .doc

    iBatis并不是像Hibernate那样完全自动管理数据库操作,而是将SQL语句的编写权交给开发者,这样可以更好地控制查询性能和复杂性。在进行连接查询时,iBatis允许我们在Mapper XML文件中编写自定义的JOIN语句,或者通过...

    ibatis多表查询过程

    在Spring框架中,可以使用`@Autowired`注解将SqlSessionTemplate或SqlSessionFactory注入到服务层,方便进行iBatis的事务管理和查询操作。 ### 11. 示例 以下是一个多表查询的XML映射文件示例: ```xml SELECT *...

    ibatis动态注入

    本文将深入探讨iBATIS动态注入的相关知识点。 iBATIS动态SQL主要通过XML映射文件中的特定标签实现,允许我们根据业务需求动态地构建SQL语句。这些动态元素使得SQL语句可以根据传入的参数值动态地调整,避免了大量IF...

    ibatis总结 ibatis ibatis ibatis ibatis

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

    ibatis and和or联合查询 .doc

    在ibatis中,实现复杂的`AND` 和 `OR` 联合查询可以通过动态SQL来完成。动态SQL允许在运行时动态地构建SQL语句,从而实现更加灵活的查询功能。 #### 四、示例解析 根据提供的部分代码,我们可以详细分析如何在...

    Ibatis查询语句里,可以使用多表查询

    ### iBatis 多表查询知识点详解 #### 一、iBatis简介 iBatis 是一款优秀的持久层框架,它将 SQL 映射到 Java 对象,简化了 JDBC 编程过程中的繁琐操作,提高了开发效率。iBatis 的核心功能包括 SQL 映射、动态 SQL...

Global site tag (gtag.js) - Google Analytics