我的目录
总体描述
java怎样使用jdbc转换sqlserver的Geometry字段
我用的是ssm框架,在dao层和service层实现数据库的提取
#dao层代码
package com.agriculture.demo.dao;
public class Geometrydata {
private int id;
private int block_id;
private float block_lon;
private float block_lat;
private String block_coord;
private float block_perimeter;
private float block_area;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getBlock_id() {
return block_id;
}
下面是相对应的get和set,block_coord为geometry字段,此处定义为String
#从mysql中提取block字段
service层
@Service
public class GeometrydataService {
@Autowired
private JdbcTemplate jdbcTemplate;
public List<Geometrydata> getList(){
String sql = "SELECT id,block_id,block_lon,block_lat,AsText(block_coord) as block_coord,block_perimeter,block_area FROM geometry";
return (List<Geometrydata>) jdbcTemplate.query(sql, new RowMapper<Geometrydata>(){
@Override
public Geometrydata mapRow(ResultSet rs, int rowNum) throws SQLException{
Geometrydata geometrydata = new Geometrydata();
geometrydata.setId(rs.getInt("id"));
geometrydata.setBlock_id(rs.getInt("block_id"));
geometrydata.setBlock_lon(rs.getFloat("block_lon"));
geometrydata.setBlock_lat(rs.getFloat("block_lat"));
geometrydata.setBlock_coord(rs.getString("block_coord"));
geometrydata.setBlock_perimeter(rs.getFloat("block_perimeter"));
geometrydata.setBlock_area(rs.getFloat("block_area"));
//String str = new String((rs.getString("block_coord")).getBytes());
// System.out.println(geometrydata);
return geometrydata;
}
});
}
}
String sql = “SELECT id,block_id,block_lon,block_lat,AsText(block_coord) as block_coord,block_perimeter,block_area FROM geometry”;
记得一定要加as block_coord,在百度中搜索基本没有加as的,导致自己困惑了很久,加上as blcok_coord,block_coord就是你自己geometry字段的名称,如果你是8.0版本及以上astext可能还要在前面天机St_AsText。
数据库如下图:
这样就能提取geometry字段了。
参考文章链接