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

SpringBoot中使用JdbcTemplate訪問Oracle數(shù)據(jù)庫的案例詳解

 更新時間:2023年10月28日 10:35:19   作者:Miaow.Y.Hu  
JdbcTemplate是Spring框架中的一個核心類,用于簡化Java應(yīng)用程序與關(guān)系型數(shù)據(jù)庫的交互操作,本文給大家介紹SpringBoot中使用JdbcTemplate訪問Oracle數(shù)據(jù)庫的方法,感興趣的朋友跟隨小編一起看看吧

Oracle相信大家都不陌生吧,一個大型的數(shù)據(jù)庫,至于數(shù)據(jù)庫,我相信各位都比較熟悉了,一個軟件系統(tǒng),不論是我們常做的App、小程序、還是傳統(tǒng)的web站點,我們都有用戶的信息,相關(guān)業(yè)務(wù)的數(shù)據(jù),通常都會存儲在相關(guān)數(shù)據(jù)庫中,比如:MySQL,Oracle,SQL server 等等。

在你看到這篇文章的時候,我相信你對Spring Boot已經(jīng)有足夠的了解了,我在這篇文檔中將會采用Oracle數(shù)據(jù)庫進行數(shù)據(jù)存儲,PS:Oracle數(shù)據(jù)庫和MySQL有語法差別,雖然總體是一樣的,但是還是存在不一樣的語法。

接下來我們正式開始:

JdbcTemplate

JdbcTemplate是Spring框架中的一個核心類,用于簡化Java應(yīng)用程序與關(guān)系型數(shù)據(jù)庫的交互操作。它提供了一種簡單而靈活的方式來執(zhí)行SQL查詢、更新和存儲過程調(diào)用等數(shù)據(jù)庫操作。

JdbcTemplate封裝了一些常見的數(shù)據(jù)庫操作,如查詢單行或多行數(shù)據(jù)、插入、更新和刪除數(shù)據(jù)等。它通過使用JDBC(Java Database Connectivity)來與數(shù)據(jù)庫進行通信,并提供了一些方便的方法來處理結(jié)果集、處理異常以及執(zhí)行事務(wù)操作。

使用JdbcTemplate可以減少編寫重復的JDBC代碼的工作量,提高開發(fā)效率。它還提供了一些高級功能,如命名參數(shù)、批處理操作和查詢結(jié)果的映射等,使得數(shù)據(jù)庫操作更加方便和易于維護。

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

在此,我說明一下,由于今年我寫這篇文章的時候,發(fā)現(xiàn)Oracle11早已停止更新,Oracle 21的又是官網(wǎng)比較新的,故而我采用了Oracle 19c,如果你自己用的Oracle還是比較舊的版本, 請改為你所對應(yīng)的版本,不同的版本,會有相應(yīng)的差別:

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
<!--導入jdbc依賴-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
		<dependency>
			<groupId>com.oracle.ojdbc</groupId>
			<artifactId>ojdbc8</artifactId>
			<version>19.3.0.0</version>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

接下來,在我們Spring Boot創(chuàng)建的src/main/resources/application.properties添加數(shù)據(jù)源信息。

# Mysql的配置
#spring.datasource.url=jdbc:mysql://localhost:3306/test
#spring.datasource.username=root
#spring.datasource.password=123456
#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# Oracle的配置
spring.datasource.url=jdbc:oracle:thin:@localhost:1521/orcl
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver

PS: 在Spring Boot 2.x中默認采用MySQL 8的驅(qū)動,故而上邊加了cj

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

Spring 的JdbcTemplate是自動配置的,我們可以使用@Autowried 或者構(gòu)造函數(shù),或者set方法來注入到我們想要的bean中使用。

我們在Oracle 中創(chuàng)建的數(shù)據(jù)庫實際上就是我們創(chuàng)建的相關(guān)用戶,我們利用我們創(chuàng)建的用戶的賬號和密碼進行登錄,然后再用戶下創(chuàng)建表的。

以下是我創(chuàng)建了root用戶后,然后利用root用戶的賬號密碼進行登錄創(chuàng)建的表的SQL語句

CREATE TABLE useradd (
  name varchar2 (100) NOT NULL,
  age integer NOT NULL
)

接下來,我們根據(jù)數(shù)據(jù)庫中創(chuàng)建的表然后創(chuàng)建實體對象:

public class User {
    private String name;
    private Integer age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public User(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
    public User() {
    }
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        return Objects.equals(name, user.name) && Objects.equals(age, user.age);
    }
    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

創(chuàng)建相關(guān)接口

public interface UserService {
    /**
     * 新增一個用戶
     *
     * @param name
     * @param age
     */
    int create(String name, Integer age);
    /**
     * 根據(jù)name查詢用戶
     *
     * @param name
     * @return
     */
    List<User> getByName(String name);
    /**
     * 根據(jù)name刪除用戶
     *
     * @param name
     */
    int deleteByName(String name);
    /**
     * 獲取用戶總量
     */
    int getAllUsers();
    /**
     * 刪除所有用戶
     */
    int deleteAllUsers();
}

之后,我們通過jdbcTemplate實現(xiàn)接口中的數(shù)據(jù)訪問操作:

@Service
public class UserServiceImpl implements UserService {
    private JdbcTemplate jdbcTemplate;
    UserServiceImpl(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
    @Override
    public int create(String name, Integer age) {
        return jdbcTemplate.update("insert into USERADD(NAME, AGE) values(?, ?)", name, age);
    }
    @Override
    public List<User> getByName(String name) {
        List<User> users = jdbcTemplate.query("select NAME, AGE from USERADD where NAME = ?", (resultSet, i) -> {
            User user = new User();
            user.setName(resultSet.getString("NAME"));
            user.setAge(resultSet.getInt("AGE"));
            return user;
        }, name);
        return users;
    }
    @Override
    public int deleteByName(String name) {
        return jdbcTemplate.update("delete from USERADD where NAME = ?", name);
    }
    @Override
    public int getAllUsers() {
        return jdbcTemplate.queryForObject("select count(1) from USERADD", Integer.class);
    }
    @Override
    public int deleteAllUsers() {
        return jdbcTemplate.update("delete from USERADD");
    }
}

然后我們采用Spring Boot的單元測試創(chuàng)建一個測試用例,通過創(chuàng)建,刪除,以及查詢來看我們是否正確的對數(shù)據(jù)庫進行操作。

@RunWith(SpringRunner.class)
@SpringBootTest
public class Chapter31ApplicationTests {
    @Autowired
    private UserService userSerivce;
    @Before
    public void setUp() {
        // 準備,清空user表
        userSerivce.deleteAllUsers();
    }
    @Test
    public void test() throws Exception {
        // 插入5個用戶
        userSerivce.create("miaow", 10);
        userSerivce.create("jjkeo", 11);
        userSerivce.create("cfase", 30);
        userSerivce.create("okeda", 21);
        userSerivce.create("joke", 17);
        // 查詢名為Oscar的用戶,判斷年齡是否匹配
        List<User> userList = userSerivce.getByName("joke");
        Assert.assertEquals(17, userList.get(0).getAge().intValue());
        // 查數(shù)據(jù)庫,應(yīng)該有5個用戶
        Assert.assertEquals(5, userSerivce.getAllUsers());
        // 刪除兩個用戶
        userSerivce.deleteByName("jjkeo");
        userSerivce.deleteByName("cfase");
        // 查數(shù)據(jù)庫,應(yīng)該有5個用戶
        Assert.assertEquals(3, userSerivce.getAllUsers());
    }
}

在這里插入圖片描述

我們發(fā)現(xiàn)成功了,通過上面這個簡單的例子,我們可以看到在Spring Boot下訪問數(shù)據(jù)庫的配置依然秉承了框架的初衷:簡單。

我們只需要在pom.xml中加入數(shù)據(jù)庫依賴,再到application.properties中配置連接信息,不需要像Spring應(yīng)用中創(chuàng)建JdbcTemplate的Bean,就可以直接在自己的對象中注入使用。

到此這篇關(guān)于SpringBoot中使用JdbcTemplate訪問Oracle數(shù)據(jù)庫的案例詳解的文章就介紹到這了,更多相關(guān)SpringBoot JdbcTemplate訪問Oracle數(shù)據(jù)庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 你知道怎么用Spring的三級緩存解決循環(huán)依賴嗎

    你知道怎么用Spring的三級緩存解決循環(huán)依賴嗎

    這篇文章主要為大家詳細介紹了Spring的三級緩存解決循環(huán)依賴,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • maven一行命令引入第三方包打包的實現(xiàn)

    maven一行命令引入第三方包打包的實現(xiàn)

    在項目開發(fā)過程中,難免會用到第三方j(luò)ar的時候,本文主要介紹了maven一行命令引入第三方包打包的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • SpringBoot調(diào)用第三方WebService接口的操作技巧(.wsdl與.asmx類型)

    SpringBoot調(diào)用第三方WebService接口的操作技巧(.wsdl與.asmx類型)

    這篇文章主要介紹了SpringBoot調(diào)第三方WebService接口的操作代碼(.wsdl與.asmx類型 ),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • Java使用異或運算實現(xiàn)簡單的加密解密算法實例代碼

    Java使用異或運算實現(xiàn)簡單的加密解密算法實例代碼

    這篇文章主要介紹了Java使用異或運算實現(xiàn)簡單的加密解密算法實例代碼,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Java網(wǎng)絡(luò)編程基礎(chǔ)篇之單向通信

    Java網(wǎng)絡(luò)編程基礎(chǔ)篇之單向通信

    這篇文章主要介紹了Java網(wǎng)絡(luò)編程里通過套接字實現(xiàn)單向通信的方法及相關(guān)實例,屬于網(wǎng)絡(luò)編程入門程序,雖然簡單,但具有一定參考價值,需要的朋友可以參考下。
    2017-09-09
  • Spring Security保護用戶密碼常用方法詳解

    Spring Security保護用戶密碼常用方法詳解

    這篇文章主要介紹了Spring Security保護用戶密碼常用方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • Java IO中字節(jié)流復制圖片實現(xiàn)代碼

    Java IO中字節(jié)流復制圖片實現(xiàn)代碼

    這篇文章主要介紹了Java IO中字節(jié)流復制圖片實現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • SpringBoot整合Mail發(fā)送郵件功能

    SpringBoot整合Mail發(fā)送郵件功能

    我們在網(wǎng)站上注冊賬號的時候一般需要獲取驗證碼,而這個驗證碼一般發(fā)送在你的手機號上還有的是發(fā)送在你的郵箱中,注冊,賬號密碼…都需要用到驗證,今天就演示一下如何用SpringBoot整合Mail發(fā)送郵箱
    2021-11-11
  • MybatisPlus如何處理Mysql的json類型

    MybatisPlus如何處理Mysql的json類型

    這篇文章主要介紹了MybatisPlus如何處理Mysql的json類型,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Java如何實現(xiàn)數(shù)字逆序

    Java如何實現(xiàn)數(shù)字逆序

    這篇文章主要介紹了Java如何實現(xiàn)數(shù)字逆序問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04

最新評論

泗洪县| 沈丘县| 德州市| 连州市| 东兴市| 玉山县| 乌海市| 石嘴山市| 定州市| 彭阳县| 溆浦县| 通河县| 临西县| 井研县| 绥棱县| 洱源县| 白山市| 泸州市| 穆棱市| 宜州市| 唐海县| 绩溪县| 攀枝花市| 辉南县| 沾益县| 闸北区| 淄博市| 梓潼县| 白沙| 大田县| 临夏县| 苗栗县| 运城市| 长海县| 蚌埠市| 潍坊市| 商河县| 雅安市| 青川县| 会泽县| 府谷县|