1. 程式人生 > >在Spring中使用JDBC訪問關係資料

在Spring中使用JDBC訪問關係資料

你需要什麼

  • 大約15分鐘
  • IntelliJ IDEA或其他編輯器
  • JDK 1.8或更高版本
  • Maven 3.2+

你會建立什麼

您將使用Spring的 JdbcTemplate 構建一個應用程式來訪問儲存在關係資料庫中的資料。

構建步驟

1、新增maven依賴。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId
>
</dependency> <!-- Spring Boot支援H2(一種記憶體中的關係資料庫引擎),並自動建立一個連線。 --> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency>

2、新建POJO

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 }

3、建表、存資料以及取資料。


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(" ")) //將List中的字串變成字元陣列
                .collect(Collectors.toList()); //將流物件轉化為List

        // 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()));
    }
}
  • 這個Application類實現了Spring Boot的CommandLineRunner,這意味著它將在應用程式上下文載入後執行run()方法。
  • 你可以使用JdbcTemplate的execute方法來執行一些DDL。
  • 對於單插入語句,JdbcTemplate的insert方法很好。但對於多個插入,最好使用batchUpdate
  • 使用 通過指示JDBC繫結變數來避免SQL注入攻擊的引數。

測試

整合完後直接執行main()方法就可以執行Spring程式。執行結果如下:

相關推薦

Spring使用JDBC訪問關係資料

你需要什麼 大約15分鐘 IntelliJ IDEA或其他編輯器 JDK 1.8或更高版本 Maven 3.2+ 你會建立什麼 您將使用Spring的 JdbcTemplate 構建一個應用程式來訪問儲存在關係資料庫中的資料。 構建步驟 1

JDBC學習之路(十二)使用Spring的JdbcTemple實現資料查詢

                其實在Spring這個框架中,提供了一些對JDBC訪問資料庫的封裝,其中JdbcTemplate就是一個很好用的類,下面來演示一下這個類的一些用法。首先需要匯入commons-logging.jar,和spring.jar這兩個包。然後使用他的功能就可以了,可以說,Spring

mysql在springjdbc.properties連接配置

mys stat initials color one eid 現在 對象 rem ############################## mysql的數據源 ############################## jdbc.driver=com.mysql.

springjdbc.properties用法

jdbc.properties程式碼: jdbc.driverClassName=oracle.jdbc.driver.OracleDriver jdbc.url=jdbc:oracle:thin:@10.10.1.1:1521:ORCL jdbc.username=tes

springjdbc的配置

實現了資料庫加密訪問,讀寫分離,事物,動態資料來源,druid applicationContext-jdbc.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://

Spring jdbc的配置檔案的編寫

<!-- dataSource 資料庫連線池--> <bean id="dataSource"  class="org.springframework.jdbc.datasource.DriverManagerDataSource">  <pro

SpringJDBC 宣告式事務管理(DataSourceTransactionManager)

參考 https://www.cnblogs.com/sonng/p/6587139.html 在一個業務的實現過程中,可能需要多條sql完成對資料庫的操作,比如賬戶登入,需要匹配使用者名稱和密碼,然後要增加積分,還要記錄登入的ip和時間,這可能需要三個sq

Spring Boot使用Spring-data-jpa訪問資料

一 點睛 只需要通過編寫一個繼承自JpaRepository的介面就能完成資料訪問。 二 實戰 1 新建依賴 <dependencies> <dependency> <groupId>org

mongo的遊標與資料一致性的取捨 spring-data-mongodb 使用原生aggregate語句 mongo的runCommand與集合操作函式的關係 spring-data-mongodb與mongo shell的對應關係 mongo的遊標與資料一致性的取捨

除了特殊註釋外,本文的測試結果均基於 spring-data-mongodb:1.10.6.RELEASE(spring-boot-starter:1.5.6.RELEASE),MongoDB 3.0.6   我們在學習了一門程式語言時,一定要明白語句底層的意義,比如 User user= n

Spring-data-JPA清空OneToMany關係Many一方的資料

/**父物件*/ class Parent { @OneToMany(mappedBy = "parent") List<Child> children; } /**子物件*/ class Child{ Parent parent; } 在

Spring系列學習之Spring Data JDBC資料訪問拓展

英文原文:https://spring.io/projects/spring-data-jdbc-ext 目錄 概述 特性 Core Oracle 快速開始 學習 文件 示例 注意:該專案不再積極開發,將於今年晚些時候束之高閣。 概述 Spring

Spring系列學習之Spring Data JDBC資料訪問

英文原文:https://spring.io/projects/spring-data-jdbc 目錄 概述 Aggregate Root聚合根 特性 快速開始 學習 文件 概述 Spring Data JDBC是更大的Spring Data系列的一部分,可以

spring框架總結(04)----介紹的是SpringJDBC模板

aos 不用 get interface comm use clas table oid 1.1 Jdbc模板概述 它是spring框架中提供的一個對象,是對原始Jdbc API對象的簡單封裝。spring框架為我們提供了很多的操作模板類,入下圖所示: 我們今天的

ASP.NET C#訪問資料庫用三種方式顯示資料

第一種方式:使用DataReader從資料庫中每次提取一條資料,用迴圈遍歷表                下面是我寫的一個例子:  &nbs

spring boot靜態資源訪問配置(訪問專案資料夾外的檔案)

很多類似的博文,但是實際配置後發現是有問題的。下面是完整的yml靜態資源訪問配置,在spring:下新增 mvc: static-path-pattern: /** #這個配置是預設配置 http:

朱有鵬C語言高階---4.9.2--單鏈表--訪問單鏈表各個節點的資料(1)

朱有鵬C語言高階---4.9.2--單鏈表--訪問單鏈表中各個節點的資料(1) 朱有鵬C語言高階---4.9.3--單鏈表--將建立節點的程式碼封裝成一個函式(2)   構建一個簡單的單鏈表 目標:構建一個連結串列,然後將一些資料(譬如1,2,3三個數字)儲存在連結串列中,

Spring訪問mysql出現遠端拒絕訪問問題解決?

MySql-Server 出於安全方面考慮預設只允許本機(localhost, 127.0.0.1)來連線訪問. !!!所以必須給root修改可以遠端訪問的許可權          1.在連線伺服器後,操作mysql系統資料庫    

SSM框架下,springservice和dao層的關係

【部分轉載】 1、java web 中dao 層和service層都使用介面,是否是為使用介面而使用介面? 一個dao或者一個service都是一個介面,然後再一個類去實現,為什麼不直接使用一個類呢?在入門級(單表)的SSM+maven程式碼裡面,我們甚至可以看到dao和service的介面

Spring Boot簡明教程之資料訪問(三):MyBatis

Spring Boot簡明教程之資料訪問(三):MyBatis 文章目錄 Spring Boot簡明教程之資料訪問(三):MyBatis MyBatis簡介 使用註解進行資料訪問 專案建立 專案目錄

Spring Boot簡明教程之資料訪問(二):JPA(超詳細)

Spring Boot簡明教程之資料訪問(二):JPA(超詳細) 文章目錄 Spring Boot簡明教程之資料訪問(二):JPA(超詳細) 建立專案 Spring Data簡介 JPA簡介 Spring Data 與JP