Spring JdbcTemplate 簡單總結(jié)

最近新接觸一個(gè)小的項(xiàng)目中用到了Spring JdbcTemplate框架,用起來感覺和DBUTILS差不多谋旦,仿制可能以后需要用到,因此記錄一下甲捏。

概念

JdbcTemplate 類執(zhí)行 SQL 查詢芒粹、更新語句和存儲(chǔ)過程調(diào)用,執(zhí)行迭代結(jié)果集和提取返回參數(shù)值。它也捕獲 JDBC 異常并轉(zhuǎn)換它們到 org.springframework.dao 包中定義的通用類疙教、更多的信息葵诈、異常層次結(jié)構(gòu)理疙。

JdbcTemplate 類的實(shí)例是線程安全配置的贰锁。所以你可以配置 JdbcTemplate 的單個(gè)實(shí)例授嘀,然后將這個(gè)共享的引用安全地注入到多個(gè) DAOs 中芯肤。

使用 JdbcTemplate 類時(shí)常見的做法是在你的 Spring 配置文件中配置數(shù)據(jù)源盔几,然后共享數(shù)據(jù)源 bean 依賴注入到 DAO 類中,并在數(shù)據(jù)源的設(shè)值函數(shù)中創(chuàng)建了 JdbcTemplate芍阎。

執(zhí)行SQL 語句

在表中插入一行:

String SQL = "insert into Student (name, age) values (?, ?)";     
jdbcTemplateObject.update( SQL, name, age);
//jdbcTemplateObject.update( SQL, new Object[]{"Zara", 11} );

從表中刪除一行:

String SQL = "delete Student where id = ?";
jdbcTemplateObject.update( SQL, new Object[]{20} );

更新表中的一行:

String SQL = "update Student set name = ? where id = ?";
jdbcTemplateObject.update( SQL, new Object[]{"Zara", 10} );

查詢一個(gè)整數(shù)類型:

String SQL = "select count(*) from Student";
int rowCount = jdbcTemplateObject.queryForInt( SQL );

查詢一個(gè) long 類型:

String SQL = "select count(*) from Student";
long rowCount = jdbcTemplateObject.queryForLong( SQL );

一個(gè)使用綁定變量的簡單查詢:

String SQL = "select age from Student where id = ?";
int age = jdbcTemplateObject.queryForInt(SQL, new Object[]{10});

查詢字符串:

String SQL = "select name from Student where id = ?";
String name = jdbcTemplateObject.queryForObject(SQL, new Object[]{10}, String.class);

查詢并返回一個(gè)對(duì)象:

String SQL = "select * from Student where id = ?";
Student student = jdbcTemplateObject.queryForObject(SQL, 
                  new Object[]{10}, new StudentMapper());
public class StudentMapper implements RowMapper<Student> {
   public Student mapRow(ResultSet rs, int rowNum) throws SQLException {
      Student student = new Student();
      student.setID(rs.getInt("id"));
      student.setName(rs.getString("name"));
      student.setAge(rs.getInt("age"));
      return student;
   }
}

查詢并返回多個(gè)對(duì)象:

String SQL = "select * from Student";
List<Student> students = jdbcTemplateObject.query(SQL,
                         new StudentMapper());
public class StudentMapper implements RowMapper<Student> {
   public Student mapRow(ResultSet rs, int rowNum) throws SQLException {
      Student student = new Student();
      student.setID(rs.getInt("id"));
      student.setName(rs.getString("name"));
      student.setAge(rs.getInt("age"));
      return student;
   }
}

插入數(shù)據(jù),獲取自增組件的ID:

public int addStudent(final Student student){
    final String sql="insert into t_student(name,sex) values(?,?)";
    //創(chuàng)建一個(gè)主鍵持有者
    KeyHolder keyHolder=new GeneratedKeyHolder();
    jdbcTemplateObject.update(new PreparedStatementCreator(){
        public PreparedStatement createPreparedStatement(Conection con) throws SQLException{
            PreparedStatement preState=con.prepareStatement(sql);
            preState.setString(1,student.getName());
            preState.setString(2,student.getSex());
            return preState;
        }
    },keyHolder);
    //從主鍵持有者中獲得主鍵值
    return keyHolder.getKey().intValue();
}

批量插入數(shù)據(jù):

 public void testBatchUpdate() {  
        String sql = "INSERT INTO employees(last_name, email, dept_id) VALUES(?,?,?)";  
      
        List<Object[]> batchArgs = new ArrayList<>();  
        batchArgs.add(new Object[]{"AA", "aa@atguigu.com", 1});  
        batchArgs.add(new Object[]{"BB", "bb@atguigu.com", 2});  
        batchArgs.add(new Object[]{"CC", "cc@atguigu.com", 3});  
        batchArgs.add(new Object[]{"DD", "dd@atguigu.com", 3});  
        batchArgs.add(new Object[]{"EE", "ee@atguigu.com", 2});  
          
        jdbcTemplate.batchUpdate(sql, batchArgs);  
    }   
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末衩辟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子折晦,更是在濱河造成了極大的恐慌贯莺,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件倦始,死亡現(xiàn)場(chǎng)離奇詭異枚碗,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門弥虐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來颖对,“玉大人个唧,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵狭园,是天一觀的道長绎谦。 經(jīng)常有香客問我冤留,道長天通,這世上最難降的妖魔是什么萝映? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天佳遂,我揣著相機(jī)與錄音巍糯,去河邊找鬼宅楞。 笑死婶希,一個(gè)胖子當(dāng)著我的面吹牛筒饰,可吹牛的內(nèi)容都是我干的谬晕。 我是一名探鬼主播夕玩,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼烹俗,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蕉鸳!你這毒婦竟也來了勉失?” 一聲冷哼從身側(cè)響起告匠,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤型凳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了模燥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浩嫌。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瓶逃,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出挤庇,到底是詐尸還是另有隱情,我是刑警寧澤掷酗,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布然痊,位于F島的核電站辛蚊,受9級(jí)特大地震影響虑凛,放射性物質(zhì)發(fā)生泄漏锣披。R本人自食惡果不足惜峻仇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望恶迈。 院中可真熱鬧鸭廷,春花似錦、人聲如沸咨堤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咐容。三九已至蔚约,卻和暖如春展蒂,著一層夾襖步出監(jiān)牢的瞬間丝里,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來泰國打工傀广, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留颁独,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓伪冰,卻偏偏與公主長得像誓酒,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子贮聂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理丰捷,服務(wù)發(fā)現(xiàn)坯墨,斷路器,智...
    卡卡羅2017閱讀 134,652評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,804評(píng)論 6 342
  • 聲明:我已委托「維權(quán)騎士」(rightknights.com)為我的文章進(jìn)行維權(quán)行動(dòng)。 這個(gè)《恐怖新娘》停巷,是圣誕特...
    流浪de影子閱讀 1,606評(píng)論 0 0
  • 周未耍攘,休息。以前做淘寶都是沒有休息的畔勤,周未都是輪休蕾各,現(xiàn)在開始任性了,周未必須休息庆揪。因?yàn)榇蠹叶汲鋈ネ媪苏l還在網(wǎng)上購物...
    凡了閱讀 742評(píng)論 3 9
  • 警醒于光 1.說出真相 “我是神及其力量的臨在式曲,這一切都是我創(chuàng)造的,這不是真的缸榛,這是虛構(gòu)的全息幻象吝羞,這是我的意識(shí)創(chuàng)...
    火樹銀花1閱讀 512評(píng)論 0 0