將mybatis查詢的int值轉換為java枚舉


將數據庫中查詢的 alarm_type (tiny int類型)轉換為java的AlarmTypeEnum類型

AlarmTypeEnum字段

1、要轉換的枚舉定義

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

/**
 * 告警類型
 * 目前支持郵件告警和,短信告警
 */
public enum AlarmTypeEnum {
    /**
     * 短信告警
     */
    SMS((short) 1),
    /**
     * 郵件告警
     */
    EMAIL((short) 2);

    /**
     * 數據庫中存儲的碼號,號碼不能重復(注意此處應code和數據庫中的一致)
     */
    private short code; private static Map<Short, AlarmTypeEnum> alarmTypes;
    static {
        alarmTypes = new HashMap<>();
        AlarmTypeEnum[] values = AlarmTypeEnum.values();
        Arrays.stream(values).forEach(alarmTypeEnum -> alarmTypes.put(alarmTypeEnum.getCode(), alarmTypeEnum)); } 
    AlarmTypeEnum(short code) {
        this.code = code;
    }

    public short getCode() {
        return code;
    }

    public static AlarmTypeEnum parseCode(short code) {
        return alarmTypes.get(code);
    }

    public static void main(String[] args) {
        System.out.println(AlarmTypeEnum.parseCode((short) 2));
    }

}

 

 

1、請求實體

import lombok.Data;
import lombok.ToString;

@ToString
@Data
public class AlarmInfoDTO {

    /**
     * 告警類型
     */
    private AlarmTypeEnum alarmType;

    /**
     * 告警手機號
     */
    private String alarmPhone;


    /**
     * 告警的emali郵箱
     */
    private String alarmEmail;


    public void setAlarmType(short alarmTypeCode) {
        this.alarmType = AlarmTypeEnum.parseCode(alarmTypeCode); }
}

 

 

2、CpMapper.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.test.base.dao.CpMapper">

    <resultMap id="AlarmInfoMap" type="com.sms.cloud.base.dto.AlarmInfoDTO">
        <result column="alarm_type" property="alarmType" javaType="java.lang.Short"/>
        <result column="alarm_phone" property="alarmPhone"/>
        <result column="alarm_email" property="alarmEmail"/>
    </resultMap>

    <select id="getAlarmInfo" parameterType="java.lang.Integer" resultMap="AlarmInfoMap">
        select
            alarm_type,alarm_phone,alarm_email
        from dx_sms_cp
        where id=#{cpid,jdbcType=INTEGER};
    </select>
</mapper>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM