Spring Boot与Mybatis 借助Fastjson快速完成数据解析入库
通过Spring Boot
可以快速搭建一个项目结构,在此基础上本文就通过一个简单的例子,说明如何结合Mybatis 和 Fastjson
,快速的完成一个数据的入库基本操作。
添加相关的依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.4</version>
</dependency>
部分相关代码
数据库表结构
首先需要在数据库新建一张表,作为演示新建一张最简结构的表datatable,仅包含自增主键id,字段value和字段curr_time。
CREATE TABLE `datatable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`value` varchar(255) DEFAULT NULL,
`curr_time` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Bean实体
之后需要一个javabean对应数据表,这里有一个GsonFormat
插件可以快速的生成一个beanClass。只需要根据一个json串{"value":"","curr_time":""}
就可以自动生成相关的getSet方法。IntelliJ IDEA
可以搜索插件直接安装。
public class dataBean {
/**
* value :
* curr_time :
*/
private String value;
private String curr_time;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getCurr_time() {
return curr_time;
}
public void setCurr_time(String curr_time) {
this.curr_time = curr_time;
}
}
这里Fastjson
提供一个@JSONField
注解,用来帮助bean与数据表之间的字段对应(变量名大部分情况与数据表字段是不完全统一的)。将注解写在get
和set
方法上即可,例如:
@JSONField(name="table_value")
public void setValue(String value) {
this.value = value;
}
同时还提供其他很有用的功能,例如在字段上加这段注解@JSONField(serialzeFeatures=SerializerFeature.WriteMapNullValue)
就可以在由bean对象转json字符串时,为空值保留位置,{“value”:“null”}
,同样还有@format
等实用注解。
Mapper相关
一个简单的Mapper.java
类,仅包含insert方法。
@Mapper
@RestController
public interface insert_table {
void insert(List<dataBean> list);
}
对应的mapper.xml
添加如下insert语句即可。
<mapper namespace="com.***.Mapper">
<insert id="insert_table" parameterType="java.util.List">
insert into datatable (value,curr_time)
values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.value},#{item.curr_time})
</foreach>
</insert>
</mapper>
业务代码简单示例
@Autowired
private Mapper mapper;
public void insertValue(){
//此处json_str来自其他接口数据,一般为json_arr格式
String json_str = "\[\{\"value\":\"1\",\"curr_time\":\"2018-10-11 18:00:00\"\},\{\"value\":\"2\",\"curr_time\":\"2018-10-11 18:05:00\"\}\]";
List resList = JSON.parseArray(json_str, dataBean.class);
mapper.insert(resList);
}
其中JSON.parseArray()
重载方法可以将json_str
直接转换为相应的bean对象列表,此方法为Fastjson
提供。
调用该方法即可完成最简单的数据入库,主要依赖Fastjaon 和 Mybatis
提供的功能。
Spring Boot 与配置文件相关的几个实用注解
@PropertySource(value = {"classpath:config/*.properties"})
@ConfigurationProperties(prefix = "***")
@Value("${***}")
首先@PropertySource
注解放在类声明头上,指明需要加载的配置文件位置,如果没有该属性,则只默认加载全局配置文件application.properties
;其次@Value
注解放在成员变量头上,用于对单个变量自动赋值,其中***
对应配置文件中的key值;当遇到属性值较多时,用@Value
会比较繁琐,采用@ConfigurationProperties
注解,放在类声明头上,通过指定prefix
前缀,将配置文件中的值对应自动赋值给类成员变量。简单实例如下:
##data.properties配置文件内容,位于resources/config/下##
data.username = admin
data.password = 123456
相应的java.class
代码如下:
//##java.class文件内容##
@PropertySource(value = {"classpath:config/data.properties"})
@ConfigurationProperties(prefix = "data")
public class Configuration {
// @Value("${data.username}")
private String username;
// @Value("${data.password}")
private String password;
}
静态变量的自动赋值
通过上面三个注解,便可以通过配置文件来灵活改变个别属性值,但Spring Boot提供的自动赋值功能无法对static变量赋值。
在开发工作中,经常存在一些工具类,包含大量的静态方法,调用的静态变量值同样需要通过配置文件自动赋值,我们就需要变通的解决一下这个问题。因为Spring Boot 支持set方法注入,我们可以利用非静态set方法注入静态变量。
@Component
public class Helper {
// @Value("${data.username}")直接用vlaue对static变量赋值是不会生效的
private static String username;
@Value("${data.username}")
private void setUsername(String name){
username = name;
}
}
需要注意的是代码中需要@Component
注解,同时set
方法要是非静态的。
Spring Boot与Mybatis 借助Fastjson快速完成数据解析入库的更多相关文章
- 使用intelliJ创建 spring boot + gradle + mybatis站点
Spring boot作为快速入门是不错的选择,现在似乎没有看到大家写过spring boot + gradle + mybatis在intellij下的入门文章,碰巧.Net同事问到,我想我也可以写 ...
- Spring Boot整合Mybatis并完成CRUD操作
MyBatis 是一款优秀的持久层框架,被各大互联网公司使用,本文使用Spring Boot整合Mybatis,并完成CRUD操作. 为什么要使用Mybatis?我们需要掌握Mybatis吗? 说的官 ...
- Spring boot整合Mybatis
时隔两个月的再来写博客的感觉怎么样呢,只能用“棒”来形容了.闲话少说,直接入正题,之前的博客中有说过,将spring与mybatis整个后开发会更爽,基于现在springboot已经成为整个业界开发主 ...
- 详解Spring Boot集成MyBatis的开发流程
MyBatis是支持定制化SQL.存储过程以及高级映射的优秀的持久层框架,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集. spring Boot是能支持快速创建Spring应用的Java框 ...
- Spring Boot 整合MyBatis(1)
这篇文章介绍如何在Spring boot中整合Mybatis,其中sql语句采用注解的方式插入.后续文章将会介绍,如何使用xml方式. SSM SSH框架已经满足轻量级这个需求了,但是对于开发人员而言 ...
- spring boot + gradle + mybatis
使用intelliJ创建 spring boot + gradle + mybatis站点 Spring boot作为快速入门是不错的选择,现在似乎没有看到大家写过spring boot + gr ...
- Spring boot之MyBatis
文章目录1. 环境依赖2. 数据源2.1. 方案一 使用 Spring Boot 默认配置2.2. 方案二 手动创建3. 脚本初始化4. MyBatis整合4.1. 方案一 通过注解的方式4.1.1. ...
- Spring Boot 整合 Mybatis 实现 Druid 多数据源详解
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “清醒时做事,糊涂时跑步,大怒时睡觉,独处时思考” 本文提纲一.多数据源的应用场景二.运行 sp ...
- Spring boot教程mybatis访问MySQL的尝试
Windows 10家庭中文版,Eclipse,Java 1.8,spring boot 2.1.0,mybatis-spring-boot-starter 1.3.2,com.github.page ...
随机推荐
- 理解position:relative
前言:position有5个属性:static.absolute.relative.fixed和inherit.本篇博客主要介绍relative属性,因为似乎很多人对这个属性的理解很模糊,而且不清楚r ...
- Python之面向对象继承复习
总结:self是谁就从谁开始寻找
- a标签无法正确下载数据
场景:做下载二维码功能,使用了a标签+download属性,在使用一段时候后,突然有一个数据下载时候无法识别文件格式,以前都是png下载 原因:因为download="文件名"这里 ...
- JDBC中处理事务,小Demo
事务的四大特性(ACID): 原子性(Atomicity):事务中所有操作是不可再分割的原子单位.事务中所有操作要么全部执行成功,要么全部执行失败. 一致性(Consistency):事务执行 ...
- 【javascript】javasrcipt设计模式之状态模式
使用场景 解决多个[ifelse]嵌套,将其封装成若干个方法 区分事物内部的状态,事物内部的状态的改变往往会带来事物的行为的改变 简单的多个状态直接切换的时候 //两个状态之间的切换,使用if-els ...
- H5禁止手机自带键盘弹出
一个功能中用到这个, 调用软键盘, 不想弹出手机默认的输入法 网上找了个 http://blog.csdn.net/qq_24147051/article/details/52958610 处理方式 ...
- MySQL数据库(10)----IN 和 NOT IN 子查询
当子查询要返回多个行来与外层查询进行比较运算时,可以使用运算符 IN 和 NOT IN.它们会测试某个给定的比较值是否存在于某一组值里.如果外层查询里的行与子查询返回的某一个行相匹配,那么 IN 的结 ...
- Microsoft Toolkit.exe激活office 2010方法
1.双击打开激活工具 2.点击下方的office图标. 3.选择Activation标签,下拉选择AutoKMS,点击Install,完成后点击Activate,即可.
- php 在字符串指定位置插入新字符
因为项目用到DataTable表格加载后台数据,要连表查询虚拟机选中的策略状态,所以想到先把策略表内容取出来,组成一个'<select><option value="1&q ...
- flask介绍
安装flask pip3 install flask 短小精悍.可扩展强 的一个Web框架. 牛逼点:上下文管理机制 依赖wsgi: werkzeug(相当于Django的wsgi):只要安装flas ...