根据我的经验,我设法使用这样的表达式添加点(注意迭代请求的点是我自己的类):
java.sql.Connection conpg;
try {
/*
* Load the JDBC driver and establish a connection.
*/
Class.forName("org.postgresql.Driver");
String url = "jdbc:postgresql://localhost:5432/postgis_22_sample";
conpg = DriverManager.getConnection(url, "postgres", "nypassw");
/*
* Add the geometry types to the connection. Note that you
* must cast the connection to the pgsql-specific connection
* implementation before calling the addDataType() method.
*/
((org.postgresql.PGConnection) conpg).addDataType("geometry", Class.forName("org.postgis.PGgeometry"));
//((org.postgresql.PGConnection)conpg).addDataType("point",Class.forName("org.postgis.Point"));
/*
* Create a statement and execute a select query.
*/
conpg.setAutoCommit(false);
for (Point p : points) {
org.postgis.Point pointToAdd = new org.postgis.Point();
pointToAdd.setX(p.getLongitude());
pointToAdd.setY(p.getLatitude());
//Statement s = conn.createStatement();
//String geomsql = ;
PreparedStatement psSE = conpg.prepareStatement("INSERT INTO public.\"poi-point\" (name,geom,leisure) VALUES (?,?,?)");
psSE.setString(1, p.getDescription());
psSE.setObject(2, new org.postgis.PGgeometry(pointToAdd));
psSE.setString(3, "marina");
psSE.execute();
//ResultSet r = s.executeQuery("select geom,id from geomtable");
//while (r.next()) {
/*
* Retrieve the geometry as an object then cast it to the geometry type.
* Print things out.
*/
// PGgeometry geom = (PGgeometry) r.getObject(1);
// int id = r.getInt(2);
// System.out.println("Row " + id + ":");
// System.out.println(geom.toString());
//}
//s.close();
}
conpg.commit();
conpg.close();
} catch (Exception e) {
e.printStackTrace();
}
使其工作的maven依赖项是
<dependency>
<groupId>net.postgis</groupId>
<artifactId>postgis-jdbc</artifactId>
<version>2.2.0</version>
<exclusions>
<exclusion>
<!-- NOTE: Version 4.2 has bundled slf4j -->
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<!-- NOTE: Version 4.2 has bundled slf4j -->
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
<exclusion>
<!-- NOTE: Version 4.2 has bundled slf4j -->
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</exclusion>
</exclusions>
请注意,您不一定需要排除依赖项(我自己的兼容性需要它)