<resultMap class="java.util.HashMap" id="statistic_result">
<result property="TOTAL" javaType="java.lang.Integer"/>
<result property="SUCCESS" javaType="java.lang.Integer"/>
<result property="TOTAL_MONEY" javaType="java.lang.Double"/>
<result property="TOTAL_SUCCESS_MONEY" javaType="java.lang.Double"/>
<result property="TOTAL_COMMISSION" javaType="java.lang.Double"/>
</resultMap>
<select id="statistic" parameterClass="com.hanpeng.base.phone.model.TPhoneSale" resultMap="statistic_result" >
<![CDATA[
select
count(*) as TOTAL,
nvl(sum(decode(state,'0',1,0)),0) as SUCCESS,
nvl(sum(money),0) as TOTAL_MONEY,
nvl(sum(decode(state,'0',money,0)),0) as TOTAL_SUCCESS_MONEY,
nvl(sum(decode(state,'0',commission,0)),0) as TOTAL_COMMISSION
FROM T_PHONE_SALE ]]>
<dynamic prepend="WHERE">
<isNotEmpty prepend=" AND " property="saleNum">
SALE_NUM = #saleNum# </isNotEmpty>
<isNotEmpty prepend=" AND " property="bussinessId">
BUSSINESS_ID = #bussinessId# </isNotEmpty>
<isNotEmpty prepend=" AND " property="phone">
PHONE = #phone# </isNotEmpty>
<isNotEmpty prepend=" AND " property="areaCode">
AREA_CODE = #areaCode# </isNotEmpty>
<isNotEmpty prepend=" AND " property="phoneArea">
PHONE_AREA = #phoneArea# </isNotEmpty>
<isNotEmpty prepend=" AND " property="typeCode">
TYPE_CODE = #typeCode# </isNotEmpty>
<isNotEmpty prepend=" AND " property="money">
MONEY = #money# </isNotEmpty>
<isNotEmpty prepend=" AND " property="price">
PRICE = #price# </isNotEmpty>
<isNotEmpty prepend=" AND " property="collect">
COLLECT = #collect# </isNotEmpty>
<isNotEmpty prepend=" AND " property="commission">
COMMISSION = #commission# </isNotEmpty>
<isNotEmpty prepend=" AND " property="beginTime">
<![CDATA[
CREATE_DATE > to_date(#beginTime#,'yyyy-mm-dd hh24:mi:ss') ]]></isNotEmpty>
<isNotEmpty prepend=" AND " property="endTime">
<![CDATA[
CREATE_DATE < to_date(#endTime#,'yyyy-mm-dd hh24:mi:ss') ]]></isNotEmpty>
<isNotEmpty prepend=" AND " property="finishDate">
FINISH_DATE = #finishDate# </isNotEmpty>
<isNotEmpty prepend=" AND " property="employeeId">
EMPLOYEE_ID = #employeeId# </isNotEmpty>
<isNotEmpty prepend=" AND " property="states">
<iterate property="states" open="(" close=")" conjunction="OR">
<isNotEqual compareValue="1" property="states[]">
STATE=#states[]#
</isNotEqual>
<isEqual compareValue="1" property="states[]">
STATE not in('0','-1')
</isEqual>
</iterate>
</isNotEmpty>
<isNotEmpty prepend=" AND " property="oneSide">
ONE_SIDE = #oneSide# </isNotEmpty>
<isNotEmpty prepend=" AND " property="oneEmployee">
ONE_EMPLOYEE = #oneEmployee# </isNotEmpty>
<isNotEmpty prepend=" AND " property="oneRemark">
ONE_REMARK = #oneRemark# </isNotEmpty>
<isNotEmpty prepend=" AND " property="reverse">
REVERSE = #reverse# </isNotEmpty>
<isNotEmpty prepend=" AND " property="reverseEmployee">
REVERSE_EMPLOYEE = #reverseEmployee# </isNotEmpty>
<isNotEmpty prepend=" AND " property="reverseRemark">
REVERSE_REMARK = #reverseRemark# </isNotEmpty>
<isNotEmpty prepend=" AND " property="supplyFailed">
SUPPLY_FAILED = #supplyFailed# </isNotEmpty>
<isNotEmpty prepend=" AND " property="beforeAccount">
BEFORE_ACCOUNT = #beforeAccount# </isNotEmpty>
<isNotEmpty prepend=" AND " property="afterAccount">
AFTER_ACCOUNT = #afterAccount# </isNotEmpty>
<isNotEmpty prepend=" AND " property="beforeCommission">
BEFORE_COMMISSION = #beforeCommission# </isNotEmpty>
<isNotEmpty prepend=" AND " property="afterCommission">
AFTER_COMMISSION = #afterCommission# </isNotEmpty>
<isNotEmpty prepend=" AND " property="cost">
COST = #cost# </isNotEmpty>
<isNotEmpty prepend=" AND " property="operators">
OPERATORS_CODE in
<iterate property="operators" open="(" close=")" conjunction=",">
#operators[]#
</iterate>
</isNotEmpty>
<isNotEmpty prepend=" AND " property="clientName">
CLIENT_NAME = #clientName# </isNotEmpty>
<isNotEmpty prepend=" AND " property="clientMoney">
CLIENT_MONEY = #clientMoney# </isNotEmpty>
</dynamic>
</select>
result 标签中nullValue属性貌似是默认值(未测试)
分享到:
相关推荐
在iBatis中,`<iterate>`标签是一个非常实用的功能,它允许我们处理集合数据,如数组、List或Map等,进行循环遍历并生成动态SQL语句。下面我们将详细探讨`<iterate>`标签的用法及其示例。 `<iterate>`标签的主要...
在此映射文件中,我们定义了存储过程的调用方式,并指定了参数类型以及返回结果的映射规则。 ##### Java代码示例 ```java public class WealthDealDetailService { private WealthDealDetailMapper mapper; ...
在 ibatis 中,可以使用 `<select>` 元素来定义 SQL 查询,并通过 `resultClass` 属性指定结果集的类型。为了使查询结果能够适应变化的列名和列数,我们需要设置 `remapResults` 属性为 `true`。 ```xml <!-- ...
在iBatis中,结果集的Map封装是通过`<resultMap>`标签来定义的,它可以指定列名或别名作为键,Java字段名作为值。例如: ```xml ``` 在这个例子中,`UserMap`结果集映射将数据库中的`user_id`、`user_name...
- `resultType="domain.blog.Post"`指定了返回结果的数据类型。 - `<foreach>`标签用来遍历传入的`list`集合,`list`应该是一个包含多个ID值的列表。 - `#{item}`表示每次循环时取出的ID值。 #### 六、实际应用案例...
在ibatis中,`parameterClass`属性用于指定传递给SQL语句的参数类型。例如,在给定的部分内容中: ```xml select rf.role_id as roleId from st_rolefunction rf where rf.fnc_id=30 rf.role_id=#roleId# ...
这里的 `namespace` 代表一个命名空间,`select` 标签定义了一个查询操作,`id` 属性是查询的唯一标识,`parameterClass` 指定输入参数的类型,`resultClass` 定义了返回结果的对象类型。 在 Java 代码中,我们需要...
与Eclipse中的Abator不同,iBatis Plugin不仅限于代码生成,而是全方位地优化了iBatis的开发体验。 **配置iBatis Plugin** 首先,你需要从IntelliJ IDEA的插件市场下载iBatis Plugin。安装完成后,配置数据源...
iBatis 是一款著名的开源持久层框架,它允许开发者将SQL语句直接写在XML配置文件中,提供了灵活的数据库交互方式,避免了过多的JDBC代码和手动设置参数以及获取结果集。在这个"iBatis Web用法实例"中,我们将深入...
如果字段名中包含`#`,记得在XML配置中正确地转义它,以避免解析错误。 总结来说,iBATIS的参数处理机制提供了灵活性和安全性,`$`和`#`的使用需要根据具体需求来选择。理解它们的工作原理对于编写高效、安全的SQL...
- `mbs_txn_dtll`表中的`ext_error_cd`字段与`mbs_param`表中的`param_nm`字段相匹配。 - 条件: - 账户号: `l.orig_acct_no=#acct#` - 交易类型: `l.type_cd='1000'` - 交易代码: `l.txn_code='D0012'` - 组织...
Ibatis支持多种参数映射方式,如简单类型、Map、POJO对象等,通过`#{}`占位符进行绑定。 6. **结果映射**:Ibatis可以自动将查询结果转换为Java对象。在映射文件中定义`resultMap`,指定字段与Java属性的对应关系,...
在Mapper XML文件中编写UPDATE语句,指定需要修改的字段和条件。在Java接口中定义相应的方法,传入需要更新的对象或参数。 4. 删除>Delete):删除操作对应DELETE语句。XML文件中定义删除条件,Java接口中声明方法。...
- `queryForMap(String id, Object parameterObject, String keyProp, String valueProp)`:执行指定ID的SQL语句,并将结果集中指定字段作为`Map`的键,同时指定另一个字段作为`Map`的值。 以上接口方法为iBatis...
- **3.2 选择性查询**: iBatis允许用户指定需要查询的字段,避免不必要的数据传输。 - **3.2.1 Hibernate**: 默认查询所有字段,即使某些字段很大且不需要。 - **3.2.2 Hibernate lazy load限制**: 在需要完整对象...
基于描述,"ibatis_test测试"可能涉及到创建数据库表和库,并根据Java类的set-get方法来建立字段映射。在测试过程中,通常会执行以下步骤: - 创建数据库表结构,根据Java实体类的属性来设计表字段。 - 编写...
你可以指定字段与Java对象属性的对应关系,包括基本类型、复杂类型的映射。 iBATIS 3(MyBatis)是一个升级版,它在iBATIS的基础上进行了改进,引入了更多的新特性,如注解支持、更强的类型安全、更灵活的SQL构造等...
在登录方法中,我们通过`SqlSession`打开一个事务,调用`selectOne`方法执行查询,如果找到匹配的用户则返回用户对象,否则抛出异常或返回错误信息。 此外,为了确保安全性,用户输入的密码通常需要在客户端进行...
2. **创建数据库表**:本教程中使用了一个简单的`Account`表,包含`username`和`password`两个字段。 3. **配置文件详解**: - **sql-map-config.xml**:这是iBatis的主要配置文件,包含了数据源、事务管理等设置...
例如,`org.apache.ibatis.type.TypeHandler`接口定义了如何在Java对象和数据库字段之间进行转换的逻辑,这对于处理复杂的数据类型尤其有用。 2. **ibatis-sqlmap-2.jar**: 这是Ibatis的核心组件,实现了SQL映射...