通过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与数据表之间的字段对应(变量名大部分情况与数据表字段是不完全统一的)。将注解写在getset方法上即可,例如:

@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快速完成数据解析入库的更多相关文章

  1. 使用intelliJ创建 spring boot + gradle + mybatis站点

    Spring boot作为快速入门是不错的选择,现在似乎没有看到大家写过spring boot + gradle + mybatis在intellij下的入门文章,碰巧.Net同事问到,我想我也可以写 ...

  2. Spring Boot整合Mybatis并完成CRUD操作

    MyBatis 是一款优秀的持久层框架,被各大互联网公司使用,本文使用Spring Boot整合Mybatis,并完成CRUD操作. 为什么要使用Mybatis?我们需要掌握Mybatis吗? 说的官 ...

  3. Spring boot整合Mybatis

    时隔两个月的再来写博客的感觉怎么样呢,只能用“棒”来形容了.闲话少说,直接入正题,之前的博客中有说过,将spring与mybatis整个后开发会更爽,基于现在springboot已经成为整个业界开发主 ...

  4. 详解Spring Boot集成MyBatis的开发流程

    MyBatis是支持定制化SQL.存储过程以及高级映射的优秀的持久层框架,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集. spring Boot是能支持快速创建Spring应用的Java框 ...

  5. Spring Boot 整合MyBatis(1)

    这篇文章介绍如何在Spring boot中整合Mybatis,其中sql语句采用注解的方式插入.后续文章将会介绍,如何使用xml方式. SSM SSH框架已经满足轻量级这个需求了,但是对于开发人员而言 ...

  6. spring boot + gradle + mybatis

    使用intelliJ创建 spring boot + gradle + mybatis站点   Spring boot作为快速入门是不错的选择,现在似乎没有看到大家写过spring boot + gr ...

  7. Spring boot之MyBatis

    文章目录1. 环境依赖2. 数据源2.1. 方案一 使用 Spring Boot 默认配置2.2. 方案二 手动创建3. 脚本初始化4. MyBatis整合4.1. 方案一 通过注解的方式4.1.1. ...

  8. Spring Boot 整合 Mybatis 实现 Druid 多数据源详解

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “清醒时做事,糊涂时跑步,大怒时睡觉,独处时思考” 本文提纲一.多数据源的应用场景二.运行 sp ...

  9. 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 ...

随机推荐

  1. HEOI2017 游记

    你若安好,便是晴天. …… 人就像命运下的蝼蚁,谁也无法操控自己的人生. ——阮行止 …… Day 0 中午就要出发了,上午教练还搞了一场欢乐信心赛,然而还是挂惨了.T3是bzoj的原题,但是当时写的 ...

  2. cf1060C. Maximum Subrectangle(思维 枚举)

    题意 题目链接 Sol 好好读题 => 送分题 不好好读题 => 送命题 开始想了\(30\)min数据结构发现根本不会做,重新读了一遍题发现是个傻逼题... \(C_{i, j} = a ...

  3. Storage 的使用

    //是否不支持storage isNoStorage: function(){ if(typeof(Storage)=="function" || window.sessionSt ...

  4. 【转载】python实例手册

    今天写爬虫的时候遇到了问题,在网上不停地查找资料,居然碰到两篇好文章: 1.python实例手册   作者:没头脑的土豆 另一篇在这:shell实例手册 python实例手册 #encoding:ut ...

  5. 【MFC】CDialogBar中按钮不可用

    现象展示: 具体原因: A button in a CDialogBar object is disabled automatically if the command routing does no ...

  6. Flume -- Transfer one type of source to another type

    Source within Flume is a kind of Server for outside client. Sink within Flume is a kind of client fo ...

  7. JFinal启动报错:Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jetty/server/Connector

    - 错误: Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/jetty/server/ ...

  8. August 09th 2017 Week 32nd Wednesday

    Find hope from despair, life will become brilliant. 从绝望中寻找希望,人生终将辉煌. Have you ever seen the movie Ba ...

  9. August 08th 2017 Week 32nd Tuesday

    The very essence of romance is uncertainty. 浪漫的精髓就在于它充满种种可能. Romance is the glamour that can turn th ...

  10. 创建工程支持scala代码开发

    第一步:idea当中创建创建普通maven工程 File ==> New ==> Project 第二步:修改pom.xml添加scala的版本以及打包插件 <dependencie ...