最近项目中用到pgsql,遇到些麻烦事,记录一下。 🥕
pgsql array 类型
不知道大家对于pgsql的Array类型是否用的频繁,我在用Mybatis做持久层的时候,ARRAY
类型对应的是java.sql.Array
。
这时候问题就来了,在写业务代码的时候发现java类型不能直接转换成Array的实现类,这就头痛了。
翻看了JDK的文档,Connection
接口中有:
Modifier and Type | Method | Description |
---|---|---|
Array | createArrayOf(String typeName, Object[] elements) | Factory method for creating Array objects. |
于是乎,我们就可以利用Mybatis的TypeHandler
来解决这个问题了。具体代码如下
1 | /** |
然后在application.yml
中加上1
2mybatis:
type-handlers-package: xxx.xxx.handler #自定义handler的路径
或者1
2
3
4
5
6
7
8"sessionFactory") (name =
public SqlSessionFactory sessionFactory(@Qualifier("dataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(PgsqlSourceConfig.MAPPER_LOCATION));
bean.getObject().getConfiguration().getTypeHandlerRegistry().register(ArrayTypeHandler.class);
return bean.getObject();
}
如果不是springboot的话,用spring的配置方式就可以了。