Mybatis中TypeHandler的作用是什么
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,Mybatis中TypeHandler的作用是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。mybatis-3.4.
千家信息网最后更新 2026年10月31日Mybatis中TypeHandler的作用是什么
Mybatis中TypeHandler的作用是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
mybatis-3.4.6.release.
TypeHandler在mybatis中是个重要的组件,对statement设置参数还是从Resultset中取值,都会用到它。
List-1
public interface TypeHandler{ void setParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException; T getResult(ResultSet rs, String columnName) throws SQLException; T getResult(ResultSet rs, int columnIndex) throws SQLException; T getResult(CallableStatement cs, int columnIndex) throws SQLException;}
如List-1中所示,setParameter方法在ParameterHandler中使用到,其它三个getResult方法在ResultSetHandler中使用到,为什么会有三个getResult方法是因为从ResultSet中获取值,可以通过下标或列名称获取,此外存储过程的处理方式不同。

图1
BaseTypeHandler的类继承图如图1所示,先来看下TypeReferernce,其作用主要是获取类上的泛型,在TypeReferernce的构造方法中实现的,如下List-2所示,getRawType的结果是BigDecimal.
List-2
public class BigDecimalTypeHandler extends BaseTypeHandler
BaseTypeHandler中使用了模板模式,具体实现由子类来实现,如下List-3:
List-3
public abstract class BaseTypeHandlerextends TypeReference implements TypeHandler { @Override public void setParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException { ... 如果parameter是null,则直接调用PreparedStatement的setNull方法 ps.setNull(i, jdbcType.TYPE_CODE); ... setNonNullParameter(ps, i, parameter, jdbcType); ... } @Override public T getResult(ResultSet rs, String columnName) throws SQLException { ... result = getNullableResult(rs, columnName); ... } @Override public T getResult(ResultSet rs, int columnIndex) throws SQLException { ... result = getNullableResult(rs, columnIndex); ... } @Override public T getResult(CallableStatement cs, int columnIndex) throws SQLException { ... result = getNullableResult(cs, columnIndex); ... } public abstract void setNonNullParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException; public abstract T getNullableResult(ResultSet rs, String columnName) throws SQLException; public abstract T getNullableResult(ResultSet rs, int columnIndex) throws SQLException; public abstract T getNullableResult(CallableStatement cs, int columnIndex) throws SQLException;}
来看个例子BooleanTypeHandler:
List-4
public class BooleanTypeHandler extends BaseTypeHandler{ @Override public void setNonNullParameter(PreparedStatement ps, int i, Boolean parameter, JdbcType jdbcType) throws SQLException { ps.setBoolean(i, parameter); } @Override public Boolean getNullableResult(ResultSet rs, String columnName) throws SQLException { return rs.getBoolean(columnName); } @Override public Boolean getNullableResult(ResultSet rs, int columnIndex) throws SQLException { return rs.getBoolean(columnIndex); } @Override public Boolean getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { return cs.getBoolean(columnIndex); }}
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
方法
作用
三个
帮助
不同
清楚
重要
下标
例子
内容
参数
可以通过
名称
子类
对此
文章
新手
方式
更多
模式
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网高科技
西安纸贵互联网科技有限公司
科技互联网产品
智能科技公司是互联网公司吗
互联网金融与金融科技
天津摩尔互联网科技
亿账通互联网科技
苏州大垚互联网科技
长亮科技互联网金融
富国互联网科技创新基金
互联网实体化科技化
哈尔滨屹滨互联网科技有限公司
伊宁互联网科技做什么的
电子商务与互联网科技的关系
深圳无忧互联网科技
互联网相关科技技术
上海创道互联网络科技有限公司
2021世界互联网领先科技成果发布
广西科技产业互联网是什么
利用互联网等科技手段
互联网科技公司经营范围
国智互联网科技
涨乐互联网科技
关于新基建和互联网科技
互联网金融公司科技
互联网科技英文
互联网高科技股票
互联网科技商业
注册互联网科技公司经营范围大全
中天科技中国工业互联网