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

Mybatis中自定義TypeHandler處理枚舉的示例代碼

 更新時間:2024年01月08日 10:39:33   作者:啊Q老師  
typeHandler,是 MyBatis 中的一個接口,用于處理數(shù)據庫中的特定數(shù)據類型,下面簡單介紹創(chuàng)建自定義 typeHandler 來處理枚舉類型的示例,感興趣的朋友跟隨小編一起看看吧

MyBatis

枚舉類型

枚舉類型,在 Java 中屬于基本數(shù)據類型,而不是構造數(shù)據類型,用于聲明一組命名的常數(shù)。枚舉可以根據 Integer 、Long 、Short 或 Byte 中的任意一種數(shù)據類型來創(chuàng)建一種新型變量。這種變量可以設置為已經定義的一組之中的一個,有效防止用戶提供無效值,使代碼更加清晰。

簡單示例:
首先,創(chuàng)建枚舉類型 UserState

package cn.edu.MyBatisDemo.enums;
//使用枚舉將實體類 User 的 state 屬性設定為三種狀態(tài)
public enum UserState {
    //每個枚舉對象有四種值:索引值(從0開始)、名字(如 OnLine )、屬性1(如343)、屬性2(如在線)
    OnLine(343,"在線"),
    OffLine(8899,"離線"),
    BeBusy(1414,"忙碌");
    private int code; //定義括號中第一個屬性
    private String msg; //定義括號中第二個屬性
    private UserState(int code,String msg){
        this.code = code;
        this.msg = msg;
    }
    public int getCode() {
        return code;
    }
    public void setCode(int code) {
        this.code = code;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    //通過 code 值獲取對應的枚舉對象
    public static UserState getUserStateByCode(int code){
        if(code == 343){
            return UserState.OnLine;
        } else if (code == 8899){
            return UserState.OffLine;
        } else {
            return UserState.BeBusy;
        }
    }
}

然后,創(chuàng)建獲取枚舉對象四種值的測試類 EnumTest

package cn.edu.MyBatisDemo.test;
import cn.edu.MyBatisDemo.enums.UserState;
import org.junit.Test;
public class EnumTest {
    @Test
    public void enumTest(){
        UserState userState = UserState.OnLine;
        //獲取枚舉對象的四種值
        System.out.println(userState.ordinal()); //索引值
        System.out.println(userState.name()); //名字
        System.out.println(userState.getCode()); //屬性1
        System.out.println(userState.getMsg()); //屬性2
    }
}

最后,測試結果,結果如圖:

typeHandler

typeHandler,是 MyBatis 中的一個接口,用于處理數(shù)據庫中的特定數(shù)據類型。MyBatis 默認提供了兩個枚舉數(shù)據類型的 typeHandler — EnumTypeHandlerEnumOrdinalTypeHandler 。在 MyBatis 中,也可以通過自定義 typeHandler 來處理數(shù)據庫中的特定數(shù)據類型。另外,創(chuàng)建自定義的 typeHandler ,需要實現(xiàn) typeHandler 接口,并實現(xiàn)其中的幾個方法。下面簡單介紹創(chuàng)建自定義 typeHandler 來處理枚舉類型。

簡單示例:
首先,創(chuàng)建一個數(shù)據表 enum_user
表結構信息如圖:

接著,通過 Generator 來根據數(shù)據庫表結構自動生成對應的實體類、DAO 接口和 SQL 映射文件

然后,在自動生成后,需要將實體類 state 屬性的類型修改為 UserState 類型,同時添加上 toString() 方法

另外,還需要將 SQL 映射文件中所有 state 指定的 jdbcType 部分去除

在創(chuàng)建自定義 typeHandler 前,先了解 typeHandler 默認使用的是 EnumTypeHandler ,屬性 state 信息在數(shù)據庫中的值為四種值中的名字(BeBusy);而若指定使用 EnumOrdinalTypeHandler ,則屬性 state 信息在數(shù)據庫中的值為四種值中的索引值(2)

這些往往不是所需要的結果。所以,需要創(chuàng)建自定義 typeHandler 將屬性 state 信息在數(shù)據庫中的值設定為四種值中的屬性1(1414)。創(chuàng)建實現(xiàn) TypeHandler< T > 接口的類 CustomTypeHandler

package cn.edu.MyBatisDemo.enums;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.TypeHandler;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class CustomTypeHandler implements TypeHandler<UserState> {
    @Override
    public void setParameter(PreparedStatement preparedStatement, int i, UserState userState, JdbcType jdbcType) throws SQLException {
        preparedStatement.setObject(i,userState.getCode());
    }
    @Override
    public UserState getResult(ResultSet resultSet, String s) throws SQLException {
        int code = resultSet.getInt(s);
        return UserState.getUserStateByCode(code);
    }
    @Override
    public UserState getResult(ResultSet resultSet, int i) throws SQLException {
        int code = resultSet.getInt(i);
        return UserState.getUserStateByCode(code);
    }
    @Override
    public UserState getResult(CallableStatement callableStatement, int i) throws SQLException {
        int code = callableStatement.getInt(i);
        return UserState.getUserStateByCode(code);
    }
}

隨之,在全局配置文件 mybatis.xml 中配置指定使用自定義的 typeHandler

<typeHandlers>
    <typeHandler handler="cn.edu.MyBatisDemo.enums.CustomTypeHandler" javaType="cn.edu.MyBatisDemo.enums.UserState" />
</typeHandlers>

最后,測試結果

結果如圖:

到此這篇關于Mybatis中自定義TypeHandler處理枚舉詳解的文章就介紹到這了,更多相關Mybatis自定義TypeHandler內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 解決IDEA無法讀取maven鏡像,jar包下載失敗的問題

    解決IDEA無法讀取maven鏡像,jar包下載失敗的問題

    這篇文章主要介紹了解決IDEA無法讀取maven鏡像,jar包下載失敗的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Java中l(wèi)ist.foreach不能使用字符串拼接的問題

    Java中l(wèi)ist.foreach不能使用字符串拼接的問題

    這篇文章主要介紹了Java中l(wèi)ist.foreach不能使用字符串拼接的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • JNDI在JavaEE中的角色_動力節(jié)點Java學院整理

    JNDI在JavaEE中的角色_動力節(jié)點Java學院整理

    這篇文章主要介紹了JNDI在JavaEE中的角色,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Java實現(xiàn)PDF批量處理之合并、拆分、加水印的技術方案與實踐

    Java實現(xiàn)PDF批量處理之合并、拆分、加水印的技術方案與實踐

    在日常開發(fā)中,PDF文檔處理是一個高頻需求,無論是合同管理系統(tǒng)需要合并多份PDF,還是報表系統(tǒng)需要按頁拆分,亦或是給機密文檔添加水印,都需要一套可靠的PDF處理方案,本文將分享基于Java技術棧實現(xiàn)PDF批量處理的核心思路與代碼實踐,需要的朋友可以參考下
    2026-02-02
  • Java面試題沖刺第十一天--集合框架篇(2)

    Java面試題沖刺第十一天--集合框架篇(2)

    這篇文章主要為大家分享了最有價值的兩道集合框架的面試題,涵蓋內容全面,包括數(shù)據結構和算法相關的題目、經典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-07-07
  • IDEA Maven 配置備忘筆記

    IDEA Maven 配置備忘筆記

    這篇文章主要介紹了IDEA Maven 配置備忘筆記,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • Java JConsole遠程連接配置案例詳解

    Java JConsole遠程連接配置案例詳解

    這篇文章主要介紹了Java JConsole遠程連接配置案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • 一小時迅速入門Mybatis之實體類別名與多參數(shù) 動態(tài)SQL

    一小時迅速入門Mybatis之實體類別名與多參數(shù) 動態(tài)SQL

    這篇文章主要介紹了一小時迅速入門Mybatis之實體類別名與多參數(shù) 動態(tài)SQL,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • Springboot與vue實現(xiàn)文件導入方法具體介紹

    Springboot與vue實現(xiàn)文件導入方法具體介紹

    文件導入時大多數(shù)項目無法回避的問題,這兩天深入學習了文件導入,在這里進行記錄,使用到的技術是Springboot+Vue,前端組件使用el-upload
    2023-02-02
  • SpringMVC實現(xiàn)上傳下載文件

    SpringMVC實現(xiàn)上傳下載文件

    這篇文章主要為大家詳細介紹了SpringMVC實現(xiàn)上傳下載文件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09

最新評論

阿城市| 双江| 突泉县| 湄潭县| 宁陵县| 太白县| 夏津县| 民勤县| 梁河县| 松潘县| 广安市| 芜湖市| 缙云县| 香格里拉县| 深水埗区| 前郭尔| 剑川县| 玛纳斯县| 舒城县| 大洼县| 涪陵区| 荔波县| 图木舒克市| 隆回县| 靖边县| 华蓥市| 仪征市| 靖江市| 宝兴县| 怀远县| 黄平县| 鄂托克前旗| 龙川县| 和平区| 固镇县| 宁强县| 周宁县| 呈贡县| 泊头市| 迭部县| 舞阳县|