当前位置: 首页 > news >正文

嘉义市网站建设_网站建设公司_在线商城_seo优化

网站建设流程包括哪些环节,热点军事新闻,黑龙江建设网网站一体化平台,石家庄建设公司网站前言 由于业务需要对坐标信息进行存储#xff0c;包括中心点和区域坐标数组#xff0c;然后就开始考虑数据的存储问题#xff0c;刚开始想着用最简单的两个字段分别存储经度纬度#xff0c;这样发现关联查询表可能会比较多#xff0c;有点麻烦。之后想起来kingbase好像有…前言 由于业务需要对坐标信息进行存储包括中心点和区域坐标数组然后就开始考虑数据的存储问题刚开始想着用最简单的两个字段分别存储经度纬度这样发现关联查询表可能会比较多有点麻烦。之后想起来kingbase好像有对坐标信息支持的类型于是查了查文档试了一下就有了这篇文章这篇文章主要目的在于如何在实际业务中应用POINT数据类型和PATH数据与java对象的映射转换完成业务功能。 涉及的工具和库 KingBaseES V8R3Mybatis-pluslombok 具体步骤 创建数据库表 -- 位置表信息 create table busi_assets_location (id varchar(25) not nullconstraint busi_assets_location_pkprimary key,fid VARCHAR(50) NOT NULL,centre POINT,area Decimal(10,2),boundary path,create_time timestamp not null,create_by VARCHAR(25) not null,update_time timestamp,update_by varchar(25) );comment on TABLE public.busi_assets_location is 资产地理信息表; comment on column busi_assets_location.id is 主键; comment on column busi_assets_location.fid is 资产id; comment on column busi_assets_location.area is 面积; comment on column busi_assets_location.boundary is 边界坐标; comment on column busi_assets_location.create_time is 创建时间; comment on column busi_assets_location.create_by is 创建人; comment on column busi_assets_location.update_time is 更新时间; comment on column busi_assets_location.update_by is 更新人;创建实体类 package com.seerbigdata.assets.domain.po;import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.kingbase8.geometric.KBpath; import com.kingbase8.geometric.KBpoint; import com.seerbigdata.common.core.domain.BaseEntity; import com.seerbigdata.common.handler.KBPathTypeHandler; import com.seerbigdata.common.handler.KBPointTypeHandler; import io.swagger.annotations.ApiModelProperty; import lombok.Data;import java.io.Serializable; import java.math.BigDecimal; import java.util.Date;Data TableName(busi_assets_location) public class AssertsLocation extends BaseEntity implements Serializable {private static final long serialVersionUID 1L;/*** ID*/TableId(value id)ApiModelProperty(value id)private String id;/*** 资产id*/private String fid;/*** 中心点坐标*/TableField(value centre,typeHandler KBPointTypeHandler.class)private KBpoint centre;/*** 面积*/private BigDecimal area;/*** 边界坐标*/TableField(value boundary,typeHandler KBPathTypeHandler.class)private KBpath boundary;} 编写类型处理器重点 其实最重要的就是根据kingbase提供的jdbc驱动中的地理位置类型编写相应的类型处理器然后在跟实体类做关联让后mybatis-plus能找到对应的处理器来对属性进行赋值就可以了剩下的CRUD跟平常的开发过程并没有什么区别这里就不多加详述了下面直接把两个类型处理器的代码贴出来 package com.seerbigdata.common.handler;import com.kingbase8.geometric.KBpath; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.MappedTypes;import java.sql.*;MappedTypes(KBpath.class) public class KBPathTypeHandler extends BaseTypeHandlerKBpath {Overridepublic void setNonNullParameter(PreparedStatement ps, int i, KBpath parameter, JdbcType jdbcType) throws SQLException {// 构造path对象的值// KBpath的getValue方法会自动将坐标数据组装成可以存入数据库的字符串详细的可以自行看源码很简单ps.setObject(i, parameter.getValue(), Types.OTHER); // 使用 Types.OTHER 类型表示 KingBase 中的KBpath 类型}Overridepublic KBpath getNullableResult(ResultSet rs, String columnName) throws SQLException {// 从 ResultSet 获取 Kingbase 中 KBpath 类型并转换为 KBpath 对象Object object rs.getObject(columnName);return (KBpath) object;}Overridepublic KBpath getNullableResult(ResultSet rs, int columnIndex) throws SQLException {// 从 ResultSet 获取 Kingbase 中 KBpath 类型并转换为 KBpath 对象Object object rs.getObject(columnIndex);return (KBpath) object;}Overridepublic KBpath getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {// 从 CallableStatement 获取 Kingbase 中 KBpath 类型并转换为 KBpath 对象Object object cs.getObject(columnIndex);return (KBpath) object;} } package com.seerbigdata.common.handler;import com.kingbase8.geometric.KBpoint; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.MappedTypes;import java.sql.*;MappedTypes(KBpoint.class) public class KBPointTypeHandler extends BaseTypeHandlerKBpoint {Overridepublic void setNonNullParameter(PreparedStatement ps, int i, KBpoint parameter, JdbcType jdbcType) throws SQLException {// 将 Point 对象转换为 Kingbase 中 POINT 类型ps.setObject(i,parameter.getValue(),Types.OTHER);}Overridepublic KBpoint getNullableResult(ResultSet rs, String columnName) throws SQLException {// 从 ResultSet 获取 Kingbase 中 POINT 类型并转换为 Point 对象Object object rs.getObject(columnName);return (KBpoint) object;}Overridepublic KBpoint getNullableResult(ResultSet rs, int columnIndex) throws SQLException {// 从 ResultSet 获取 Kingbase 中 POINT 类型并转换为 Point 对象Object object rs.getObject(columnIndex);return (KBpoint) object;}Overridepublic KBpoint getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {// 从 CallableStatement 获取 Kingbase 中 POINT 类型并转换为 Point 对象Object object cs.getObject(columnIndex);return (KBpoint) object;} } 有了这两个类型处理器接下来就只需要在CRUD的时候能关联上对应的处理器进行处理就好了。 mapper xml ?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.seerbigdata.assets.mapper.AssertsLocationMapperresultMap idassertsLocationMap typecom.seerbigdata.assets.domain.po.AssertsLocationid propertyid columnid /result propertyfid columnfid /!-- 指定类型处理器 --result propertycentre columncentre javaTypecom.kingbase8.geometric.KBpoint jdbcTypeOTHERtypeHandlercom.seerbigdata.common.handler.KBPointTypeHandler /result propertyarea columnarea /result propertyboundary columnboundary javaTypecom.kingbase8.geometric.KBpath jdbcTypeOTHERtypeHandlercom.seerbigdata.common.handler.KBPathTypeHandler /result propertycreateTime columncreate_time/result propertycreateBy columncreate_by/result propertyupdateTime columnupdate_time/result propertyupdateBy columnupdate_by//resultMapselect idlistAssertsLocations resultMapassertsLocationMapselect * from busi_assets_location where fid #{fid}/select/mapper mapper package com.seerbigdata.assets.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.seerbigdata.assets.domain.po.AssertsLocation; import com.seerbigdata.assets.domain.po.Contract; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param;import java.util.List;Mapper public interface AssertsLocationMapper extends BaseMapperAssertsLocation {/*** 地理位置信息查询* param fid* return*/ListAssertsLocation listAssertsLocations(Param(fid) String fid); } 后记 经过测试已经可以正常对数据进行CRUD接口也能正常返回坐标数据但是数据的结构仍然是以{x:101.22222,y:33.0000}这种json格式返回给前端与自己定义两个数据库字段的区别不是很大但在数据库层面可以使用PostgreSQL中的地理位置信息函数这块有兴趣的话可以看下开发手册。 前端要求要标准的geo格式进行数据返回例如[101.22222,33.0000]这种格式最终为了方便还是采用mongoDB来进行数据存储。
http://www.ihoyoo.com/news/53830.html

相关文章:

  • 南京建设局的网站首页网站内链怎么布局
  • 北京网站建设制作哪家公司好无极网站无极城市在线
  • 无锡网站设计多少钱网站已运行时间代码
  • 花钱做网站为国外的公司提供网站建设 维护
  • 网站被黑刚恢复排名又被黑了河南建设工程信息网电话
  • wordpress演示站教程产品宣传网站的作用
  • 负责网站建设和网络推广的360免费自助建站
  • 网站的所有权免费网站空间怎么办
  • 重庆商城网站建设苏州网站建设自助建站收费
  • 手机网站制作代理商网页版微信登录不了怎么回事
  • 网站未备案做经营被罚款自己做网站卖什么
  • 网站开发学习步骤我想在百度上发布广告怎么发
  • 个人免费开发appseo厂家费用低
  • 为什么我有的网站打不开个体工商户网上年检
  • 提供网站建设电话网站建设是由什么组成的
  • 第一站长网怎样做网站 app教程
  • 做暧暧网站怎么做填表网站
  • 怎么寻求网站建设郑州设计工作室
  • 网站馆店精准引流怎么推广太原网站建设pnjfw
  • 终端平台网站建设建筑公司加盟开分公司
  • 北龙建设集团网站温州做网站哪家比较好
  • 做电影类网站收入怎么样上海本市企业查询
  • 关键词优化平台有哪些seo数据分析
  • 自己做公司网站简单吗昆明小程序定制
  • 绵阳网站关键字优化绍兴住房和城乡建设厅网站
  • 濮阳建站推广哪家好野马视觉传媒网站建设
  • 楼盘网站模板保定网站建设价格低
  • html5手机网站开发视频教程盐城网站制作哪家好
  • 洛阳网站建设找汉狮网页设计师个人网站
  • 常州企业自助建站系统昆明做网站要多少钱