Spring?Boot?中的?Native?SQL基本概念及使用方法
在 Spring Boot 中,我們通常使用 ORM 框架(例如 Hibernate 或 MyBatis)來(lái)操作數(shù)據(jù)庫(kù)。但是,有時(shí)候我們需要執(zhí)行一些自定義的 SQL 查詢或更新語(yǔ)句,這時(shí)候就需要使用 Spring Boot 中的 Native SQL。
在本文中,我們將介紹 Spring Boot 中的 Native SQL 是什么,以及如何使用它來(lái)執(zhí)行自定義的 SQL 查詢或更新語(yǔ)句。
什么是 Native SQL
Native SQL 是指直接使用 SQL 語(yǔ)句來(lái)操作數(shù)據(jù)庫(kù),而不是使用 ORM 框架提供的 API。使用 Native SQL 可以提高查詢效率,并且可以執(zhí)行一些復(fù)雜的 SQL 查詢或更新語(yǔ)句。
在 Spring Boot 中,我們可以使用 JdbcTemplate 或 NamedParameterJdbcTemplate 類來(lái)執(zhí)行 Native SQL。
使用 JdbcTemplate 執(zhí)行 Native SQL
JdbcTemplate 是 Spring Boot 提供的一個(gè)用于執(zhí)行 SQL 語(yǔ)句的工具類。它可以執(zhí)行任何 SQL 語(yǔ)句,并且支持自定義的 RowMapper 來(lái)將查詢結(jié)果映射到 Java 對(duì)象。
步驟一:添加依賴
首先,你需要在你的項(xiàng)目中添加 Spring Boot 的 JdbcTemplate 依賴。在 Maven 中,你可以添加以下依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>步驟二:創(chuàng)建 JdbcTemplate 實(shí)例
在你的代碼中,你可以使用 Spring Boot 的自動(dòng)配置功能來(lái)創(chuàng)建 JdbcTemplate 實(shí)例。例如:
@Autowired JdbcTemplate jdbcTemplate;
在上面的代碼中,我們使用 @Autowired 注解來(lái)注入 JdbcTemplate 實(shí)例。
步驟三:執(zhí)行 SQL 語(yǔ)句
使用 JdbcTemplate 執(zhí)行 SQL 語(yǔ)句非常簡(jiǎn)單。你可以使用 JdbcTemplate 的 query() 方法來(lái)執(zhí)行查詢語(yǔ)句,使用 update() 方法來(lái)執(zhí)行更新語(yǔ)句。例如:
// 查詢語(yǔ)句
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;
}
});
// 更新語(yǔ)句
int rowsUpdated = jdbcTemplate.update(
"UPDATE my_table SET name = ? WHERE id = ?",
"New Name", 123);在上面的代碼中,我們使用 JdbcTemplate 執(zhí)行了一個(gè)查詢語(yǔ)句和一個(gè)更新語(yǔ)句。在查詢語(yǔ)句中,我們使用了一個(gè)自定義的 RowMapper 將查詢結(jié)果映射到了一個(gè)自定義的 Java 對(duì)象中。
使用 NamedParameterJdbcTemplate 執(zhí)行 Native SQL
NamedParameterJdbcTemplate 是 JdbcTemplate 的一個(gè)擴(kuò)展,它支持使用命名參數(shù)來(lái)代替占位符。使用命名參數(shù)可以使 SQL 語(yǔ)句更加清晰易讀,并且可以避免參數(shù)位置不匹配的問(wèn)題。
步驟一:添加依賴
首先,你需要在你的項(xiàng)目中添加 Spring Boot 的 NamedParameterJdbcTemplate 依賴。在 Maven 中,你可以添加以下依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>步驟二:創(chuàng)建 NamedParameterJdbcTemplate 實(shí)例
在你的代碼中,你可以使用 Spring Boot 的自動(dòng)配置功能來(lái)創(chuàng)建 NamedParameterJdbcTemplate 實(shí)例。例如:
@Autowired NamedParameterJdbcTemplate jdbcTemplate;
在上面的代碼中,我們使用 @Autowired 注解來(lái)注入 NamedParameterJdbcTemplate 實(shí)例。
步驟三:執(zhí)行 SQL 語(yǔ)句
使用 NamedParameterJdbcTemplate 執(zhí)行 SQL 語(yǔ)句也非常簡(jiǎn)單。你可以使用 NamedParameterJdbcTemplate 的 query() 方法來(lái)執(zhí)行查詢語(yǔ)句,使用 update() 方法來(lái)執(zhí)行更新語(yǔ)句。例如:
// 查詢語(yǔ)句
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;
}
});
// 更新語(yǔ)句
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í)行了一個(gè)查詢語(yǔ)句和一個(gè)更新語(yǔ)句。在查詢語(yǔ)句中,我們使用了命名參數(shù)來(lái)代替占位符,使 SQL 語(yǔ)句更加清晰易讀。在更新語(yǔ)句中,我們同樣使用了命名參數(shù)來(lái)代替占位符。
總結(jié)
在本文中,我們介紹了 Spring Boot 中的 Native SQL,以及如何使用 JdbcTemplate 和 NamedParameterJdbcTemplate 來(lái)執(zhí)行自定義的 SQL 查詢或更新語(yǔ)句。使用 Native SQL 可以提高查詢效率,并且可以執(zhí)行一些復(fù)雜的 SQL 查詢或更新語(yǔ)句。同時(shí),使用命名參數(shù)可以使 SQL 語(yǔ)句更加清晰易讀,并且可以避免參數(shù)位置不匹配的問(wèn)題。
到此這篇關(guān)于Spring Boot 中的 Native SQL基本概念及使用方法的文章就介紹到這了,更多相關(guān)Spring Boot Native SQL內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Spring?Boot?中的?Native?SQL基本概念及使用方法
- GraalVM和Spring Native嘗鮮一步步讓Springboot啟動(dòng)飛起來(lái)66ms完成啟動(dòng)
- 在spring?boot3中使用native?image的最新方法
- spring boot中nativeQuery的用法
- Spring Native項(xiàng)目實(shí)戰(zhàn)(體驗(yàn)79毫秒啟動(dòng)springboot應(yīng)用)
- 用Spring Native將SpringBoot程序轉(zhuǎn)換為GraalVM
- SQL Server Native Client下載 SQL Server Native Client安裝方法
相關(guān)文章
解決Maven項(xiàng)目pom.xml文件Ignored的問(wèn)題
在Maven項(xiàng)目中,若不慎刪除了.iml文件,可能會(huì)導(dǎo)致pom.xml文件顯示為Ignored狀態(tài),影響項(xiàng)目構(gòu)建,解決方法是通過(guò)IDEA的設(shè)置取消Ignored Files中對(duì)應(yīng)文件的忽略,再刷新Maven項(xiàng)目即可恢復(fù),此操作可有效解決pom.xml文件被誤忽略的問(wèn)題,保證項(xiàng)目正常構(gòu)建和運(yùn)行2024-09-09
IDEA?一直scanning?files?to?index的四種完美解決方法(VIP典藏版)
這篇文章主要介紹了IDEA?一直scanning?files?to?index的四種完美解決方法(VIP典藏版),推薦第四種方法,第四種方法摸索研究后得出,親測(cè)好用,需要的朋友參考下吧2023-10-10
使用springboot時(shí),解決@Scheduled定時(shí)器遇到的問(wèn)題
這篇文章主要介紹了使用springboot時(shí),解決@Scheduled定時(shí)器遇到的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
利用Java如何實(shí)現(xiàn)將二維數(shù)組轉(zhuǎn)化為鏈?zhǔn)絻?chǔ)存
鏈?zhǔn)浇Y(jié)構(gòu)不要求邏輯上相鄰的節(jié)點(diǎn)在物理位置上也相鄰,節(jié)點(diǎn)間的邏輯關(guān)系是由附加的指針字段表示的,通常借助于程序設(shè)計(jì)中的指針結(jié)構(gòu)來(lái)實(shí)現(xiàn),這篇文章主要給大家介紹了關(guān)于利用Java如何實(shí)現(xiàn)將二維數(shù)組轉(zhuǎn)化為鏈?zhǔn)絻?chǔ)存的相關(guān)資料,需要的朋友可以參考下2021-12-12
簡(jiǎn)單的一次springMVC路由跳轉(zhuǎn)實(shí)現(xiàn)
本文主要介紹了springMVC路由跳轉(zhuǎn)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
Spring security如何重寫Filter實(shí)現(xiàn)json登錄
這篇文章主要介紹了Spring security 如何重寫Filter實(shí)現(xiàn)json登錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09

