測試代碼
package com.xwhbshweb.service; import java.util.HashMap; import java.util.Map; import org.apache.ibatis.session.ResultContext; import org.apache.ibatis.session.ResultHandler; public interface OrdersService { /** * 返回某日訂單成交數及當日成交總金額 day 的格式為 2018/01/30 * * 若 day 為 null 則返回總成交訂單及總成交金額 * * @param id * 商戶號 * @param day * @return */ public Map<String, String> getOrderCountTotal(String id, String day); /** * 處理 select 結果 * * @author Administrator * */ class OrdersResultHandler implements ResultHandler { private final Map<String, String> mappedResults = new HashMap<String, String>(); @Override public void handleResult(ResultContext resultContext) { Map map = (Map) resultContext.getResultObject(); if (map.get("count") instanceof Long) { System.out.println("count Long "); if (null == String.valueOf((Long) map.get("count")) || String.valueOf((Long) map.get("count")).equals("")) { mappedResults.put("count", "0"); } else { mappedResults.put("count", String.valueOf((Long) map.get("count"))); } } if (map.get("total") instanceof Double) { System.out.println("total Long "); String total = String.valueOf((Double) map.get("total")).split("\\.")[0]; if (total.equals("0")) { mappedResults.put("total", "0"); }else { float yuan = Float.valueOf(total) / 1000; mappedResults.put("total", String.valueOf(yuan)); } } } public Map getMappedResults() { return mappedResults; } } }
實現
package com.xwhbshweb.service.imp; import java.util.HashMap; import java.util.Map; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.springframework.stereotype.Service; import com.xwhbshweb.config.MybatisSqlSessionFactory; import com.xwhbshweb.service.OrdersService; @Service public class OrdersServiceI implements OrdersService { private SqlSessionFactory sqlSessionFactory = MybatisSqlSessionFactory.getOne(); @Override public Map<String, String> getOrderCountTotal(String id,String day) { SqlSession session = sqlSessionFactory.openSession(true); Map<String, String> params = new HashMap<String, String>(); params.put("id", id); if (null == day) { params.put("day", "%"); }else { params.put("day", day+"%"); } OrdersService.OrdersResultHandler handler = new OrdersService.OrdersResultHandler(); session.select("com.xwhbank.cn.config.mybatis.namespace.ordersMapper.selectDayOrderCountTotal", params, handler); session.close(); Map<String,String> map =handler.getMappedResults(); return map; } }
xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.xwhbank.cn.config.mybatis.namespace.ordersMapper"> <select id="selectOne" resultType="orders"> select * from orders where the_super_id = #{id}; </select> <select id="selectDayOrderCountTotal" parameterType="java.util.Map" resultType="java.util.HashMap"> select count(*) as count,SUM(money_to_tenant) as total from orders where the_super_id = #{id} and order_time like #{day} and state='2'; </select> <insert id="insertOne" parameterType="orders"> insert into orders (id,tenant_order_no,the_super_id,state,money_amount,cut,money_to_tenant,money_to_xwh,pay_way,good_info,asy_notify_url,sy_return_url,sign_,order_time,sharding_id) values ("next value for MYCATSEQ_order",#{tenant_order_no},#{the_super_id},#{state},#{money_amount},#{cut},#{money_to_tenant},#{money_to_xwh},#{pay_way},#{good_info},#{asy_notify_url},#{sy_return_url},#{sign_},#{order_time},#{sharding_id}); </insert> </mapper>
注意傳入 map參數 及 傳出map參數 的顏色對應
map傳入值時 若是不同類型 將 map的值改為Object就好了