PostgreSQL - 使用 JDBC 写入 inet 列

PostgreSQL - write to inet column using JDBC

PostgreSQL 有漂亮的 inet 类型,但没有对应的 JDBC 类型。如何使用 Java 在 inet 列中存储 IP 地址?

我正在使用 MyBatis,而不是原始 JDBC,但问题出在 JDBC 本身。

这个问题已经在 postgresql 邮件列表 (2001, 2015) 以及其他几个地方被多次询问和回答。

由于JDBC中没有inet,最简单的解决方案是以String形式传递IP地址,然后转换为inet 中查询本身.

在 mybatis 中,它看起来像这样:

public interface MyMapper {

    @Insert("INSERT INTO my_table (ip) VALUES (#{ip}::INET)")
    int insert(@Param("ip") String ip);

}

另一种解决方案是将地址包装在实现 java.sql.SQLData 的自定义 class 中,然后将您自己的 class 作为对象传递。