如何使用sql2o从具有Geometry类型的表中检索java对象

时间:2016-08-27 21:07:19

标签: java postgresql postgis sql2o

我正在使用sql2o将PostgreSQL行映射到java对象。

我的表格有POINT类型的列和带有两个Double的java模型,两者都代表纬度和经度。

要在数据库中保存对象,我正在执行以下操作:

public void save()
{
    try(Connection con = DB.sql2o.open()) {
        String sql = "INSERT INTO my_table(geom) VALUES (SetSRID(CAST(:geom AS geometry), 4326));";
        con.createQuery(sql)
            .addParameter("geom", "POINT(" + this.latitude + " " + this.longitude+ ")")
            .executeUpdate();
    }
}

但现在我想要检索我存储的对象。我怎样才能做到这一点?如何将POINT映射到两个Double

1 个答案:

答案 0 :(得分:0)

我设法得到了我自己的问题的答案,这是代码:

public List<MyModel> models()
{
    try(Connection con = DB.sql2o.open()) {
        String sql = "SELECT ST_X(geom) AS latitude, ST_Y(geom) AS longitude FROM my_table;";
        List<MyModel> models = con.createQuery(sql)
            .executeAndFetch(MyModel.class);

        return models;
    }
}