日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

Spring NamedParameterJdbcTemplate 详解

發(fā)布時(shí)間:2025/5/22 javascript 204 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring NamedParameterJdbcTemplate 详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)自:?https://zmx.iteye.com/blog/373736

NamedParameterJdbcTemplate類(lèi)是基于JdbcTemplate類(lèi),并對(duì)它進(jìn)行了封裝從而支持命名參數(shù)特性。

NamedParameterJdbcTemplate主要提供以下三類(lèi)方法:execute方法、query及queryForXXX方法、update及batchUpdate方法。

首先讓我們看個(gè)例子吧:

1 @Test 2 public void testNamedParameterJdbcTemplate1() { 3 NamedParameterJdbcTemplate namedParameterJdbcTemplate = null; 4 //namedParameterJdbcTemplate = 5 // new NamedParameterJdbcTemplate(dataSource); 6 namedParameterJdbcTemplate = 7 new NamedParameterJdbcTemplate(jdbcTemplate); 8 String insertSql = "insert into test(name) values(:name)"; 9 String selectSql = "select * from test where name=:name"; 10 String deleteSql = "delete from test where name=:name"; 11 Map<String, Object> paramMap = new HashMap<String, Object>(); 12 paramMap.put("name", "name5"); 13 namedParameterJdbcTemplate.update(insertSql, paramMap); 14 final List<Integer> result = new ArrayList<Integer>(); 15 namedParameterJdbcTemplate.query(selectSql, paramMap, 16 new RowCallbackHandler() { 17 @Override 18 public void processRow(ResultSet rs) throws SQLException { 19 result.add(rs.getInt("id")); 20 } 21 }); 22 Assert.assertEquals(1, result.size()); 23 SqlParameterSource paramSource = new MapSqlParameterSource(paramMap); 24 namedParameterJdbcTemplate.update(deleteSql, paramSource); 25 }

?

接下來(lái)讓我們分析一下代碼吧:

1)NamedParameterJdbcTemplate初始化:可以使用DataSource或JdbcTemplate 對(duì)象作為構(gòu)造器參數(shù)初始化;

2)insert into test(name) values(:name):其中“:name”就是命名參數(shù);

3) update(insertSql, paramMap):其中paramMap是一個(gè)Map類(lèi)型,包含鍵為“name”,值為“name5”的鍵值對(duì),也就是為命名參數(shù)設(shè)值的數(shù)據(jù);

4)query(selectSql, paramMap, new RowCallbackHandler()……):類(lèi)似于JdbcTemplate中介紹的,唯一不同是需要傳入paramMap來(lái)為命名參數(shù)設(shè)值;

5)update(deleteSql, paramSource):類(lèi)似于“update(insertSql, paramMap)”,但使用SqlParameterSource參數(shù)來(lái)為命名參數(shù)設(shè)值,此處使用MapSqlParameterSource實(shí)現(xiàn),其就是簡(jiǎn)單封裝Java.util.Map。

?

?

NamedParameterJdbcTemplate類(lèi)為命名參數(shù)設(shè)值有兩種方式:java.util.Map和SqlParameterSource:

1)java.util.Map:使用Map鍵數(shù)據(jù)來(lái)對(duì)于命名參數(shù),而Map值數(shù)據(jù)用于設(shè)值;

2)SqlParameterSource:可以使用SqlParameterSource實(shí)現(xiàn)作為來(lái)實(shí)現(xiàn)為命名參數(shù)設(shè)值,默認(rèn)有MapSqlParameterSource和BeanPropertySqlParameterSource實(shí)現(xiàn);MapSqlParameterSource實(shí)現(xiàn)非常簡(jiǎn)單,只是封裝了java.util.Map;而B(niǎo)eanPropertySqlParameterSource封裝了一個(gè)JavaBean對(duì)象,通過(guò)JavaBean對(duì)象屬性來(lái)決定命名參數(shù)的值。

?

1 package cn.javass.spring.chapter7; 2 public class UserModel { 3 private int id; 4 private String myName; 5 //省略getter和setter 6 }

?

1 @Test 2 public void testNamedParameterJdbcTemplate2() { 3 NamedParameterJdbcTemplate namedParameterJdbcTemplate = null; 4 namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate); 5 UserModel model = new UserModel(); 6 model.setMyName("name5"); 7 String insertSql = "insert into test(name) values(:myName)"; 8 SqlParameterSource paramSource = new BeanPropertySqlParameterSource(model); 9 namedParameterJdbcTemplate.update(insertSql, paramSource); 10 }

?

可以看出BeanPropertySqlParameterSource使用能減少很多工作量,但命名參數(shù)必須和JavaBean屬性名稱(chēng)相對(duì)應(yīng)才可以。

轉(zhuǎn)載于:https://www.cnblogs.com/sharpest/p/5622884.html

總結(jié)

以上是生活随笔為你收集整理的Spring NamedParameterJdbcTemplate 详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。