java mybatis操作 postgresql array数组类型
来源:互联网 发布:java.nio.file.files 编辑:程序博客网 时间:2024/05/30 02:24
找了半天没有找到postgresql中关于array数组类型的字段如何对应到java中的数据类型,后来找到了mybatis的TypeHandler,只要实现一个自定义的TypeHandler就行了,如下,我定义了几个基础数据类型的数组
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()); } // 这3行是关键的代码,创建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; }}
然后在实体类里面对应的字段配置这个转换器就行,如果是配置文件需要在 xxmap.xml中配置对应属性
@ColumnType(typeHandler = com.mvc.typehandler.ArrayTypeHandler.class)private String[] cities; //所操作的城市code列表,为空表示所有城市@ColumnType(typeHandler = com.mvc.typehandler.ArrayTypeHandler.class)private String[] areaTypes; //操作的行业类型code列表,为空表示所有行业@ColumnType(typeHandler = com.jmtool.mvc.typehandler.ArrayTypeHandler.class)private Integer[] targetStatus; //操作的目标数据状态
0 0
- java mybatis操作 postgresql array数组类型
- java -Array数组操作
- PostgreSQL: array 数组类型添加元素 数组的使用
- postgreSQL ARRAY 类型的使用
- postgresql 数组类型
- postgresql 操作point类型
- Mybatis类型, Java类型和PostgreSQL数据库类型的对应关系(草稿)
- Array类型(数组项操作和位置查找)
- JDBC:Java数组和数据库中Array类型的映射
- Java获取数组组件类型及Array API简单示例
- flex数组操作---Array
- Array 数组 操作
- js Array数组操作
- JS ARRAY 数组操作
- JS ARRAY 数组操作
- array数组‘查找’操作
- Swift-Array数组操作
- array 二维数组操作
- [leetcode]:171. Excel Sheet Column Number
- 5
- 期货基础知识09——期货盈亏的计算方法
- Android 突破64K方法数的限制
- BZOJ 1458: 士兵占领 网络最大流
- java mybatis操作 postgresql array数组类型
- 引水工程
- 跳跃表实现的原理
- 霍乱时期的爱情——简写(下)
- Map 接口
- 个人项目面试题
- 剑指offer-37.数字在排序数组中出现的次数
- 我跟oracle合不来
- 进程,线程与线程池(1)