通过Spring Boot可以快速搭建一个项目结构,在此基础上本文就通过一个简单的例子,说明如何结合Mybatis 和 Fastjson,快速的完成一个数据的入库基本操作。

添加相关的依赖

  1. <dependency>
  2. <groupId>org.mybatis.spring.boot</groupId>
  3. <artifactId>mybatis-spring-boot-starter</artifactId>
  4. <version>1.3.2</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.alibaba</groupId>
  8. <artifactId>fastjson</artifactId>
  9. <version>1.2.4</version>
  10. </dependency>

部分相关代码

数据库表结构

首先需要在数据库新建一张表,作为演示新建一张最简结构的表datatable,仅包含自增主键id,字段value和字段curr_time。

  1. CREATE TABLE `datatable` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `value` varchar(255) DEFAULT NULL,
  4. `curr_time` varchar(255) DEFAULT NULL,
  5. PRIMARY KEY (`id`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Bean实体

之后需要一个javabean对应数据表,这里有一个GsonFormat插件可以快速的生成一个beanClass。只需要根据一个json串{"value":"","curr_time":""}就可以自动生成相关的getSet方法。IntelliJ IDEA可以搜索插件直接安装。

  1. public class dataBean {
  2. /**
  3. * value :
  4. * curr_time :
  5. */
  6. private String value;
  7. private String curr_time;
  8. public String getValue() {
  9. return value;
  10. }
  11. public void setValue(String value) {
  12. this.value = value;
  13. }
  14. public String getCurr_time() {
  15. return curr_time;
  16. }
  17. public void setCurr_time(String curr_time) {
  18. this.curr_time = curr_time;
  19. }
  20. }

这里Fastjson提供一个@JSONField注解,用来帮助bean与数据表之间的字段对应(变量名大部分情况与数据表字段是不完全统一的)。将注解写在getset方法上即可,例如:

  1. @JSONField(name="table_value")
  2. public void setValue(String value) {
  3. this.value = value;
  4. }

同时还提供其他很有用的功能,例如在字段上加这段注解@JSONField(serialzeFeatures=SerializerFeature.WriteMapNullValue)就可以在由bean对象转json字符串时,为空值保留位置,{“value”:“null”},同样还有@format等实用注解。

Mapper相关

一个简单的Mapper.java类,仅包含insert方法。

  1. @Mapper
  2. @RestController
  3. public interface insert_table {
  4. void insert(List<dataBean> list);
  5. }

对应的mapper.xml添加如下insert语句即可。

  1. <mapper namespace="com.***.Mapper">
  2. <insert id="insert_table" parameterType="java.util.List">
  3. insert into datatable (value,curr_time)
  4. values
  5. <foreach collection="list" item="item" index="index" separator=",">
  6. (#{item.value},#{item.curr_time})
  7. </foreach>
  8. </insert>
  9. </mapper>

业务代码简单示例

  1. @Autowired
  2. private Mapper mapper;
  3. public void insertValue(){
  4. //此处json_str来自其他接口数据,一般为json_arr格式
  5. String json_str = "\[\{\"value\":\"1\",\"curr_time\":\"2018-10-11 18:00:00\"\},\{\"value\":\"2\",\"curr_time\":\"2018-10-11 18:05:00\"\}\]";
  6. List resList = JSON.parseArray(json_str, dataBean.class);
  7. mapper.insert(resList);
  8. }

其中JSON.parseArray()重载方法可以将json_str直接转换为相应的bean对象列表,此方法为Fastjson提供。

调用该方法即可完成最简单的数据入库,主要依赖Fastjaon 和 Mybatis提供的功能。

Spring Boot 与配置文件相关的几个实用注解

  1. @PropertySource(value = {"classpath:config/*.properties"})
  2. @ConfigurationProperties(prefix = "***")
  3. @Value("${***}")

首先@PropertySource注解放在类声明头上,指明需要加载的配置文件位置,如果没有该属性,则只默认加载全局配置文件application.properties;其次@Value注解放在成员变量头上,用于对单个变量自动赋值,其中***对应配置文件中的key值;当遇到属性值较多时,用@Value会比较繁琐,采用@ConfigurationProperties注解,放在类声明头上,通过指定prefix前缀,将配置文件中的值对应自动赋值给类成员变量。简单实例如下:

  1. ##data.properties配置文件内容,位于resources/config/下##
  2. data.username = admin
  3. data.password = 123456

相应的java.class代码如下:

  1. //##java.class文件内容##
  2. @PropertySource(value = {"classpath:config/data.properties"})
  3. @ConfigurationProperties(prefix = "data")
  4. public class Configuration {
  5. // @Value("${data.username}")
  6. private String username;
  7. // @Value("${data.password}")
  8. private String password;
  9. }

静态变量的自动赋值

通过上面三个注解,便可以通过配置文件来灵活改变个别属性值,但Spring Boot提供的自动赋值功能无法对static变量赋值。

在开发工作中,经常存在一些工具类,包含大量的静态方法,调用的静态变量值同样需要通过配置文件自动赋值,我们就需要变通的解决一下这个问题。因为Spring Boot 支持set方法注入,我们可以利用非静态set方法注入静态变量。

  1. @Component
  2. public class Helper {
  3. // @Value("${data.username}")直接用vlaue对static变量赋值是不会生效的
  4. private static String username;
  5. @Value("${data.username}")
  6. private void setUsername(String name){
  7. username = name;
  8. }
  9. }

需要注意的是代码中需要@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. 理解position:relative

    前言:position有5个属性:static.absolute.relative.fixed和inherit.本篇博客主要介绍relative属性,因为似乎很多人对这个属性的理解很模糊,而且不清楚r ...

  2. Python之面向对象继承复习

    总结:self是谁就从谁开始寻找

  3. a标签无法正确下载数据

    场景:做下载二维码功能,使用了a标签+download属性,在使用一段时候后,突然有一个数据下载时候无法识别文件格式,以前都是png下载 原因:因为download="文件名"这里 ...

  4. JDBC中处理事务,小Demo

    事务的四大特性(ACID):  原子性(Atomicity):事务中所有操作是不可再分割的原子单位.事务中所有操作要么全部执行成功,要么全部执行失败.  一致性(Consistency):事务执行 ...

  5. 【javascript】javasrcipt设计模式之状态模式

    使用场景 解决多个[ifelse]嵌套,将其封装成若干个方法 区分事物内部的状态,事物内部的状态的改变往往会带来事物的行为的改变 简单的多个状态直接切换的时候 //两个状态之间的切换,使用if-els ...

  6. H5禁止手机自带键盘弹出

    一个功能中用到这个, 调用软键盘,  不想弹出手机默认的输入法 网上找了个 http://blog.csdn.net/qq_24147051/article/details/52958610 处理方式 ...

  7. MySQL数据库(10)----IN 和 NOT IN 子查询

    当子查询要返回多个行来与外层查询进行比较运算时,可以使用运算符 IN 和 NOT IN.它们会测试某个给定的比较值是否存在于某一组值里.如果外层查询里的行与子查询返回的某一个行相匹配,那么 IN 的结 ...

  8. Microsoft Toolkit.exe激活office 2010方法

    1.双击打开激活工具 2.点击下方的office图标. 3.选择Activation标签,下拉选择AutoKMS,点击Install,完成后点击Activate,即可.

  9. php 在字符串指定位置插入新字符

    因为项目用到DataTable表格加载后台数据,要连表查询虚拟机选中的策略状态,所以想到先把策略表内容取出来,组成一个'<select><option value="1&q ...

  10. flask介绍

    安装flask pip3 install flask 短小精悍.可扩展强 的一个Web框架. 牛逼点:上下文管理机制 依赖wsgi: werkzeug(相当于Django的wsgi):只要安装flas ...