<!-- 动态数据查询 id="自定义名称" resultClass="返回结果类型" resultSetType="设置结果类型"-->
<select id="BREAKSLISTSQL" resultClass="HashMap" resultSetType="SCROLL_INSENSITIVE">
SELECT D.*,G.NAME AS ANALYSEGROUPID ,V.RegistrationNO AS VehicleID
FROM ANA_DrivingBreak D
LEFT JOIN ANA_AnalyseGroups G ON D.AnalyseGroupID=G.ID
LEFT JOIN dbo.MSC_Vehicle V ON D.VehicleID=V.ID
<dynamic prepend="WHERE"> <!--动态添加条件-->
<isNotNull property="VEHICLEID"> <!--判断属性是否为空-->
<isNotEqual property="VEHICLEIDSIZE" compareValue="0" prepend="AND">
V.RegistrationNO IN <!--property="listData" 循环执行传进来的数据 in(值)-->
<iterate property="VEHICLEID" open="(" close=")" conjunction=",">
'$VEHICLEID[]$' <!--使用list保存数据,这里使用'$VEHICLEID[]$' 把值取出来-->
</iterate>
</isNotEqual>
<isEqual property="VEHICLEIDSIZE" compareValue="0" prepend="AND">
1 = 0 <!--property="listSize" 条件成立继续执行-->
</isEqual>
</isNotNull>
<!-- 查询本月数据 -->
<isEqual property="TIMETYPE" compareValue="1" prepend="AND">
MONTH(GenerateTime) = MONTH(GETDATE()) AND YEAR(GenerateTime) = YEAR(GETDATE())
</isEqual>
<!-- 查询上月数据 -->
<isEqual property="TIMETYPE" compareValue="2" prepend="AND">
MONTH(GenerateTime) = MONTH(GETDATE()) -1 AND YEAR(GenerateTime) = YEAR(GETDATE())
</isEqual>
<!-- 查询今天数据 -->
<isEqual property="TIMETYPE" compareValue="3" prepend="AND">
DAY(GenerateTime) = DAY(GETDATE()) AND MONTH(GenerateTime) = MONTH(GETDATE()) AND YEAR(GenerateTime) = YEAR(GETDATE())
</isEqual>
<!-- 查询昨天数据 -->
<isEqual property="TIMETYPE" compareValue="4" prepend="AND">
DAY(GenerateTime) = DAY(GETDATE())-1 AND MONTH(GenerateTime) = MONTH(GETDATE()) AND YEAR(GenerateTime) = YEAR(GETDATE())
</isEqual>
<!-- 查询自定义数据-->
<isGreaterEqual property="TIMETYPE" compareValue="5" prepend="AND">
GenerateTime BETWEEN '$BEGINTIME$' AND '$ENDTIME$'
</isGreaterEqual>
</dynamic>
ORDER BY D.ID DESC
</select>
分享到:
相关推荐
**知识点2:** 多条件组合查询是指在一个查询语句中同时使用多个条件,以满足更复杂的查询需求。 1. **使用 `<dynamic>` 标签进行多条件组合查询:** - `<dynamic>` 标签允许根据传入的参数动态生成 SQL 语句。 -...
iBatis的一大特性是动态SQL,它允许在XML映射文件中编写条件语句,根据传入的参数动态构建SQL。这极大地提高了SQL的灵活性,减少了重复代码。 五、事务管理 iBatis支持自动和手动的事务管理。在Java代码中,可以...
Ibatis 的一大亮点是支持动态 SQL,开发者可以在 SQL 映射文件中使用条件判断、循环等结构,使得 SQL 语句能够根据传入参数的不同而变化。 **4. MyBatis vs Ibatis** 尽管 Ibatis 在后期演进成了 MyBatis,两者在...
Ibatis支持动态SQL,可以在XML映射文件中使用`<if>`、`<choose>`、`<when>`、`<otherwise>`等标签,根据条件动态生成SQL语句。 7. **参数处理** 使用`@Param`注解指定参数名,配合`#{}`占位符,可以实现复杂的...
Ibatis是一个支持普通SQL查询、存储过程以及高级映射的优秀持久层框架。Ibatis可以让你直接编写原生态SQL,可以严格控制SQL执行性能,灵活度极高,尤其适合对SQL有特殊需求的项目。 ### SQL语句详解 #### 1. 删除...
总结,Ibatis通过SQL映射文件提供了强大的数据操作能力,包括基本的CRUD操作,调用存储过程以利用数据库的高级功能,以及使用动态SQL进行灵活的查询。掌握这些知识点,能让你在Java后端开发中更加游刃有余。学习和...
**Ibatis 入门实例详解** Ibatis 是一个优秀的轻量级 Java ORM(对象关系映射)框架...同时,这个实例也鼓励学习者进一步探索 Ibatis 的高级特性,如事务控制、数据源配置、性能优化等,以提升其在实际开发中的技能。
在iBATIS配置方面,SqlMapClient是iBATIS的核心组件,它负责管理SqlMap实例,这些实例对应于数据库中的不同表或者存储过程。XmlSqlMapClientBuilder用于解析XML配置文件,构建SqlMapClient实例。SqlMapClient支持...
在"Ibatis动态查询例子(#和$以及iterate等的用法) - Java - JavaEye论坛.mht"这个文件中,可能包含了JavaEye社区成员关于Ibatis动态查询的深入讨论和示例。这些讨论可能涵盖了实际开发中的问题和解决方案,比如如何...
在进行数据库查询时,经常会遇到需要根据多个值进行查询的情况,这时`IN`语句就显得尤为重要。`IN`语句可以用于判断某个字段的值是否在一个指定的列表之中,非常适用于批量数据的处理。而在ibatis3.0框架中,如何...
在关系型数据库中,一对多关联是非常常见的一种数据关系,例如一个用户可以拥有多个订单,一个部门可以包含多个员工等。在iBatis中,我们可以通过配置XML映射文件来实现这种关联。 1. **一对多关联映射原理** 一对...
通过`<choose>`/`<when>`/`<otherwise>`结构,可以根据多个条件生成不同的查询语句。 #### 五、总结 通过本文的学习,我们了解了ibatis的基本使用方法,包括如何编写各种类型的SQL语句,并掌握了动态SQL的相关技巧...
iBatis允许开发者配置多个数据源,这在处理分布式数据库或读写分离的场景中非常有用。通过配置数据源,iBatis可以在运行时选择合适的数据库进行操作。 8. 性能优化: iBatis的性能优化主要体现在减少不必要的对象...
iBATIS是一个轻量级的Java持久层框架,它提供了SQL映射机制,将数据库操作与业务逻辑解耦,使得开发者可以编写动态的SQL来控制数据库。本开发文档主要涵盖iBATIS的配置、使用方法以及相关的教程。 一、iBATIS简介 ...
iBatis支持多种查询方式,包括单个结果、多个结果和动态SQL。例如,你可以通过`selectUserById`方法来获取特定ID的用户信息,该方法会在XML映射文件中有一个SELECT语句,根据传入的ID参数进行查询。如果需要查询多条...
在Ibatis中,如果一个方法需要接收多个参数,可以使用@Param注解为每个参数命名,然后在SQL语句中通过占位符引用它们。例如,`@Select("SELECT * FROM table WHERE id = #{id} AND name = #{name}")`。 4. **...
通过 `<select>`、`<insert>`、`<update>` 和 `<delete>` 标签,开发者可以编写复杂的查询,并利用参数绑定来动态传入值。 3. **动态 SQL**:iBatis 提供了一种强大的动态 SQL 功能,允许在映射文件中使用条件语句...
ibatis允许开发者编写动态SQL语句,通过传入的参数动态生成不同的SQL查询,这对于复杂的查询场景非常有用。 - **事务管理** ibatis支持基于JDBC和JTA的事务管理机制。基于JDBC的事务管理适用于简单的应用程序;而...
- **一对多关联**:使用嵌套查询或嵌套结果的方式,实现一个Java对象关联多个子对象,如一个用户关联多个订单。 - **一对一关联**:通过外键或主键关联,实现两个Java对象之间的关联,如一个用户关联一个地址。 - **...