mybatis 自定义TypeHandler数组映射处理器 (pgsql text[]与java String[]映射)
Posted Hepburn Yang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis 自定义TypeHandler数组映射处理器 (pgsql text[]与java String[]映射)相关的知识,希望对你有一定的参考价值。
自定义 ArrayTypeHandler
public class ArrayTypeHandler extends BaseTypeHandler<Object[]>
private static final String TYPE_NAME_VARCHAR = "varchar";
private static final String TYPE_NAME_INTEGER = "integer";
private static final String TYPE_NAME_BOOLEAN = "boolean";
private static final String TYPE_NAME_NUMERIC = "numeric";
@Override
public void setNonNullParameter(PreparedStatement ps, int i, Object[] parameter, JdbcType jdbcType) throws SQLException
String typeName = null;
if (parameter instanceof Integer[])
typeName = TYPE_NAME_INTEGER;
else if (parameter instanceof String[])
typeName = TYPE_NAME_VARCHAR;
else if (parameter instanceof Boolean[])
typeName = TYPE_NAME_BOOLEAN;
else if (parameter instanceof Double[])
typeName = TYPE_NAME_NUMERIC;
if (typeName == null)
throw new TypeException("ArrayTypeHandler parameter typeName error, your type is " + parameter.getClass().getName());
// 关键的代码,创建Array,然后ps.setArray(i, array)就可以了
Connection conn = ps.getConnection();
Array array = conn.createArrayOf(typeName, parameter);
ps.setArray(i, array);
@Override
public Object[] getNullableResult(ResultSet resultSet, String s) throws SQLException
return getArray(resultSet.getArray(s));
@Override
public Object[] getNullableResult(ResultSet resultSet, int i) throws SQLException
return getArray(resultSet.getArray(i));
@Override
public Object[] getNullableResult(CallableStatement callableStatement, int i) throws SQLException
return getArray(callableStatement.getArray(i));
private Object[] getArray(Array array)
if (array == null)
return null;
try
return (Object[]) array.getArray();
catch (Exception e)
return null;
配置使用:
在mybatis.cfg.xml文件中添加配置项信息
<configuration>
<typeHandlers>
<typeHandler jdbcType="String[]" javaType="text[]"
handler="momenta.hdmap.antbear.common.handler.ArrayTypeHandler"/>
<typeHandler jdbcType="OTHER"
handler="momenta.hdmap.antbear.common.handler.GeometryTypeHandler"/>
</typeHandlers>
</configuration>
以上是关于mybatis 自定义TypeHandler数组映射处理器 (pgsql text[]与java String[]映射)的主要内容,如果未能解决你的问题,请参考以下文章
Mybatis自定义TypeHandler实现数据库Json数组转List<T>对象
Mybatis自定义TypeHandler实现数据库Json数组转List<T>对象