Spring Boot 之 Accessing Relational Data using JDBC with Spring
2016-10-24 22:27
471 查看
Accessing Relational Data using JDBC with Spring
使用Spring jdbc 访问关系型数据
环境:
JDK1.8 or later
Gradle 2.3+ or Maven 3.0+
下载官方demo:
git clone https://github.com/spring-guides/gs-relational-data-access.git
进入目录
cd into
maven pom.xml
domain model
存储、获取数据
使用了java8 新特性 函数式编程。spring 提供了jdbcTemplate模版来访问关系型数据库。它使你能专注于业务逻辑,而不用关心
链接管理,异常处理
H2 是内存关系型数据库 会自动创建一个连接。因为我们使用spring-jdbc,springboot 会自动创建JdbcTemplate,
接下来运行main()方法
原文:https://spring.io/guides/gs/relational-data-access/
使用Spring jdbc 访问关系型数据
环境:
JDK1.8 or later
Gradle 2.3+ or Maven 3.0+
下载官方demo:
git clone https://github.com/spring-guides/gs-relational-data-access.git
进入目录
cd into
gs-relational-data-access/initial
maven pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.springframework</groupId> <artifactId>gs-relational-data-access</artifactId> <version>0.1.0</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.1.RELEASE</version> </parent> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
domain model
package hello; 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); } // getters & setters omitted for brevity }
存储、获取数据
package hello; 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 Application implements CommandLineRunner { private static final Logger log = LoggerFactory.getLogger(Application.class); public static void main(String args[]) { SpringApplication.run(Application.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())); } }
使用了java8 新特性 函数式编程。spring 提供了jdbcTemplate模版来访问关系型数据库。它使你能专注于业务逻辑,而不用关心
链接管理,异常处理
H2 是内存关系型数据库 会自动创建一个连接。因为我们使用spring-jdbc,springboot 会自动创建JdbcTemplate,
接下来运行main()方法
: Creating tables 2015-06-19 10:58:31.219 INFO 67731 --- [ main] hello.Application : Inserting customer record for John Woo 2015-06-19 10:58:31.220 INFO 67731 --- [ main] hello.Application : Inserting customer record for Jeff Dean 2015-06-19 10:58:31.220 INFO 67731 --- [ main] hello.Application : Inserting customer record for Josh Bloch 2015-06-19 10:58:31.220 INFO 67731 --- [ main] hello.Application : Inserting customer record for Josh Long 2015-06-19 10:58:31.230 INFO 67731 --- [ main] hello.Application : Querying for customer records where first_name = 'Josh': 2015-06-19 10:58:31.242 INFO 67731 --- [ main] hello.Application : Customer[id=3, firstName='Josh', lastName='Bloch'] 2015-06-19 10:58:31.242 INFO 67731 --- [ main] hello.Application : Customer[id=4, firstName='Josh', lastName='Long'] 2015-06-19 10:58:31.244 INFO 67731 --- [ main] hello.Application : Started Application in 1.693 seconds (JVM running for 2.054)
原文:https://spring.io/guides/gs/relational-data-access/
相关文章推荐
- Spring boot 实现 Accessing data with MySQL
- 【Spring-boot多数据库】Spring-boot JDBC with multiple DataSources sample
- Spring Boot with Spring Data JPA (1) - Concept
- Deal with relational data using libFM with blocks
- VS2008系列培训教程之三:Using LINQ with relational data
- Distributed transactions with multiple databases, Spring Boot, Spring Data JPA and Atomikos
- Configuring Cassandra with Spring Boot using Kundera
- using JDBC with Spring
- How to use JDBC-Authentication of Spring Boot/Spring Security with Flyway
- Distributed transactions with multiple databases, Spring Boot, Spring Data JPA and Atomikos
- Spring. Data access using JDBC
- Spring-boot JDBC with multiple DataSources sample
- 两张表(多对多关联)操作 with Spring Boot, Spring Data JPA, H2
- SpringBoot之Access Relational Data
- Error creating bean with name 'org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfigurati
- SPRING BOOT: USING JODA TIME ON JPA ENTITY WITH HIBERNATE
- Error creating bean with name 'org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfigurati
- Spring-boot JDBC with multiple DataSources sample
- 转载:使用Spring进行数据访问(Data Access With Spring)
- export excel file with using data table