数据库数据导出为json,获取json数据并写入数据库
写爬虫互联网协议(互联网协议)被封了怎么解决?立即使用
背景:
工作中我们可能会遇到需要将某个环境中的某些数据快速的移动到另一个环境的情况,此时我们就可以通过导入导出数据文件的方式实现。
(学习视频分享:java课程)
举例:
我们将这个环境的数据库中用户信息导出为一份数据格式文件,再直接将数据文件复制到另一个环境导入到数据库,这样可以达到我们的目的。
下面我将使用跳羚搭建用户数据信息的导入导出案例,实现了单用户和多用户数据库信息的导入导出功能。认真看完这篇文章,你一定能掌握导入导出数据文件的核心
准备工作
需要专家依赖坐标:
属国
groupIdorg.springframework.boot/groupId
artifact id spring-boot-starter-web/artifact id
/依赖关系
属国
groupIdorg.springframework.boot/groupId
项目的名称弹簧-启动-启动器-执行器/artifactId
/依赖关系
属国
groupIdorg.springframework.boot/groupId
artifactId弹簧靴启动器-百里香叶/artifactId
/依赖关系
属国
groupIdorg.projectlombok/groupId
artifactIdlombok/artifactId
可选true/可选
/依赖关系
属国
groupIdorg.mybatis.spring.boot/groupId
artifactId my batis-spring-boot-starter/artifactId
版本2 .1 .0/版本
/依赖关系
属国
groupIdmysql/groupId
artifactId MySQL-连接器-java/artifactId
版本8 .0 .18/版本
/依赖关系
属国
groupIdorg.springframework.boot/groupId
artifactId spring-boot-starter-JDBC/artifactId
/依赖关系
属国
groupIdcom.alibaba/groupId
artifactIdfastjson/artifactId
版本1 .2 .29/版本
/依赖关系
属国
groupIdorg.codehaus.jackson/groupId
人工标识杰克逊-映射器-ASL/人工标识
版本1 .9 .13/版本
/依赖关系数据库中的用户信息:
这些字段信息与爪哇中的实体类实体类一一对应
功能实现
准备好依赖和数据库信息之后,开始搭建用户导入导出具体框架:
导入导出单用户、多用户功能实现UserUtil
包com。格雷。测试。util
导入com。阿里巴巴。快速JSON。JSON
导入com。阿里巴巴。快速JSON。JSON对象;
导入com。阿里巴巴。快速JSON。序列化程序。序列化程序功能;
导入com。格雷。测试。实体。用户实体;
导入com。格雷。测试。实体。userintitylist
导入com。格雷。测试。模型。结果模型;
导入com。格雷。测试。服务。用户服务;
导入org。阿帕奇。公地。io。fileutils
导入org。代号豪斯。杰克逊。地图。对象映射器;
导入org。spring框架。util。对象实用程序;
导入org。spring框架。网络。多部分。多部分文件;
导入javax。servlet。http。http servlet响应;
导入Java。io。*;
导入Java。网。URL编码器;
导入Java。util。列表;
导入Java。util。uuid
公共类UserUtil {
//导入用户
公共静态结果模型导入用户(多部分文件多部分文件,用户服务用户服务){
结果模型结果模型=新的结果模型();
尝试{
//获取原始名字
字符串文件名=多部分文件。getoriginalfilename();
//获取后缀名
字符串后缀名称=文件名。子字符串(文件名。lastindexof( . )));
//先将。数据文件转为字符串类型
文件文件=新文件(/文件名);
//将多文件类型转换为文件类型
fileutils。复制inputstreamtofile(多部分文件。getinputstream()、file);
string JSON string=fileutils。readfiletostring(文件,‘UTF-8’);
//如果是数据或者文本文件(文本文件)文件
如果(。json .等于(后缀姓名) . txt .等于(后缀名称)){
//再将数据字符串转为实体类
JSON对象JSON对象=JSON对象。解析对象(JSON字符串);
用户实体用户实体=JSON对象。tojavaobject(JSON对象,用户实体。类);
用户实体。setid(null);
用户实体。setto ken(uuid。随机uuid().toString());
//调用创建用户的接口
用户服务。adduser(用户实体);
}否则{
结果模型。setstatuscode(0);
resultModel.setStatusMes(请上传正确格式的。数据或。文本文件(文本文件)文件!);
}
} catch(异常e) {
e。printstacktrace();
}
返回结果模型;
}
//批量导入用户
公共静态结果模型导入用户(多部分文件多部分文件,用户服务用户服务){
结果模型结果模型=新的结果模型();
尝试{
//获取原始名字
字符串文件名=多部分文件。getoriginalfilename();
//获取后缀名
字符串后缀名称=文件名。子字符串(文件名。lastindexof( . )));
//先将。数据文件转为字符串类型
文件文件=新文件(/文件名);
//将多文件类型转换为文件类型
fileutils。复制inputstreamtofile(多部分文件。getinputstream()、file);
string JSON string=fileutils。readfiletostring(文件,‘UTF-8’);
//如果是数据或者文本文件(文本文件)文件
如果(。json .等于(后缀姓名) . txt .等于(后缀名称)){
//再将数据字符串转为实体类
JSON对象JSON对象=JSON对象。解析对象(JSON字符串);
userintitylist userintitylist=JSON对象。tojavaobject(JSON对象,userintitylist。类);
ListUserEntity用户实体=用户实体列表。获取用户实体();
对于(用户实体用户实体:用户实体){
用户实体。setid(null);
用户实体。setto ken(uuid。随机uuid().toString());
//调用创建用户的接口
用户服务。adduser(用户实体);
}
}否则{
结果模型。setstatuscode(0);
resultModel.setStatusMes(请上传正确格式的。数据或。文本文件(文本文件)文件!);
}
} catch(异常e) {
e。printstacktrace();
}
返回结果模型;
}
//导出某个用户
公共静态结果模型导出用户(HttpServletResponse响应,用户实体用户实体,字符串文件名){
结果模型结果模型=新的结果模型();
对象映射器object mapper=new object mapper();
if(object utils。isempty(用户实体)){
结果模型。setstatuscode(0);
resultModel.setStatusMes(此用户编号没有对应的用户);
返回结果模型;
}否则{
尝试{
字符串JSON字符串=对象映射器。writevalueasstring(用户实体);
//拼接文件完整路径//生成数据格式文件
字符串完整路径=/文件名;
//保证创建一个新文件
文件文件=新文件(完整路径);
如果(!file.getParentFile().exists()) { //如果父目录不存在,创建父目录
file.getParentFile().mkdirs();
}
if (file.exists()) { //如果已存在,删除旧文件
文件。delete();
}
文件。创建新文件();//创建新文件
//将字符串格式化为数据格式
JSON字符串=JSON格式(JSON字符串);
//将格式化后的字符串写入文件
writer write=新输出流writer(新文件输出流(文件),‘UTF-8’);
写吧。write(JSON字符串);
写吧。flush();
写吧。close();
文件输入流fis=新文件输入流(文件);
//设置相关格式
回应。设置内容类型(“应用程序/strong制下载”).
//设置下载后的文件名以及页眉
回应。设置标题(内容-处置,附件;文件名=。concat(字符串。(URL编码器的值。编码(文件名,‘UTF-8’)))));
回应。setcharacterencoding(“utf-8”);
//创建输出对象
输出流OS=响应。获取输出流();
//常规操作
字节[]缓冲区=新字节[1024];
int len=0;
while((len=fis.read(buf))!=-1) {
os.write(buf,0,len);
}
fis。close();
OS。close();//一定要记得关闭输出流,不然会继续写入返回实体模型
返回结果模型;
} catch(异常e) {
结果模型。setstatuscode(0);
结果模型。setstatusmes(e . getmessage());
e。printstacktrace();
返回结果模型;
}
}
}
//导出所有用户
公共静态结果模型exportAllUser(http servlet response response,UserEntityList userEntityList,String fileName){
结果模型结果模型=新的结果模型();
对象映射器object mapper=new object mapper();
if(object utils。isempty(userintitylist)){
结果模型。setstatuscode(0);
resultModel.setStatusMes(此用户编号没有对应的用户);
返回结果模型;
}否则{
尝试{
字符串JSON字符串=对象映射器。writevalueasstring(userintitylist);
//拼接文件完整路径//生成数据格式文件
字符串完整路径=/文件名;
//保证创建一个新文件
文件文件=新文件(完整路径);
如果(!file.getParentFile().exists()) { //如果父目录不存在,创建父目录
file.getParentFile().mkdirs();
}
if (file.exists()) { //如果已存在,删除旧文件
文件。delete();
}
文件。创建新文件();//创建新文件
//将字符串格式化为数据格式
JSON字符串=JSON格式(JSON字符串);
//将格式化后的字符串写入文件
writer write=新输出流writer(新文件输出流(文件),‘UTF-8’);
写吧。write(JSON字符串);
写吧。flush();
写吧。close();
文件输入流fis=新文件输入流(文件);
//设置相关格式
回应。设置内容类型(“应用程序/strong制下载”).
//设置下载后的文件名以及页眉
回应。设置标题(内容-处置,附件;文件名=。concat(字符串。(URL编码器的值。编码(文件名,‘UTF-8’)))));
回应。setcharacterencoding(“utf-8”);
//创建输出对象
输出流OS=响应。获取输出流();
//常规操作
字节[]缓冲区=新字节[1024];
int len=0;
while((len=fis.read(buf))!=-1) {
os.write(buf,0,len);
}
fis。close();
OS。close();//一定要记得关闭输出流,不然会继续写入返回实体模型
返回结果模型;
} catch(异常e) {
结果模型。setstatuscode(0);
结果模型。setstatusmes(e . getmessage());
e。printstacktrace();
返回结果模型;
}
}
}
//将字符串格式化为数据格式的字符串
公共静态字符串jsonFormat(String jsonString) {
JSON object object=JSON object . parse object(JSON string);
JSON string=JSON . tojsonstring(object,SerializerFeature。PrettyFormat,SerializerFeature。WriteMapNullValue,SerializerFeature。WriteDateUseDateFormat);
返回jsonString
}
}1.启动项目,浏览器输入并访问http://localhost:8888/export/users,导出所有已有的用户json文件。
2.打开json文件,查看格式是否正确。
3.浏览器输入访问http://localhost:8888/批量导入用户
导入users.json文件
输入地址,然后单击提交。
检查数据库,发现另外两个测试用户1和2是成功的!
这里不测试导入单个用户,比较简单,其他关于springboot配置文件和实体类对应的数据库的信息不做详细说明。
推荐:java入门。以上是java如何使用json文件导入导出数据库数据的细节。请多关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。