JDBCTemplate中的自定义数据类型

问题描述 投票:0回答:1

如何使用JDBCTemplate处理自定义数据类型?

例如,当使用postgres jdbc库时,有一种方法addDataType可用于添加用户定义的类型。

但是我想知道如何在使用JDBCTemplate时实现该功能,因为我尝试避免使用低电平connection

这可能吗?

postgresql jdbctemplate
1个回答
0
投票

[醒来后,我突然发现我实际上需要的是connection对象的钩子,也许我可以通过扩展DataSource并覆盖getConnection()方法来做到这一点。

之前:

mDataSource = new HikariDataSource(config);
mJdbcTemplate = new JdbcTemplate(mDataSource);

之后:

mDataSource = new CustomDataTypeDataSource(config);
mJdbcTemplate = new JdbcTemplate(mDataSource);

class CustomDataTypeDataSource extends HikariDataSource {
    public CustomDataTypeDataSource() {
        super();
    }

    public CustomDataTypeDataSource(HikariConfig configuration) {
        super(configuration);
    }

    @Override
    public Connection getConnection() throws SQLException {
        Connection conn = super.getConnection();
        prepareConnection(conn); 
        return conn;
    }
}

然后,我们可以在prepareConnection()(在我的情况下为PostgreSQL)中做所有魔术(添加自定义数据类型):

@Override
protected void prepareConnection(Connection connection) throws SQLException {
    if (connection != null) {
        PgConnection pgconn = ((PgConnection) connection.unwrap(PGConnection.class));
        pgconn.addDataType("xx", xx.class);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.