`

ibatis 指定返回Map(resultMap)中的字段类型

 
阅读更多

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属性貌似是默认值(未测试)

 

 

分享到:
评论

相关推荐

    Ibatis调用Oracle存储过程返回自定义类型

    在此映射文件中,我们定义了存储过程的调用方式,并指定了参数类型以及返回结果的映射规则。 ##### Java代码示例 ```java public class WealthDealDetailService { private WealthDealDetailMapper mapper; ...

    ibatis实现结果集map封装(Demo下载)

    在iBatis中,结果集的Map封装是通过`&lt;resultMap&gt;`标签来定义的,它可以指定列名或别名作为键,Java字段名作为值。例如: ```xml &lt;resultMap id="UserMap" type="com.example.User"&gt; &lt;/resultMap&gt; ``` 在这个...

    ibatis的错误总结

    在ibatis中,`parameterClass`属性用于指定传递给SQL语句的参数类型。例如,在给定的部分内容中: ```xml select rf.role_id as roleId from st_rolefunction rf where rf.fnc_id=30 rf.role_id=#roleId# ...

    ibatis plugin用户指南

    与Eclipse中的Abator不同,iBatis Plugin不仅限于代码生成,而是全方位地优化了iBatis的开发体验。 **配置iBatis Plugin** 首先,你需要从IntelliJ IDEA的插件市场下载iBatis Plugin。安装完成后,配置数据源...

    iBatis Web用法实例

    在XML文件中,可以使用`&lt;parameterMap&gt;`和`&lt;resultMap&gt;`标签来定义复杂的参数映射和结果映射,包括Java对象与数据库字段之间的映射关系。 8. **动态SQL**: iBatis支持动态SQL,可以通过`&lt;if&gt;`, `&lt;choose&gt;`, `...

    iBATIS实例小程序

    在iBATIS中,可以通过多种方式实现结果映射,包括使用`resultMap`标签等。 #### 五、总结 通过对给定的iBATIS实例小程序的分析,我们可以了解到iBATIS框架的基本用法,包括SQL映射文件的结构、参数绑定以及结果...

    ibatis技术总结

    - `queryForMap(String id, Object parameterObject, String keyProp, String valueProp)`:执行指定ID的SQL语句,并将结果集中指定字段作为`Map`的键,同时指定另一个字段作为`Map`的值。 以上接口方法为iBatis...

    ibatis 中文api

    在映射文件中定义`resultMap`,指定字段与Java属性的对应关系,或者使用`@Result`注解在接口方法上进行配置。 7. **缓存机制**:Ibatis提供了一级缓存(Session级别)和二级缓存(Mapper级别),能够提高数据读取...

    iBATIS操作Oracle CLOB数据

    1. **配置映射文件**:在iBATIS的Mapper XML文件中,需要为CLOB字段定义特殊的类型处理器。例如: ```xml &lt;resultMap id="MyResultMap" type="YourEntityClass"&gt; &lt;/resultMap&gt; ``` 2. **插入操作**:当向...

    ibatis环境搭建教程

    - **&lt;resultClass&gt;`**:定义查询结果的映射规则,例如查询结果中包含了`personid`、`firstname`、`lastname`等字段,可以通过`resultClass`来指定这些字段对应的Java类属性。 #### 四、总结 ibatis是一个功能强大且...

    iBatis_SqlMap的配置总结[1]

    - `resultClass`:当结果集的列名与类属性名完全匹配时,可以直接使用`resultClass`指定返回结果的Java类型。 - `resultMap`:如果列名与属性名不匹配,或者需要进行更复杂的映射,可以使用`resultMap`定义映射...

    ibatis的增删改查

    通过`&lt;resultMap&gt;`标签定义字段和对象属性的映射规则,包括基本类型、复杂类型(如自定义对象)和关联关系的映射。 8. **动态SQL** Ibatis允许在映射文件中编写动态SQL,通过`&lt;if&gt;`, `&lt;choose&gt;`, `&lt;when&gt;`, `...

    ibatis 的关系映射

    7. **参数和返回值处理**:iBatis支持多种参数类型和返回值类型,如简单类型、复杂对象、Map等。通过`&lt;parameterMap&gt;`和`&lt;resultMap&gt;`配置,可以方便地处理入参和返回结果。 这些知识点涵盖了iBatis在处理关系映射...

    ibatis小例子Demo

    5. **结果集映射**:通过`&lt;resultMap&gt;`标签,可以定义复杂的字段映射规则,包括一对一、一对多、多对多的关系映射,使得结果处理更便捷。 6. **事务管理**:Ibatis支持编程式和声明式的事务管理,可以根据项目需求...

    Ibatis学习随笔.doc

    `parameterMap`和`resultMap`则用于映射SQL语句中的参数和结果集,它们分别定义了参数和结果字段与Java对象属性的对应关系。在`getProduct`方法中,`parameterMap`和`resultMap`的使用使得我们可以方便地将SQL查询...

    ibatis开发手册(pdf)

    - **支持 ParameterMap 和 ResultMap 的数据类型**:详细介绍哪些 Java 类型可以在 iBatis 中使用。 - **缓存 Mapped Statement 结果集**:介绍如何利用缓存提高查询性能。 - **只读 VS 可读写**:缓存的不同模式...

    Ibatis多表查询

    在用户表中,`book_oid` 字段作为外键关联到了图书表中的 `oid` 字段。这表明用户表中的每条记录都关联了一本具体的图书。 #### 二、实体类 (POJO) 为了能够通过 Ibatis 进行操作,我们需要定义两个实体类:`Book`...

    MyBatis查询返回Map示例代码

    在MyBatis中,我们可以使用ResultMap来指定查询结果的格式。在本例中,我们将ResultMap定义为一个HashMap,key为商品code,value为商品分类对应的名称。 首先,在mapper.xml文件中,我们定义一个ResultMap: ``` ...

    ibatis中文参考文档

    Ibatis 提供了多种映射方式,包括自动映射(基于字段名匹配)、手动映射(通过 `resultMap` 标签)和自定义映射器(通过 `javaTypeHandler`)。此外,还可以使用 `collection` 标签处理一对多的关系映射。 **七、...

    iBatis入门(三)

    在iBatis中,我们可以使用`resultMap`来定义复杂的映射关系。例如,当表中的字段与Java对象的属性不一致时,可以这样设置: ```xml &lt;resultMap id="userResultMap" type="com.example.User"&gt; &lt;/resultMap&gt; ...

Global site tag (gtag.js) - Google Analytics