Spring4使用JDBCTemplate操作关系数据库

下面我们来利用Spring4来编写一个通过JDBCTemplate操作关系数据库的程序。

你将得到:

使用Spring4的JDBCTemplate来操作H2数据库。

必需准备:

1.大概15分钟时间。

2.JDK1.8或更高版本

3.Gradle2.3+Maven3.0+(本文示例采用gradle构建)

4.Spring官方提供的STS开发IDE

开始构建:

1.在STS中右键创建一个spring Starter Project。

点击Next 按照图中所选填充值

勾选JDBC 和 H2。

2. 我们编写类Customer来作为数据库表的javabean。代码如下:

 

package com.stalvan;

public class Customer {
    private long id;
    private String firstName, lastName;

    public Customer(long id, String firstName, String lastName) {
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
    }

    @Override
    public String toString() {
        return String.format(
                "Customer[id=%d, firstName='%s', lastName='%s']",
                id, firstName, lastName);
    }

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public String getFirstName() {
		return firstName;
	}

	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	public String getLastName() {
		return lastName;
	}

	public void setLastName(String lastName) {
		this.lastName = lastName;
	}

}

3.SpringBoot入口类代码如下:

 

package com.stalvan;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;


@SpringBootApplication
public class GsRelationalDataAccessApplication implements CommandLineRunner {

	 private static final Logger log = LoggerFactory.getLogger(GsRelationalDataAccessApplication.class);

	    public static void main(String args[]) {
	        SpringApplication.run(GsRelationalDataAccessApplication.class, args);
	    }

	    @Autowired
	    JdbcTemplate jdbcTemplate;

	    @Override
	    public void run(String... strings) throws Exception {

	        log.info("Creating tables");

	        jdbcTemplate.execute("DROP TABLE customers IF EXISTS");
	        jdbcTemplate.execute("CREATE TABLE customers(" +
	                "id SERIAL, first_name VARCHAR(255), last_name VARCHAR(255))");

	        // Split up the array of whole names into an array of first/last names
	        List<Object[]> splitUpNames = Arrays.asList("John Woo", "Jeff Dean", "Josh Bloch", "Josh Long").stream()
	                .map(name -> name.split(" "))
	                .collect(Collectors.toList());

	        // Use a Java 8 stream to print out each tuple of the list
	        splitUpNames.forEach(name -> log.info(String.format("Inserting customer record for %s %s", name[0], name[1])));

	        // Uses JdbcTemplate's batchUpdate operation to bulk load data
	        jdbcTemplate.batchUpdate("INSERT INTO customers(first_name, last_name) VALUES (?,?)", splitUpNames);

	        log.info("Querying for customer records where first_name = 'Josh':");
	        jdbcTemplate.query(
	                "SELECT id, first_name, last_name FROM customers WHERE first_name = ?", new Object[] { "Josh" },
	                (rs, rowNum) -> new Customer(rs.getLong("id"), rs.getString("first_name"), rs.getString("last_name"))
	        ).forEach(customer -> log.info(customer.toString()));
	    }
}

SpringBoot 会启动内存关系数据库 H2数据库。由于我们使用了Spring-jdbc所以SpringBoot会自动创建JdbcTemplate。

@Autowired标记会自动装配注解的对象。

本类实现了CommandLineRunner接口,实现此接口的类会在上下文环境加载完成后自动运行run方法。

首先我们用JdbcTemplate的execute方法执行了一些DLL语句,创建了数据库表。

然后我们用了batchUpdate方法对表进行了批量插入,如果想要插单条记录,那么我们也可以用insert方法。

4.启动程序。点击windows→showView→other  选择 Gradle(STS)中的Gradle Tasks

中双击bootRun 即可运行程序。

 

5.脱离IDE启动程序。

我们可以把程序打包成一个可执行的jar文件。打开命令行 切换到工程根目录下 执行命令 gradlew bootRun 就可以启动程序。

我们也可以先打包 再执行。打包命令为 gradlew build 然后执行命令为 java -jar build/libs/gs-relational-data-access-0.0.1-SNAPSHOT

至此 搭建完毕。如需下载DEMO程序 链接如下:

gs-relational-data-access源码下载