ibatIS中我们可以定义<parameterMap class="" id=""></parameterMap>
<resultMap class="" id=""></resultMap>
来定义参数类型Map或者返回值Map类型
转自吕兄:http://mmddonkey.iteye.com/blog/1184069
<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属性貌似是默认值(未测试)
分享到:
相关推荐
在此映射文件中,我们定义了存储过程的调用方式,并指定了参数类型以及返回结果的映射规则。 ##### Java代码示例 ```java public class WealthDealDetailService { private WealthDealDetailMapper mapper; ...
在iBatis中,结果集的Map封装是通过`<resultMap>`标签来定义的,它可以指定列名或别名作为键,Java字段名作为值。例如: ```xml <resultMap id="UserMap" type="com.example.User"> </resultMap> ``` 在这个...
在ibatis中,`parameterClass`属性用于指定传递给SQL语句的参数类型。例如,在给定的部分内容中: ```xml select rf.role_id as roleId from st_rolefunction rf where rf.fnc_id=30 rf.role_id=#roleId# ...
与Eclipse中的Abator不同,iBatis Plugin不仅限于代码生成,而是全方位地优化了iBatis的开发体验。 **配置iBatis Plugin** 首先,你需要从IntelliJ IDEA的插件市场下载iBatis Plugin。安装完成后,配置数据源...
在XML文件中,可以使用`<parameterMap>`和`<resultMap>`标签来定义复杂的参数映射和结果映射,包括Java对象与数据库字段之间的映射关系。 8. **动态SQL**: iBatis支持动态SQL,可以通过`<if>`, `<choose>`, `...
在iBATIS中,可以通过多种方式实现结果映射,包括使用`resultMap`标签等。 #### 五、总结 通过对给定的iBATIS实例小程序的分析,我们可以了解到iBATIS框架的基本用法,包括SQL映射文件的结构、参数绑定以及结果...
- `queryForMap(String id, Object parameterObject, String keyProp, String valueProp)`:执行指定ID的SQL语句,并将结果集中指定字段作为`Map`的键,同时指定另一个字段作为`Map`的值。 以上接口方法为iBatis...
在映射文件中定义`resultMap`,指定字段与Java属性的对应关系,或者使用`@Result`注解在接口方法上进行配置。 7. **缓存机制**:Ibatis提供了一级缓存(Session级别)和二级缓存(Mapper级别),能够提高数据读取...
1. **配置映射文件**:在iBATIS的Mapper XML文件中,需要为CLOB字段定义特殊的类型处理器。例如: ```xml <resultMap id="MyResultMap" type="YourEntityClass"> </resultMap> ``` 2. **插入操作**:当向...
- **<resultClass>`**:定义查询结果的映射规则,例如查询结果中包含了`personid`、`firstname`、`lastname`等字段,可以通过`resultClass`来指定这些字段对应的Java类属性。 #### 四、总结 ibatis是一个功能强大且...
- `resultClass`:当结果集的列名与类属性名完全匹配时,可以直接使用`resultClass`指定返回结果的Java类型。 - `resultMap`:如果列名与属性名不匹配,或者需要进行更复杂的映射,可以使用`resultMap`定义映射...
通过`<resultMap>`标签定义字段和对象属性的映射规则,包括基本类型、复杂类型(如自定义对象)和关联关系的映射。 8. **动态SQL** Ibatis允许在映射文件中编写动态SQL,通过`<if>`, `<choose>`, `<when>`, `...
7. **参数和返回值处理**:iBatis支持多种参数类型和返回值类型,如简单类型、复杂对象、Map等。通过`<parameterMap>`和`<resultMap>`配置,可以方便地处理入参和返回结果。 这些知识点涵盖了iBatis在处理关系映射...
5. **结果集映射**:通过`<resultMap>`标签,可以定义复杂的字段映射规则,包括一对一、一对多、多对多的关系映射,使得结果处理更便捷。 6. **事务管理**:Ibatis支持编程式和声明式的事务管理,可以根据项目需求...
`parameterMap`和`resultMap`则用于映射SQL语句中的参数和结果集,它们分别定义了参数和结果字段与Java对象属性的对应关系。在`getProduct`方法中,`parameterMap`和`resultMap`的使用使得我们可以方便地将SQL查询...
- **支持 ParameterMap 和 ResultMap 的数据类型**:详细介绍哪些 Java 类型可以在 iBatis 中使用。 - **缓存 Mapped Statement 结果集**:介绍如何利用缓存提高查询性能。 - **只读 VS 可读写**:缓存的不同模式...
在用户表中,`book_oid` 字段作为外键关联到了图书表中的 `oid` 字段。这表明用户表中的每条记录都关联了一本具体的图书。 #### 二、实体类 (POJO) 为了能够通过 Ibatis 进行操作,我们需要定义两个实体类:`Book`...
在MyBatis中,我们可以使用ResultMap来指定查询结果的格式。在本例中,我们将ResultMap定义为一个HashMap,key为商品code,value为商品分类对应的名称。 首先,在mapper.xml文件中,我们定义一个ResultMap: ``` ...
Ibatis 提供了多种映射方式,包括自动映射(基于字段名匹配)、手动映射(通过 `resultMap` 标签)和自定义映射器(通过 `javaTypeHandler`)。此外,还可以使用 `collection` 标签处理一对多的关系映射。 **七、...
在iBatis中,我们可以使用`resultMap`来定义复杂的映射关系。例如,当表中的字段与Java对象的属性不一致时,可以这样设置: ```xml <resultMap id="userResultMap" type="com.example.User"> </resultMap> ...