spring batch框架入门(一、搭建springboot框架)

  Spring Batch是一个轻量级,全面的批处理框架,旨在开发对企业系统日常运营至关重要的强大批处理应用程序。 

最近公司比较闲,上一个项目做的是一个batch导入导出。之前对batch的概念都还不了解,发现公司用的正是基于spring batch框架的。于是趁着这段闲的时间来学习一下spring batch框架。就先模拟刚做的业务,将书籍信息从txt文件导入数据库,再从数据库导出至csv文件。
一、确定表结构
关于batch事务的表由springbatch框架来自动生成,这里我们只需要建立一张书籍信息表BOOK。这里简单点,书籍信息表也由框架自动生成,等下新建个Book实体类就好了。
本文用的mysql数据库,新建数据库,用户之类就不介绍了。推荐用docker安装mysql,docker下各种镜像真是太好用了,傻瓜式一键生成,卸载时干干净净。
二、新建batch项目
idea可以直接调用spring initializr,spring initializr就是初始化一个项目用的,可以选择需要的依赖来初始化项目。
File->New->Project->Spring Initializr
spring batch框架入门(一、搭建springboot框架)_第1张图片
本文并不是做一个web项目,选择的依赖如下
spring batch框架入门(一、搭建springboot框架)_第2张图片
Lombok方便编码,省去写get set toString之类。
Validation用来验证数据。
JPA,MySQL操作数据库。
Batch批处理。
生成的项目结构如下图
spring batch框架入门(一、搭建springboot框架)_第3张图片
三、创建实体类及数据库操作接口
1、创建Book实体类

package com.example.batchtest;

import lombok.Data;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity(name = "BOOK")
@Data
public class Book {
    @Id
    @Column(name = "ID")
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private Integer id;

    @Column(name = "NAME")
    private String name;

    @Column(name = "AUTHOR")
    private String author;

    @Column(name = "PRICE")
    private Double price;

    @Column(name = "PAPERBACK")
    private Integer paperback;

    @Column(name = "PUBLISHER")
    private String publisher;

    @Column(name = "LANGUAGE")
    private String language;

    @Column(name = "ISBN_10")
    private String isbn10;

    @Column(name = "DESCRIPTION")
    private String description;
}

2、数据库配置(application.properties)

# mysql配置
spring.datasource.url=jdbc:mysql://172.18.0.12:3306/batchtest?characterEncoding=utf8&useSSL=true
spring.datasource.username=abc
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql=true

com.mysql.cj.jdbc.Driver会标红,这是因为mysql的scope是runtime,不参与项目编译。若要不标红,去掉或者改成compile就可以了。但是没必要。

3、配置数据库操作接口

package com.example.batchtest;

import org.springframework.data.jpa.repository.JpaRepository;

public interface BookJpa extends JpaRepository {
}

四、测试代码

package com.example.batchtest;

import lombok.extern.slf4j.Slf4j;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class BatchtestApplicationTests {

    @Autowired
    private BookJpa bookJpa;

    @Test
    public void contextLoads() {
        Book book = new Book();
        book.setAuthor("伊凡·蒲宁");
        book.setDescription("《林荫幽径》是诺贝尔文学奖获得者蒲宁暮年的最后一部自选集,用八年时间写成,是他一生中写得最好、最富独创性的一个集子。《林荫幽径》真切地表现了作者对于故国的怀念和对于逝去的青年时代的眷恋。作品构思玲珑剔透,非常精致,有着磁石般的强烈吸引力;文字精练,抒情性强,擅 长表现人物内心的微妙情感。具有悠远的意境和发人遐思的哲理,展现了永恒的艺术魅力。");
        book.setIsbn10("9787540786618");
        book.setLanguage("中文");
        book.setName("林荫幽径");
        book.setPaperback(200);
        book.setPrice(45.00);
        book.setPublisher("漓江出版社");
        Book savedBook = bookJpa.save(book);
        Assert.assertNotNull(savedBook);
        log.info(savedBook.toString());
    }

}

运行成功,数据库新增了Book表以及关于林荫幽径的一条数据,框架就搭建好了,下一篇博客就开始编码batch相关数据。
在这里插入图片描述

你可能感兴趣的:(springbatch)