博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
typeHandler
阅读量:4480 次
发布时间:2019-06-08

本文共 2840 字,大约阅读时间需要 9 分钟。

package com.cainiao.aeye.chdir.manager.tddl.Handler; import com.cainiao.aeye.chdir.core.enums.AudioFormatEnum; import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /**  * @Auther:wb-fem407232  */ public class EnumAudioFormatHandler extends BaseTypeHandler
{
private final AudioFormatEnum[] enums; private Class
type; /** * 设置配置文件设置的转换类以及枚举类内容,供其他方法更便捷高效的实现 * * @param type 配置文件中设置的转换类 */ public EnumAudioFormatHandler(Class
type) {
if (type == null) {
throw new IllegalArgumentException("Type argument cannot be null"); } this.type = type; this.enums = type.getEnumConstants(); if (this.enums == null) {
throw new IllegalArgumentException(type.getSimpleName() + " does not represent an enum type."); } } @Override public void setNonNullParameter(PreparedStatement preparedStatement, int i, AudioFormatEnum audioFormatEnum, JdbcType jdbcType) throws SQLException {
preparedStatement.setString(i, audioFormatEnum.name()); } @Override public AudioFormatEnum getNullableResult(ResultSet resultSet, String s) throws SQLException {
String name = resultSet.getString(s); if (resultSet.wasNull()) {
return null; } else {
return locateEnumStatus(name); } } @Override public AudioFormatEnum getNullableResult(ResultSet resultSet, int i) throws SQLException {
String name = resultSet.getString(i); if (resultSet.wasNull()) {
return null; } else {
return locateEnumStatus(name); } } @Override public AudioFormatEnum getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
String name = callableStatement.getString(i); if (callableStatement.wasNull()) {
return null; } else {
return locateEnumStatus(name); } } /** * 枚举类型转换,由于构造函数获取了枚举的子类enums,让遍历更加高效快捷 * * @param name 数据库中存储的自定义code属性 * @return code对应的枚举类 */ private AudioFormatEnum locateEnumStatus(String name) {
if(StringUtils.isBlank(name)){
return null; } for (AudioFormatEnum status : enums) {
if (status.name().equals(name)) {
return status; } } throw new IllegalArgumentException("未知的枚举类型:" + name + ",请核对" + type.getSimpleName()); } }

转载于:https://www.cnblogs.com/fuerming/p/9407940.html

你可能感兴趣的文章
c# 正则表达式替换字符串中常见的特殊字符
查看>>
032 Longest Valid Parentheses 最长有效括号
查看>>
swiper 不同页面高度自适应
查看>>
使用Vundle管理Vim插件
查看>>
springboot整合mybatis分页插件PageHelper
查看>>
js正则的括号,类型,通配符
查看>>
BZOJ3786 星系探索 【Splay维护dfs序】*
查看>>
【LeetCode】Broken Calculator(坏了的计算器)
查看>>
单点登录获取用户名
查看>>
asp.net mvc下使用xheditor上传文件无法保存的解决方案
查看>>
用Okhttp框架登录之后的Cookie设置到webView中(转)
查看>>
2016012097+小学四则运算练习软件项目报告
查看>>
linux磁 盘分区 挂载
查看>>
第一个java程序-宝山的大学生活
查看>>
java生成UUID通用唯一识别码 (Universally Unique Identifier)
查看>>
Python之matplotlib学习(三)
查看>>
多态与异常处理
查看>>
KEIL3中出现的字符不对齐的情况解决办法
查看>>
AngularJS自定义Directive不一定返回对象
查看>>
发现2017年最好的CSS框架
查看>>