2 Star 0 Fork 0

mangata / geoserverUtils

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Mybatis Generator 处理地理坐标

运行

  1. 配置数据库链接

  2. 修改resources/mybatis-generator-config.xml数据表映射

  3. 运行 mbg.Generator

  4. 运行程序,调用接口

其他

添加地理坐标类

import lombok.Data;
@Data
public class CPoint {
    double[] coordinates;
}

@Data
public class CLine {
    private List<double[]> coordinates;
}

添加地理坐标数据类型处理


import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedTypes;
import org.postgis.PGgeometry;
import org.postgis.Point;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

@MappedTypes({CPoint.class})
public class PointHandler extends BaseTypeHandler<CPoint> {

    @Override
    // 重写CPoint getter 方法, 其他方法可以为默认值
    public CPoint getNullableResult(ResultSet resultSet, String s) throws SQLException {
        PGgeometry pGgeometry = (PGgeometry) resultSet.getObject(s);
        Point point = pGgeometry.getGeometry().getPoint(0);

        CPoint cPoint = new CPoint();
        cPoint.setCoordinates(new double[]{point.x, point.y});
        return cPoint;
    }
}


@MappedTypes(CLine.class)
public class LineHandler extends BaseTypeHandler<CLine> {
    
    @Override
    public CLine getNullableResult(ResultSet resultSet, String s) throws SQLException {
        List<double[]> coordinates = new ArrayList<>();

        PGgeometry pGgeometry = (PGgeometry) resultSet.getObject(s);
        // 正常的数据类型应该为LineString的
        // 因为数据库里面是MultiLineString, 所以我取了第一条多段线
        MultiLineString multiLineString = (MultiLineString) pGgeometry.getGeometry();
        if(multiLineString.getLines().length == 0) return null;

        LineString firstLine = multiLineString.getLine(0);
        for (Point point : firstLine.getPoints()){
            double[] coord = new double[]{point.x, point.y};
            coordinates.add(coord);
        }
        CLine cLine = new CLine();
        cLine.setCoordinates(coordinates);
        return cLine;
    }
}

参考链接:

  1. mybatis generator xml配置
  2. MyBatis Generator 超详细配置

注:省略的配置数据:

  1. src/resources/mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="org.postgresql.Driver"/>
                <property name="url" value="jdbc:postgresql://0.0.0.0:5432/database"/>
                <property name="username" value=""/>
                <property name="password" value=""/>
            </dataSource>
        </environment>
    </environments>
</configuration>
  1. src/resource/application.properties
server.port=9000

# 数据库配置
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://0.0.0.0:5432/database
spring.datasource.username=
spring.datasource.password=
spring.jackson.serialization.fail-on-empty-beans=false


# Mybatis 配置
mybatis.mapperLocations=classpath:mapper/*.xml

空文件

简介

取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/lijian95/geoserver-utils.git
git@gitee.com:lijian95/geoserver-utils.git
lijian95
geoserver-utils
geoserverUtils
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891