国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

關(guān)于Mybatis攔截器對(duì)結(jié)果集的攔截

kohoh_ / 2056人閱讀

摘要:剛學(xué)習(xí)攔截器方面,在網(wǎng)上找了很多關(guān)于攔截器方面的文章,自己也嘗試過(guò)寫過(guò)幾個(gè),但是關(guān)于結(jié)果集的攔截始終沒有找到合適的不要噴我,畢竟是新手。

剛學(xué)習(xí)Mybatis攔截器方面,在網(wǎng)上找了很多關(guān)于Mybatis攔截器方面的文章,自己也嘗試過(guò)寫過(guò)幾個(gè),但是關(guān)于結(jié)果集的攔截始終沒有找到合適的(PS: 不要噴我,畢竟是新手)。也在segmentfault 上提問(wèn)過(guò),依然沒有找到一個(gè)易于理解的,后來(lái)自己慢慢理解了以后,自己寫了個(gè)入門的,作為自己的回答。

Mybatis實(shí)現(xiàn)過(guò)如下需求

查詢用戶基本信息表,查詢結(jié)果返回是List>的結(jié)果集,對(duì)其中的某個(gè)字段進(jìn)行加密

數(shù)據(jù)表
CREATE TABLE usr_basic_inf(
    USR_ID               VARCHAR(20)       NOT NULL      COMMENT "用戶ID,01+18位互斥隨機(jī)數(shù)"    ,
    USR_REAL_NME         VARCHAR(50)       NOT NULL      COMMENT "用戶真實(shí)姓名"              ,
    CERT_TYPE            VARCHAR(4)                      COMMENT "證件種類"                ,
    CERT_NO              VARCHAR(100)                    COMMENT "證件號(hào)碼"                ,
    RES_FLD              VARCHAR(300)                    COMMENT "預(yù)留字段 "               ,
    PRIMARY KEY(USR_ID)
) COMMENT="用戶基礎(chǔ)信息表";
數(shù)據(jù)
USR_ID USR_REAL_NME CERT_TYPE CERT_NO RES_FLD
01000000000000000001 張三 0101 101222010199913291 (NULL)

使用Mybatis對(duì)Executor.class"qurey"方法進(jìn)行攔截,并對(duì)返回結(jié)果集進(jìn)行處理

package com.ceabox.interceptor;

import java.util.ArrayList;
import java.util.Map;
import java.util.Properties;

import org.apache.ibatis.executor.Executor;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.plugin.Intercepts;
import org.apache.ibatis.plugin.Invocation;
import org.apache.ibatis.plugin.Plugin;
import org.apache.ibatis.plugin.Signature;
import org.apache.ibatis.session.ResultHandler;
import org.apache.ibatis.session.RowBounds;

@Intercepts({ @Signature(type = Executor.class, method = "query", args = { MappedStatement.class, Object.class,
        RowBounds.class, ResultHandler.class }) })
public class InterceptorForQry implements Interceptor {

    @SuppressWarnings({ "rawtypes", "unchecked" })
    public Object intercept(Invocation invocation) throws Throwable {
        Object result = invocation.proceed(); //執(zhí)行請(qǐng)求方法,并將所得結(jié)果保存到result中
        if (result instanceof ArrayList) {
            ArrayList resultList = (ArrayList) result;
            for (int i = 0; i < resultList.size(); i++) {
                if (resultList.get(i) instanceof Map) {
                    Map resultMap = (Map) resultList.get(i);
                    resultMap.put("CERT_NO", "這個(gè)是加密結(jié)果"); //取出相應(yīng)的字段進(jìn)行加密
                }
            }
        }
        return result;
    }

    public Object plugin(Object target) {
        System.out.println("this is the proceed ===>>" + target);
        return Plugin.wrap(target, this);
    }

    public void setProperties(Properties arg0) {
        System.out.println("this is the properties ===>>" + arg0);
    }
}
mybatis-config.xml

在mybatis配置文件中注冊(cè)插件:


    
測(cè)試輸出
{ USR_ID=01000000000000000001, RES_FLD=null, CERT_NO=這個(gè)是加密結(jié)果, CERT_TYPE=0101, USR_REAL_NME=張三 }

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/66486.html

相關(guān)文章

  • Mybatis Interceptor 截器

    摘要:攔截器的使用場(chǎng)景主要是更新數(shù)據(jù)庫(kù)的通用字段,分庫(kù)分表,加解密等的處理。攔截器均需要實(shí)現(xiàn)該接口。攔截器攔截器的使用需要查看每一個(gè)所提供的方法參數(shù)。對(duì)應(yīng)構(gòu)造器,為,為,為。可參考攔截器原理探究。 攔截器(Interceptor)在 Mybatis 中被當(dāng)做插件(plugin)對(duì)待,官方文檔提供了 Executor(攔截執(zhí)行器的方法),ParameterHandler(攔截參數(shù)的處理),Re...

    nemo 評(píng)論0 收藏0
  • 面試官都會(huì)問(wèn)的Mybatis面試題,你會(huì)這樣回答嗎?

    摘要:最終能和面試官聊的開心愉快投緣的叫面霸。能夠與很好的集成提供映射標(biāo)簽,支持對(duì)象與數(shù)據(jù)庫(kù)的字段關(guān)系映射提供對(duì)象關(guān)系映射標(biāo)簽,支持對(duì)象關(guān)系組件維護(hù)。使用可以有效的防止注入,提高系統(tǒng)安全性。 showImg(https://segmentfault.com/img/bVbsSlt?w=358&h=269); 一、概述 面試,難還是不難?取決于面試者的底蘊(yùn)(氣場(chǎng)+技能)、心態(tài)和認(rèn)知及溝通技巧。...

    seanHai 評(píng)論0 收藏0
  • Mybatis常見面試題

    摘要:執(zhí)行沒有,批處理不支持,將所有都添加到批處理中,等待統(tǒng)一執(zhí)行,它緩存了多個(gè)對(duì)象,每個(gè)對(duì)象都是完畢后,等待逐一執(zhí)行批處理。 Mybatis常見面試題 #{}和${}的區(qū)別是什么? #{}和${}的區(qū)別是什么? 在Mybatis中,有兩種占位符 #{}解析傳遞進(jìn)來(lái)的參數(shù)數(shù)據(jù) ${}對(duì)傳遞進(jìn)來(lái)的參數(shù)原樣拼接在SQL中 #{}是預(yù)編譯處理,${}是字符串替換。 使用#{}可以有效的防止...

    liuchengxu 評(píng)論0 收藏0
  • Java 最常見 200+ 面試題全解析:面試必備(附答案)

    摘要:的簡(jiǎn)稱,運(yùn)行環(huán)境,為的運(yùn)行提供了所需環(huán)境。分割字符串,返回一個(gè)分割后的字符串?dāng)?shù)組。線程安全是線程安全的,而是非線程安全的。迭代器取代了集合框架中的,迭代器允許調(diào)用者在迭代過(guò)程中移除元素。 本文分為十九個(gè)模塊,分別是:?Java 基礎(chǔ)、容器、多線程、反射、對(duì)象拷貝、Java Web 、異常、網(wǎng)絡(luò)、設(shè)計(jì)模式、Spring/Spring MVC、Spring Boot/Spring Clou...

    hufeng 評(píng)論0 收藏0
  • 手撕面試官系列(二):開源框架面試題Spring+SpringMVC+MyBatis

    摘要:跳槽時(shí)時(shí)刻刻都在發(fā)生,但是我建議大家跳槽之前,先想清楚為什么要跳槽。切不可跟風(fēng),看到同事一個(gè)個(gè)都走了,自己也盲目的開始面試起來(lái)期間也沒有準(zhǔn)備充分,到底是因?yàn)榧夹g(shù)原因影響自己的發(fā)展,偏移自己規(guī)劃的軌跡,還是錢給少了,不受重視。 跳槽時(shí)時(shí)刻刻都在發(fā)生,但是我建議大家跳槽之前,先想清楚為什么要跳槽。切不可跟風(fēng),看到同事一個(gè)個(gè)都走了,自己也盲目的開始面試起來(lái)(期間也沒有準(zhǔn)備充分),到底是因?yàn)榧?..

    Flink_China 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<