本篇第一版本基于有一定了解的哥们准备的。之后有时间会把关联资料补齐,我也在整理学习中。开始转载记录:
<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>
|
如果参数不为空则查询条件有效。参数的数据类型为Collection、String 时参数不为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动态查询语句的运用,解析其背后的逻辑与机制,以及如何利用这些特性来增强查询的灵活性与安全性。 ### IBATIS动态查询基础 IBATIS,现在更广为人知的名字为MyBatis,是一种半自动映射的持久...
首先,我们需要理解Ibatis动态SQL的基本概念。在Ibatis的XML映射文件中,我们可以通过条件标签来构建动态SQL。这些标签包括`<if>`, `<choose>`, `<when>`, `<otherwise>`, `<where>`, `<set>`, `<foreach>`等。它们...
在Ibatis中,复杂查询通常涉及到多个表的联接、条件动态拼接、子查询以及各种数据类型的处理。文档"Ibatis复杂查询语句.doc"所展示的查询语句就是一个很好的例子,展示了Ibatis如何处理复杂的数据库操作。接下来,...
### 操作数据库iBATIS查询详解 #### 一、iBATIS中的LIKE查询技巧 iBATIS是一款优秀的Java持久层框架,它简化了基于SQL的程序编写,避免了程序员手动处理结果集和手工编写SQL语句。在进行数据库查询时,LIKE查询是...
在描述中提到的问题,"iBatis.net拼接字符串不能直接拷贝然后在dbms里执行",这实际上涉及到iBatis动态SQL的概念。iBatis并不鼓励直接复制SQL字符串到数据库管理系统(DBMS)进行执行,因为这样会丧失iBatis的一些...
在描述中提到的"按条件查询",就是通过iBatis动态构建SQL语句来实现的。开发者可以在SQL Map中定义一个模板SQL,然后在Java代码中传入参数,iBatis会自动替换SQL中的占位符,生成实际的查询语句。这种方式既避免了硬...
在Ibatis中,多表查询是一项重要的功能,它允许我们处理复杂的数据库操作,例如一对多、多对一或一对一的关系。在这个例子中,我们将探讨如何使用Ibatis进行一对多的多表查询,以`book`和`user`两个表为例。 首先,...
iBatis还支持动态SQL,使得在XML映射文件中构建复杂的查询变得非常灵活。比如,你可以根据参数是否为空来决定是否包含某个条件,这在处理模糊查询时尤其有用。 标签"源码"和"工具"暗示了这篇博客可能深入讲解了...
根据提供的文档信息,我们可以深入探讨Ibatis框架中的一个具体应用场景:如何通过动态SQL查询特定条件下的ID列表。本文将从以下几个方面进行详细解析: ### 一、Ibatis简介 Ibatis是一个基于Java的持久层框架,它...
可以看到,在调用 `getResDataByCondition` 方法时,会进一步调用父类中的 `queryForListPagination` 方法来执行查询操作。为了确保每次查询都能正确获取到字段信息,这里需要确保缓存在查询前被清除或更新。 #### ...
同时,Ibatis支持动态SQL,可以方便地处理复杂的查询逻辑。此外,它的学习曲线相对较平缓,适合对SQL有深入了解的开发者。 通过Ibatis提供的这些特性,我们可以高效地完成数据库的CRUD操作,同时保持代码的简洁性...
iBATIS动态标签是SQL映射文件中的一种功能强大的特性,它允许在SQL语句中进行条件判断,根据传入的参数动态生成合适的查询条件。动态标签主要用于提高灵活性,使得SQL映射文件能够适应多种查询场景,而无需为每种...
2. **动态SQL**:Ibatis的动态SQL功能可以进一步优化分页查询。通过`<if>`、`<choose>`等标签,可以在SQL中根据条件动态插入分页语句,使得SQL更加灵活。 3. **PageHelper插件**:为了简化分页操作,社区开发了...
4. **动态SQL**:`IBatis`的动态SQL功能非常强大,可以在映射文件中编写条件语句,如`if`, `choose`, `when`, `otherwise`等,根据传入参数动态生成SQL。这有助于减少代码重复,提高灵活性。 5. **事务管理**:`...
iBatis并不是像Hibernate那样完全自动管理数据库操作,而是将SQL语句的编写权交给开发者,这样可以更好地控制查询性能和复杂性。在进行连接查询时,iBatis允许我们在Mapper XML文件中编写自定义的JOIN语句,或者通过...
在Spring框架中,可以使用`@Autowired`注解将SqlSessionTemplate或SqlSessionFactory注入到服务层,方便进行iBatis的事务管理和查询操作。 ### 11. 示例 以下是一个多表查询的XML映射文件示例: ```xml SELECT *...
本文将深入探讨iBATIS动态注入的相关知识点。 iBATIS动态SQL主要通过XML映射文件中的特定标签实现,允许我们根据业务需求动态地构建SQL语句。这些动态元素使得SQL语句可以根据传入的参数值动态地调整,避免了大量IF...
在SQL映射文件中,可以使用动态SQL来处理复杂的查询条件,如`<if>`、`<choose>`、`<when>`、`<otherwise>`等标签。 2. 数据库代码规范: - 在编写SQL时,应避免使用全模糊匹配`LIKE '%text%'`,而应尽可能使用带有...
在ibatis中,实现复杂的`AND` 和 `OR` 联合查询可以通过动态SQL来完成。动态SQL允许在运行时动态地构建SQL语句,从而实现更加灵活的查询功能。 #### 四、示例解析 根据提供的部分代码,我们可以详细分析如何在...
### iBatis 多表查询知识点详解 #### 一、iBatis简介 iBatis 是一款优秀的持久层框架,它将 SQL 映射到 Java 对象,简化了 JDBC 编程过程中的繁琐操作,提高了开发效率。iBatis 的核心功能包括 SQL 映射、动态 SQL...