最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mybatis中resulthandler的用法

 更新時(shí)間:2022年01月29日 10:14:06   作者:杭川奇跡  
這篇文章主要介紹了mybatis中resulthandler的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

resulthandler的用法

ResultHandler,顧名思義,對(duì)返回的結(jié)果進(jìn)行處理,最終得到自己想要的數(shù)據(jù)格式或類型。也就是說(shuō),可以自定義返回類型。下面通過(guò)一個(gè)例子講解它的使用方法:

創(chuàng)建實(shí)體類

package com.ccb.demossm.entity;
import com.ccb.demossm.annotation.MyAnnotation;
import org.springframework.stereotype.Component;
@Component
public class Users {
    //用戶ID
    private String userId;
    //用戶名
    private String userName;
    //用戶密碼
    private String userPwd;
    //用戶性別
    public String sex;
    //備注
    protected String mark;
    public String getMark() {
        return mark;
    }
    public void setMark(String mark) {
        this.mark = mark;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getUserPwd() {
        return userPwd;
    }
    public void setUserPwd(String userPwd) {
        this.userPwd = userPwd;
    }
    public Users() {
    }
    public Users(String userId) {
        this.userId = userId;
    }
}

sql,返回值類型要寫

? ? <select id="getUserResult" resultType="com.ccb.demossm.entity.Users">
? ? ? ? ?select u.userId,u.userName, u.userPwd from users u
? ? </select>

Mapper,返回值必須是void

void getUserResult(ResultHandler<Users> resultHandler);package com.ccb.demossm.mapper;
import com.ccb.demossm.entity.Users;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.ResultHandler;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
@Repository
@SpringBootApplication
public interface UsersMapper {
    void getUserResult(ResultHandler<Users> resultHandler);
}

Test

package com.ccb.demossm;
import com.ccb.demossm.entity.Users;
import com.ccb.demossm.mapper.UsersMapper;
import org.apache.ibatis.session.ResultContext;
import org.apache.ibatis.session.ResultHandler;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@SpringBootTest
@RunWith(SpringRunner.class)
public class TestResultHandle {
    @Autowired
   private UsersMapper usersMapper;
    @Test
    public void test() {
        usersMapper.getUserResult(new ResultHandler<Users>() {
            @Override
            public void handleResult(ResultContext<? extends Users> resultContext) {
                Users resultObject = resultContext.getResultObject();
                String userId = resultObject.getUserId();
                //寫數(shù)據(jù)處理業(yè)務(wù)
                System.out.println(userId);
            }
        });
    }
}

ResultHandler(傳入map返回map)

測(cè)試代碼

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 {
    /**
     * 返回某日訂單成交數(shù)及當(dāng)日成交總金額 day 的格式為 2018/01/30
     * 
     * 若 day 為 null 則返回總成交訂單及總成交金額
     * 
     * @param id
     *            商戶號(hào)
     * @param day
     * @return
     */
    public Map<String, String> getOrderCountTotal(String id, String day);
    /**
     * 處理 select 結(jié)果
     * 
     * @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;
        }
    }
}

實(shí)現(xiàn)

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參數(shù) 及 傳出map參數(shù) 的顏色對(duì)應(yīng)

map傳入值時(shí) 若是不同類型 將 map的值改為Object就好了

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java責(zé)任鏈模式詳解

    Java責(zé)任鏈模式詳解

    責(zé)任鏈模式(Chain?of?Responsibility?Pattern)是一種行為型設(shè)計(jì)模式,它用于將請(qǐng)求的發(fā)送者和接收者解耦,使得多個(gè)對(duì)象都有機(jī)會(huì)處理這個(gè)請(qǐng)求,本文將詳細(xì)介紹?Java?中的責(zé)任鏈模式,包括其概念、結(jié)構(gòu)、實(shí)現(xiàn)方式以及應(yīng)用案例等,需要的朋友可以參考下
    2023-05-05
  • mybatis如何批量添加一對(duì)多中間表

    mybatis如何批量添加一對(duì)多中間表

    這篇文章主要介紹了mybatis如何批量添加一對(duì)多中間表,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 一篇文章教你用Java使用JVM工具檢測(cè)問(wèn)題

    一篇文章教你用Java使用JVM工具檢測(cè)問(wèn)題

    這篇文章主要介紹了深入理解Java使用JVM工具檢測(cè)問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • SpringBoot整合Shiro兩種方式(總結(jié))

    SpringBoot整合Shiro兩種方式(總結(jié))

    這篇文章主要介紹了SpringBoot整合Shiro兩種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • IntelliJ IDEA 2020下載與安裝教程圖文詳解

    IntelliJ IDEA 2020下載與安裝教程圖文詳解

    這篇文章主要介紹了IDEA 2020下載與安裝的教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Java Web中常用的分頁(yè)組件(Java端實(shí)現(xiàn))

    Java Web中常用的分頁(yè)組件(Java端實(shí)現(xiàn))

    本文通過(guò)使用場(chǎng)景分析給大家介紹了Java Web中常用的分頁(yè)組件(Java端實(shí)現(xiàn)),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-05-05
  • java實(shí)現(xiàn)客戶管理系統(tǒng)

    java實(shí)現(xiàn)客戶管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)客戶管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 老生常談Eclipse中的BuildPath(必看篇)

    老生常談Eclipse中的BuildPath(必看篇)

    下面小編就為大家?guī)?lái)一篇老生常談Eclipse中的BuildPath(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • Java使用Mail構(gòu)建郵件功能的完整指南

    Java使用Mail構(gòu)建郵件功能的完整指南

    Java Mail API 是一個(gè)功能強(qiáng)大的工具,它可以幫助開(kāi)發(fā)者輕松實(shí)現(xiàn)郵件的發(fā)送與接收功能,本文將介紹如何使用 Java Mail 發(fā)送和接收郵件,希望對(duì)大家有所幫助
    2025-03-03
  • RocketMQ的push消費(fèi)方式實(shí)現(xiàn)示例

    RocketMQ的push消費(fèi)方式實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了RocketMQ的push消費(fèi)方式實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>
    2022-08-08

最新評(píng)論

远安县| 宜君县| 樟树市| 渝北区| 利津县| 邢台市| 林周县| 赤壁市| 阿拉善左旗| 西贡区| 加查县| 木兰县| 大足县| 资阳市| 彩票| 五峰| 双辽市| 陆丰市| 丰原市| 北安市| 永新县| 翁牛特旗| 报价| 武义县| 台北县| 布尔津县| 澜沧| 杭锦后旗| 牟定县| 临洮县| 望谟县| 新安县| 余江县| 睢宁县| 宁强县| 南溪县| 博罗县| 桐城市| 苏尼特左旗| 黄冈市| 东丰县|