下面我们来利用Spring4来编写一个通过JDBCTemplate操作关系数据库的程序。
你将得到:
使用Spring4的JDBCTemplate来操作H2数据库。
必需准备:
1.大概15分钟时间。
2.JDK1.8或更高版本
3.Gradle2.3+或Maven3.0+(本文示例采用gradle构建)
开始构建:
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程序 链接如下:



