package com.eyougo.mybatis.postgis.type; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import org.postgis.Geometry; import org.postgis.PGgeometry; import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * Created by mei on 31/08/2017. */ public abstract class AbstractGeometryTypeHandler<T extends Geometry> extends BaseTypeHandler<T>{ public void setNonNullParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException { PGgeometry geometry = new PGgeometry(); geometry.setGeometry(parameter); ps.setObject(i, geometry); } public T getNullableResult(ResultSet rs, String columnName) throws SQLException { PGgeometry pGgeometry = (PGgeometry) rs.getObject(columnName); if (pGgeometry == null) { return null; } return (T) pGgeometry.getGeometry(); } public T getNullableResult(ResultSet rs, int columnIndex) throws SQLException { PGgeometry pGgeometry = (PGgeometry) rs.getObject(columnIndex); if (pGgeometry == null) { return null; } return (T) pGgeometry.getGeometry(); } public T getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { PGgeometry pGgeometry = (PGgeometry) cs.getObject(columnIndex); if (pGgeometry == null) { return null; } return (T) pGgeometry.getGeometry(); } }