在做H5开发过程中,地区选择的基础数据产品经理不知从哪里哪来了一些SQL,而这个数据其实很难会变,存储在后台的DB或者缓存中,好像没有必要,于是得想办法把它转成json串保存到文件中,请求时直接请求这个JSON串文件即可。
基础SQL:
DROP TABLE IF EXISTS Province; DROP TABLE IF EXISTS City; DROP TABLE IF EXISTS District; CREATE TABLE Province (Id int, Name varchar(50) , orderid int )row_format=dynamic engine=innodb default charset utf8; insert into Province values('1','北京','0'); insert into Province values('2','天津','0'); CREATE TABLE City( Id int , ProvinceId int, Name varchar(50), AreaCode varchar(50) )row_format=dynamic engine=innodb default charset utf8; insert into City values('1','1','北京市','010'); insert into City values('2','2','天津市','022'); insert into City values('3','3','石家庄市','0311'); insert into City values('4','3','唐山市','0315'); CREATE TABLE District( Id int , CityId int , Name varchar(50), PostCode varchar(50) )row_format=dynamic engine=innodb default charset utf8; insert into District values('1','1','东城区','100010'); insert into District values('2','1','西城区','100032'); insert into District values('3','1','崇文区','100061'); insert into District values('4','1','宣武区','100054'); insert into District values('5','1','朝阳区','100020'); insert into District values('6','1','丰台区','100071'); insert into District values('7','1','石景山区','100043');
一看,乖乖,这不就是一对多的关系吗?于是想到用MyBatis处理即可。参考myBatis系列之四:关联数据的查询和【Mybatis高级映射】一对一映射、一对多映射、多对多映射很快就写出来了。
Configuration.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> <typeAliases><!-- 别名 --> <typeAlias alias="Province" type="com.bijian.study.dto.Province" /> <typeAlias alias="City" type="com.bijian.study.dto.City" /> <typeAlias alias="District" type="com.bijian.study.dto.District" /> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"><!-- 数据源 --> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://10.107.96.172:3306/test" /> <property name="username" value="test" /> <property name="password" value="test" /> </dataSource> </environment> </environments> <mappers><!-- ORM映射文件 --> <mapper resource="com/bijian/study/dto/Province.xml" /> <mapper resource="com/bijian/study/dto/City.xml" /> <mapper resource="com/bijian/study/dto/District.xml" /> </mappers> </configuration>
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?> <configuration status="OFF"> <appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> </appenders> <loggers> <root level="info"> <appender-ref ref="Console"/> </root> </loggers> </configuration>
ProvinceMapper.java
package com.bijian.study.dao; import java.util.List; import com.bijian.study.dto.Province; public interface ProvinceMapper { Province getProvinceById(int id); List<Province> getProvinceList(); List<Province> getAllProvinceList(); }
Province.java
package com.bijian.study.dto; import java.util.List; public class Province { private int id; private String name; private int orderid; private List<City> subs; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getOrderid() { return orderid; } public void setOrderid(int orderid) { this.orderid = orderid; } public List<City> getSubs() { return subs; } public void setSubs(List<City> subs) { this.subs = subs; } }
Province.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.bijian.study.dao.ProvinceMapper"> <resultMap type="Province" id="provinceList1"> <id column="Id" property="id" /> <result column="Name" property="name" /> <result column="orderid" property="orderid" /> </resultMap> <select id="getProvinceById" parameterType="int" resultType="Province"> select * from Province where Id = #{id} </select> <select id="getProvinceList" resultMap="provinceList1"> select * from Province </select> <resultMap type="Province" id="provinceList"> <result column="p_id" property="id" /> <result column="p_name" property="name" /> <!-- Province属性映射到City类 --> <collection property="subs" ofType="City"> <id column="c_id" property="id" /> <result column="c_provinceId" property="provinceId"/> <result column="c_name" property="name" /> <result column="c_areaCode" property="areaCode" /> <!-- District属性映射到District类 --> <collection property="subs" ofType="District"> <id column="d_id" property="id" /> <result column="d_cityId" property="cityId" /> <result column="d_name" property="name" /> <result column="d_postCode" property="postCode" /> </collection> </collection> </resultMap> <select id="getAllProvinceList" resultMap="provinceList"> select p.Id p_id, p.Name p_name, c.Id c_id, c.ProvinceId c_provinceId, c.Name c_name, c.AreaCode c_areaCode, d.Id d_id, d.CityId d_cityId, d.Name d_name, d.PostCode d_postCode from Province p inner join City c on p.Id=c.ProvinceId inner join District d on c.Id=d.CityId </select> </mapper>
Main.java
package com.bijian.study; import java.io.IOException; import java.io.Reader; import java.util.List; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.bijian.study.dao.ProvinceMapper; import com.bijian.study.dto.Province; import com.fasterxml.jackson.databind.ObjectMapper; public class Main { private static final Logger log = LoggerFactory.getLogger(Main.class); private static SqlSessionFactory sqlSessionFactory; private static Reader reader; public static void main(String[] args) { try { reader = Resources.getResourceAsReader("Configuration.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); SqlSession session = sqlSessionFactory.openSession(); ProvinceMapper mapper = session.getMapper(ProvinceMapper.class); List<Province> provinceList = mapper.getAllProvinceList(); log.info("{}", provinceList.size()); ObjectMapper objMapper = new ObjectMapper(); String provinceListStr = objMapper.writeValueAsString(provinceList); log.info("{}", provinceListStr); } catch (IOException e) { log.error("Error thrown while reading the configuration: {}", e); } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { log.error("Error thrown while closing the reader: {}", e); } } } } }
运行Main.java,结果如下:
当然,由于在实际应用中,根本无需id、cityId等,postCode、areaCode也统一用code,所以修改一下对应的sqlMapper及dto,详见附件工程包《JsonTransfer.rar》,运行Main2.java结果如下所示:
相关推荐
NULL 博文链接:https://bijian1013.iteye.com/blog/2391682
近期公司用到了Timesten内存数据库,但是Timesten暂不支持json,所以自己写了个包,用户数据库与json的数据转换,没什么高深的,但是要在Timesten里写也需要时间,所以分享下。 主要包括几个方面的: 1. 根据key获取...
近期公司用到了Timesten内存数据库,但是Timesten暂不支持json,所以自己写了个包,用户数据库与json的数据转换,没什么高深的,但是要在Timesten里写也需要时间,所以分享下。 主要包括几个方面的: 1. 根据key...
例如: ./redis_to_json.py | gzip > redis_backup.json.gz这对于您正在使用但又不想丢失数据的应用程序也很不错,因为Redis RDB文件并不总是那么方便。注意事项和注意事项u()中的Unicode支持仅适用于Python2.x。...
工具数据库已包含,只需在iis挂上网站站点,然后修改根目录下的ajaxShow.html的66行,url修改成自己的站点网址,就可以测试
xcel表格数据导出为Lua table、csv、json形式的工具,兼带数据检查功能以及导出、导入MySQL数据库功能 Excel表格数据导出为Lua table形式的工具,兼带数据检查功能 希望这个工具能为今后ulua手机游戏项目带来便利,...
TrivialDB 是一款轻量级的专门用于存放Key-Value形式的Json数据的持久化数据库,概念上它是lodash 封装了纯JS对象,便于版本同步。创建命名空间:var trivialdb = require('trivialdb'); // Create a ...
在列表页的底部有个“更多”链接,通过触发该链接,向服务端发送Ajax请求,后台ASP程序接收请求参数,并作出相应,获取数据库相应的记录并以JSON的形式返回给前台页面,前台页面jQuery解析JSON数据,并将数据追加到...
旅游趋势大屏 框架:Python + html + css + jquery + bootstrap + json 数据库:无 数据集基于json接口的形式获取。 角色管理员 admin 123456 模块介绍 登录模块 大屏模块 数据库设计:无数据库
主要介绍了vue.js实现数据库的JSON数据输出渲染到html页面功能,结合实例形式分析了vue.js针对本地json数据的读取、遍历输出相关操作技巧,需要的朋友可以参考下
主要介绍了thinkPHP5实现的查询数据库并返回json数据功能,结合实例形式分析了thinkPHP5数据库查询及json格式数据简单操作技巧,需要的朋友可以参考下
1.我们看到字典形式的数据如下所示 list=[[2891-1, D],[2892-1, D],[2896-1, B],[2913-1, 0],[2913-2, 1],[2913-3, 1]] 此list是在数据库中存在的 2.我们把这些样式的字点数据做一次数据转换 把list转换成字典的...
在MongoDB中,数据是以文档的形式存储的,文档是一个键值对的集合,并且文档支持嵌套和数组。MongoDB中的一个文档相当于关系型数据库中的一行,多个文档构成了集合(collection),集合类似于关系型数据库中的表。 ...
数据采集和爬虫基础 房屋信息抓取 知识点:数据存储技术 文件形式存储 TXT格式存储 优点:代码简单。 缺点:后期处理分析都不方便。 文件形式存储 CSV格式存储 逗号分隔值(Comma-Separated Values,CSV,有时也称为...
数据集基于json接口的形式获取。 角色管理员 admin 123456 模块介绍 登录模块 大屏模块 模块介绍 登录模块 大屏模块 模块介绍 登录模块 大屏模块 模块介绍 登录模块 大屏模块 模块介绍 登录模块 大屏模块 模块...
今天小编就为大家分享一篇json获取数据库的信息在前端页面显示方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧