Spring?Boot?中的?Native?SQL基本概念及使用方法
在 Spring Boot 中,我們通常使用 ORM 框架(例如 Hibernate 或 MyBatis)來操作數(shù)據(jù)庫。但是,有時候我們需要執(zhí)行一些自定義的 SQL 查詢或更新語句,這時候就需要使用 Spring Boot 中的 Native SQL。
在本文中,我們將介紹 Spring Boot 中的 Native SQL 是什么,以及如何使用它來執(zhí)行自定義的 SQL 查詢或更新語句。
什么是 Native SQL
Native SQL 是指直接使用 SQL 語句來操作數(shù)據(jù)庫,而不是使用 ORM 框架提供的 API。使用 Native SQL 可以提高查詢效率,并且可以執(zhí)行一些復(fù)雜的 SQL 查詢或更新語句。
在 Spring Boot 中,我們可以使用 JdbcTemplate 或 NamedParameterJdbcTemplate 類來執(zhí)行 Native SQL。
使用 JdbcTemplate 執(zhí)行 Native SQL
JdbcTemplate 是 Spring Boot 提供的一個用于執(zhí)行 SQL 語句的工具類。它可以執(zhí)行任何 SQL 語句,并且支持自定義的 RowMapper 來將查詢結(jié)果映射到 Java 對象。
步驟一:添加依賴
首先,你需要在你的項目中添加 Spring Boot 的 JdbcTemplate 依賴。在 Maven 中,你可以添加以下依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency>
步驟二:創(chuàng)建 JdbcTemplate 實例
在你的代碼中,你可以使用 Spring Boot 的自動配置功能來創(chuàng)建 JdbcTemplate 實例。例如:
@Autowired JdbcTemplate jdbcTemplate;
在上面的代碼中,我們使用 @Autowired 注解來注入 JdbcTemplate 實例。
步驟三:執(zhí)行 SQL 語句
使用 JdbcTemplate 執(zhí)行 SQL 語句非常簡單。你可以使用 JdbcTemplate 的 query() 方法來執(zhí)行查詢語句,使用 update() 方法來執(zhí)行更新語句。例如:
// 查詢語句 List<MyObject> results = jdbcTemplate.query( "SELECT * FROM my_table WHERE id = ?", new Object[] { 123 }, new RowMapper<MyObject>() { public MyObject mapRow(ResultSet rs, int rowNum) throws SQLException { MyObject obj = new MyObject(); obj.setId(rs.getInt("id")); obj.setName(rs.getString("name")); return obj; } }); // 更新語句 int rowsUpdated = jdbcTemplate.update( "UPDATE my_table SET name = ? WHERE id = ?", "New Name", 123);
在上面的代碼中,我們使用 JdbcTemplate 執(zhí)行了一個查詢語句和一個更新語句。在查詢語句中,我們使用了一個自定義的 RowMapper 將查詢結(jié)果映射到了一個自定義的 Java 對象中。
使用 NamedParameterJdbcTemplate 執(zhí)行 Native SQL
NamedParameterJdbcTemplate 是 JdbcTemplate 的一個擴展,它支持使用命名參數(shù)來代替占位符。使用命名參數(shù)可以使 SQL 語句更加清晰易讀,并且可以避免參數(shù)位置不匹配的問題。
步驟一:添加依賴
首先,你需要在你的項目中添加 Spring Boot 的 NamedParameterJdbcTemplate 依賴。在 Maven 中,你可以添加以下依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency>
步驟二:創(chuàng)建 NamedParameterJdbcTemplate 實例
在你的代碼中,你可以使用 Spring Boot 的自動配置功能來創(chuàng)建 NamedParameterJdbcTemplate 實例。例如:
@Autowired NamedParameterJdbcTemplate jdbcTemplate;
在上面的代碼中,我們使用 @Autowired 注解來注入 NamedParameterJdbcTemplate 實例。
步驟三:執(zhí)行 SQL 語句
使用 NamedParameterJdbcTemplate 執(zhí)行 SQL 語句也非常簡單。你可以使用 NamedParameterJdbcTemplate 的 query() 方法來執(zhí)行查詢語句,使用 update() 方法來執(zhí)行更新語句。例如:
// 查詢語句 Map<String, Object> params = new HashMap<String, Object>(); params.put("id", 123); List<MyObject> results = jdbcTemplate.query( "SELECT * FROM my_table WHERE id = :id", params, new RowMapper<MyObject>() { public MyObject mapRow(ResultSet rs, int rowNum) throws SQLException { MyObject obj = new MyObject(); obj.setId(rs.getInt("id")); obj.setName(rs.getString("name")); return obj; } }); // 更新語句 Map<String, Object> params = new HashMap<String, Object>(); params.put("name", "New Name"); params.put("id", 123); int rowsUpdated = jdbcTemplate.update( "UPDATE my_table SET name = :name WHERE id = :id", params);
在上面的代碼中,我們使用 NamedParameterJdbcTemplate 執(zhí)行了一個查詢語句和一個更新語句。在查詢語句中,我們使用了命名參數(shù)來代替占位符,使 SQL 語句更加清晰易讀。在更新語句中,我們同樣使用了命名參數(shù)來代替占位符。
總結(jié)
在本文中,我們介紹了 Spring Boot 中的 Native SQL,以及如何使用 JdbcTemplate 和 NamedParameterJdbcTemplate 來執(zhí)行自定義的 SQL 查詢或更新語句。使用 Native SQL 可以提高查詢效率,并且可以執(zhí)行一些復(fù)雜的 SQL 查詢或更新語句。同時,使用命名參數(shù)可以使 SQL 語句更加清晰易讀,并且可以避免參數(shù)位置不匹配的問題。
到此這篇關(guān)于Spring Boot 中的 Native SQL基本概念及使用方法的文章就介紹到這了,更多相關(guān)Spring Boot Native SQL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA?一直scanning?files?to?index的四種完美解決方法(VIP典藏版)
這篇文章主要介紹了IDEA?一直scanning?files?to?index的四種完美解決方法(VIP典藏版),推薦第四種方法,第四種方法摸索研究后得出,親測好用,需要的朋友參考下吧2023-10-10使用springboot時,解決@Scheduled定時器遇到的問題
這篇文章主要介紹了使用springboot時,解決@Scheduled定時器遇到的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11利用Java如何實現(xiàn)將二維數(shù)組轉(zhuǎn)化為鏈式儲存
鏈式結(jié)構(gòu)不要求邏輯上相鄰的節(jié)點在物理位置上也相鄰,節(jié)點間的邏輯關(guān)系是由附加的指針字段表示的,通常借助于程序設(shè)計中的指針結(jié)構(gòu)來實現(xiàn),這篇文章主要給大家介紹了關(guān)于利用Java如何實現(xiàn)將二維數(shù)組轉(zhuǎn)化為鏈式儲存的相關(guān)資料,需要的朋友可以參考下2021-12-12簡單的一次springMVC路由跳轉(zhuǎn)實現(xiàn)
本文主要介紹了springMVC路由跳轉(zhuǎn)實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04Spring security如何重寫Filter實現(xiàn)json登錄
這篇文章主要介紹了Spring security 如何重寫Filter實現(xiàn)json登錄,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09