最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot 與 Kotlin 使用JdbcTemplate連接MySQL數(shù)據(jù)庫的方法

 更新時間:2018年01月22日 10:51:56   作者:quanke  
本文介紹在Spring Boot基礎(chǔ)下配置數(shù)據(jù)源和通過 JdbcTemplate 編寫數(shù)據(jù)訪問的示例。感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧

之前介紹了一些Web層的例子,包括構(gòu)建RESTful API、使用Thymeleaf模板引擎渲染W(wǎng)eb視圖,但是這些內(nèi)容還不足以構(gòu)建一個動態(tài)的應(yīng)用。通常我們做App也好,做Web應(yīng)用也好,都需要內(nèi)容,而內(nèi)容通常存儲于各種類型的數(shù)據(jù)庫,服務(wù)端在接收到訪問請求之后需要訪問數(shù)據(jù)庫獲取并處理成展現(xiàn)給用戶使用的數(shù)據(jù)形式。

本文介紹在Spring Boot基礎(chǔ)下配置數(shù)據(jù)源和通過 JdbcTemplate 編寫數(shù)據(jù)訪問的示例。

數(shù)據(jù)源配置

在我們訪問數(shù)據(jù)庫的時候,需要先配置一個數(shù)據(jù)源,下面分別介紹一下幾種不同的數(shù)據(jù)庫配置方式。

首先,為了連接數(shù)據(jù)庫需要引入jdbc支持,在 build.gradle 中引入如下配置:

compile "org.springframework.boot:spring-boot-starter-jdbc:$spring_boot_version"

連接數(shù)據(jù)源

以MySQL數(shù)據(jù)庫為例,先引入MySQL連接的依賴包,在 build.gradle 中加入:

compile "mysql:mysql-connector-java:$mysql_version"

完整 build.gradle

group 'name.quanke.kotlin'
version '1.0-SNAPSHOT'
buildscript {
 ext.kotlin_version = '1.2.10'
 ext.spring_boot_version = '1.5.4.RELEASE'
 ext.springfox_swagger2_version = '2.7.0'
 ext.mysql_version = '5.1.21'
 repositories {
  mavenCentral()
 }
 dependencies {
  classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
  classpath("org.springframework.boot:spring-boot-gradle-plugin:$spring_boot_version")
//  Kotlin整合SpringBoot的默認(rèn)無參構(gòu)造函數(shù),默認(rèn)把所有的類設(shè)置open類插件
  classpath("org.jetbrains.kotlin:kotlin-noarg:$kotlin_version")
  classpath("org.jetbrains.kotlin:kotlin-allopen:$kotlin_version")
 }
}
apply plugin: 'kotlin'
apply plugin: "kotlin-spring" // See https://kotlinlang.org/docs/reference/compiler-plugins.html#kotlin-spring-compiler-plugin
apply plugin: 'org.springframework.boot'
jar {
 baseName = 'chapter11-6-1-service'
 version = '0.1.0'
}
repositories {
 mavenCentral()
}
dependencies {
 compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
 compile "org.springframework.boot:spring-boot-starter-web:$spring_boot_version"
 compile "org.springframework.boot:spring-boot-starter-jdbc:$spring_boot_version"
 compile "mysql:mysql-connector-java:$mysql_version"
 testCompile "org.springframework.boot:spring-boot-starter-test:$spring_boot_version"
 testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
}
compileKotlin {
 kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
 kotlinOptions.jvmTarget = "1.8"
}

在 src/main/resources/application.yml 中配置數(shù)據(jù)源信息

spring:
 datasource:
 url: jdbc:mysql://localhost:3306/test
 username: root
 password: 123456
 driver-class-name: com.mysql.jdbc.Driver

連接JNDI數(shù)據(jù)源

當(dāng)你將應(yīng)用部署于應(yīng)用服務(wù)器上的時候想讓數(shù)據(jù)源由應(yīng)用服務(wù)器管理,那么可以使用如下配置方式引入JNDI數(shù)據(jù)源。

如果對JNDI不是很了解的,請參考 https://baike.baidu.com/item/JNDI/3792442?fr=aladdin

spring.datasource.jndi-name=java:jboss/datasources/customers

使用JdbcTemplate操作數(shù)據(jù)庫

Spring的 JdbcTemplate 是自動配置的,你可以直接使用 @Autowired 來注入到你自己的bean中來使用。

舉例:我們在創(chuàng)建 User 表,包含屬性id,name、age,下面來編寫數(shù)據(jù)訪問對象和單元測試用例。

定義包含有插入、刪除、查詢的抽象接口UserService

interface UserService {
 /**
  * 獲取用戶總量
  */
 val allUsers: Int?
 /**
  * 新增一個用戶
  * @param name
  * @param age
  */
 fun create(name: String, password: String?)
 /**
  * 根據(jù)name刪除一個用戶高
  * @param name
  */
 fun deleteByName(name: String)
 /**
  * 刪除所有用戶
  */
 fun deleteAllUsers()
}

通過 JdbcTemplate 實現(xiàn) UserService 中定義的數(shù)據(jù)訪問操作

import org.springframework.beans.factory.annotation.Autowired
import org.springframework.jdbc.core.JdbcTemplate
import org.springframework.stereotype.Service
/**
 * Created by http://quanke.name on 2018/1/10.
 */
@Service
class UserServiceImpl : UserService {
 @Autowired
 private val jdbcTemplate: JdbcTemplate? = null
 override val allUsers: Int?
  get() = jdbcTemplate!!.queryForObject("select count(1) from USER", Int::class.java)
 override fun create(name: String, password: String?) {
  jdbcTemplate!!.update("insert into USER(USERNAME, PASSWORD) values(?, ?)", name, password)
 }
 override fun deleteByName(name: String) {
  jdbcTemplate!!.update("delete from USER where USERNAME = ?", name)
 }
 override fun deleteAllUsers() {
  jdbcTemplate!!.update("delete from USER")
 }
}

創(chuàng)建對UserService的單元測試用例,通過創(chuàng)建、刪除和查詢來驗證數(shù)據(jù)庫操作的正確性。

/**
 * Created by http://quanke.name on 2018/1/9.
 */
@RunWith(SpringRunner::class)
@SpringBootTest
class ApplicationTests {
 val log = LogFactory.getLog(ApplicationTests::class.java)!!
 @Autowired
 lateinit var userService: UserService
 @Test
 fun `jdbc test"`() {
  val username = "quanke"
  val password = "123456"
  // 插入5個用戶
  userService.create("$username a", "$password 1")
  userService.create("$username b", "$password 2")
  userService.create("$username c", "$password 3")
  userService.create("$username d", "$password 4")
  userService.create("$username e", "$password 5")
  log.info("總共用戶 ${userService.allUsers}")
  // 刪除兩個用戶
  userService.deleteByName("$username a")
  userService.deleteByName("$username b")
  log.info("總共用戶 ${userService.allUsers}")
 }
}

上面介紹的JdbcTemplate只是最基本的幾個操作,更多其他數(shù)據(jù)訪問操作的使用請參考:JdbcTemplate API

通過上面這個簡單的例子,我們可以看到在Spring Boot下訪問數(shù)據(jù)庫的配置依然秉承了框架的初衷:簡單。我們只需要在pom.xml中加入數(shù)據(jù)庫依賴,再到application.yml中配置連接信息,不需要像Spring應(yīng)用中創(chuàng)建JdbcTemplate的Bean,就可以直接在自己的對象中注入使用。

總結(jié)

以上所述是小編給大家介紹的Spring Boot 與 Kotlin 使用JdbcTemplate連接MySQL數(shù)據(jù)庫的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • SpringBoot系列教程之防重放與操作冪等

    SpringBoot系列教程之防重放與操作冪等

    同一條數(shù)據(jù)被用戶點擊了多次,導(dǎo)致數(shù)據(jù)冗余,需要防止弱網(wǎng)絡(luò)等環(huán)境下的重復(fù)點擊,下面這篇文章主要給大家介紹了關(guān)于SpringBoot系列教程之防重放與操作冪等的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • 帶你了解Java數(shù)據(jù)結(jié)構(gòu)和算法之無權(quán)無向圖

    帶你了解Java數(shù)據(jù)結(jié)構(gòu)和算法之無權(quán)無向圖

    這篇文章主要為大家介紹了Java數(shù)據(jù)結(jié)構(gòu)和算法之無權(quán)無向圖?,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Java如何使用Set接口存儲沒有重復(fù)元素的數(shù)組

    Java如何使用Set接口存儲沒有重復(fù)元素的數(shù)組

    Set是一個繼承于Collection的接口,即Set也是集合中的一種。Set是沒有重復(fù)元素的集合,本篇我們就用它存儲一個沒有重復(fù)元素的數(shù)組
    2022-04-04
  • JPA中@ElementCollection使用示例詳解

    JPA中@ElementCollection使用示例詳解

    在JPA中,@ElementCollection注解主要用于映射集合屬性,例如List、Set或數(shù)組等集合屬性,以及Map結(jié)構(gòu)的集合屬性,每個屬性值都有對應(yīng)的key映射,這篇文章主要介紹了JPA中@ElementCollection使用,需要的朋友可以參考下
    2023-11-11
  • java實現(xiàn)清理DNS Cache的方法

    java實現(xiàn)清理DNS Cache的方法

    這篇文章主要介紹了java實現(xiàn)清理DNS Cache的方法,分析了幾種常用的清理方法,并給出了反射清理的完整實例,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • IDEA配置Tomcat后,控制臺tomcat?catalina?log出現(xiàn)亂碼問題

    IDEA配置Tomcat后,控制臺tomcat?catalina?log出現(xiàn)亂碼問題

    本文介紹了如何通過設(shè)置Tomcat和IDEA的編碼格式來解決編碼問題,首先嘗試修改Tomcat的logging.properties文件中的編碼設(shè)置,如果未解決問題,則調(diào)整IDEA的編碼設(shè)置,通過修改vmoptions文件來全局設(shè)置IDEA的編碼格式,作者分享了個人成功解決問題的方法和步驟,供其他開發(fā)者參考
    2024-09-09
  • Spring?Cloud?Feign?使用對象參數(shù)的操作

    Spring?Cloud?Feign?使用對象參數(shù)的操作

    這篇文章主要介紹了Spring?Cloud?Feign?如何使用對象參數(shù)的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • Java類之間的關(guān)系圖_動力節(jié)點Java學(xué)院整理

    Java類之間的關(guān)系圖_動力節(jié)點Java學(xué)院整理

    在Java以及其他的面向?qū)ο笤O(shè)計模式中,類與類之間主要有6種關(guān)系,他們分別是:依賴、關(guān)聯(lián)、聚合、組合、繼承、實現(xiàn)。他們的耦合度依次增強(qiáng),有興趣的可以了解一下
    2017-08-08
  • Java實現(xiàn)LeetCode(1.兩數(shù)之和)

    Java實現(xiàn)LeetCode(1.兩數(shù)之和)

    這篇文章主要介紹了Java實現(xiàn)LeetCode(兩數(shù)之和),本文使用java采用多種發(fā)放實現(xiàn)了LeetCode的兩數(shù)之和題目,需要的朋友可以參考下
    2021-06-06
  • java多線程中執(zhí)行多個程序的實例分析

    java多線程中執(zhí)行多個程序的實例分析

    在本篇文章里小編給大家整理的是一篇關(guān)于java多線程中執(zhí)行多個程序的實例分析內(nèi)容,有需要的朋友們可以學(xué)習(xí)參考下。
    2021-02-02

最新評論

桂林市| 盐边县| 曲松县| 平邑县| 安乡县| 宁津县| 咸丰县| 年辖:市辖区| 平乡县| 五常市| 泽州县| 扎鲁特旗| 佳木斯市| 湖州市| 融水| 伊宁市| 托里县| 汨罗市| 怀宁县| 襄垣县| 昭通市| 山东省| 沁水县| 大悟县| 迁安市| 平舆县| 乌鲁木齐市| 武邑县| 黄石市| 布尔津县| 平利县| 全椒县| 刚察县| 库尔勒市| 西乌珠穆沁旗| 三河市| 临邑县| 师宗县| 沁源县| 伊金霍洛旗| 蒙山县|