通过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. Bootstrap网格

    首先了解一下,什么是网格? 在平面设计中,网格是一种由一系列用于组织内容的相交的直线(垂直的.水平的)组成的结构(通常是二维的).它广泛应用于打印设计中的设计布局和内容结构.在网页设计中,它是一种用于 ...

  2. javascript实现数据结构: 树和森林

    树的3种常用链表结构 1 双亲表示法(顺序存储结构) 优点:parent(tree, x)操作可以在常量时间内实现 缺点:求结点的孩子时需要遍历整个结构 用一组连续的存储空间来存储树的结点,同时在每个 ...

  3. 微服务实战(三):以MySQL为例,从原理上理解那些所谓的数据库军规

    原文链接:微服务化的数据库设计与读写分离(来源:刘超的通俗云计算) 数据库永远是应用最关键的一环,同时越到高并发阶段,数据库往往成为瓶颈,如果数据库表和索引不在一开始就进行良好的设计,则后期数据库横向 ...

  4. RHEL生命周期管理 -- Should I stay, or should I go?

    1. RHEL的支持策略是怎么样的? 标准支持(一般7年)+ 延长支持(3年) 2. 升级RHEL的好处有哪些? More advantageous to upgrade completely to ...

  5. androidandroid中的通过网页链接打开本地app

    http://blog.csdn.net/zjlovety/article/details/54847980 <html> <head> <meta http-equiv ...

  6. linux下部署redis

    基础知识: 1.Redis的数据类型: 字符串.列表(lists).集合(sets).有序集合(sorts sets).哈希表(hashs)2.Redis和memcache相比的独特之处: (1)re ...

  7. Python 词云 【中/英】小白简单入门教程

    1. 分析 构建词云需要具备: 原料即文章等内容 将内容进行分词 将分词后的内容利用构建词云的工具进行构建 保存成图片 2. 需要的主要模块 jieba 中文分词 wordcloud 构建词云 3. ...

  8. Oracle SQL语句操作数字:取整、四舍五入及格式化

    用oracle sql对数字进行操作: 取上取整.向下取整.保留N位小数.四舍五入.数字格式化 取整(向下取整): select floor(5.534) from dual;select trunc ...

  9. 第六次作业——Excel制作工资表

  10. zk集群的快速搭建

    1.上传一个zk.tar2.解压3.创建目录data4.修改zoo_sample.cfg ---> zoo.cfg5.修改文件的dataDir改为/data目录,echo 1 >/data ...