<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Kela's Blog

                前面的路很坎坷,但畢竟是條路.也許走過這一段就會發現,走過去就是夢想中的地方.因此堅持成為此刻唯一能做且必須去做的事情.
    posts - 9, comments - 27, trackbacks - 0, articles - 15

    kela的筆記 應用程序框架 ---- spring(10)

    Posted on 2006-11-09 11:54 Kela 閱讀(268) 評論(0)  編輯  收藏 所屬分類: 我的筆記(Spring)

    摘要:使用JDBCTemplate

    ?

    對于一個基本的JDBC存取,Connection的取得,Statement的建立,異常處理,Statement的關閉,Connection的關閉這些流程大致在不同的數據庫技術上大致是相同的。Spring提供的JdbcTemplate類,被設計為線程安全,當中所提供的一些操作方法封裝了類似上面的流程。

    ?

    ?

    ???? 對于UserDAO.javaJdbcTemplate改進

    ?

    只需要改進相應的方法就可以了,其它的程序與文件不用變動。

    ?

    package com.kela.spring.jdbc;

    ?

    import java.util.Iterator;

    import java.util.List;

    import java.util.Map;

    ?

    import javax.sql.DataSource;

    ?

    import org.springframework.jdbc.core.JdbcTemplate;

    ?

    import com.kela.spring.util.Util;

    ?

    public class Test implements IUserDAO {

    ???

    ??? private JdbcTemplate jdbcTemplate;

    ?

    ??? public void setDataSource(DataSource dataSource) {

    ??????? jdbcTemplate = new JdbcTemplate(dataSource);

    ??? }

    ?

    ??? public void insert(User user) {

    ??????? String name = user.getName();

    ??????? int age = user.getAge().intValue();

    ?

    ??????? String sql = "INSERT INTO user (name, age) VALUES ('" + name + "', " + age + ")";

    ??????? // 轉碼

    ??????? sql = Util.GBKToISO(sql);

    ???????

    ??????? jdbcTemplate.update(sql);

    ??? }

    ?

    ??? public User find(Integer id) {

    ???????

    ??????? String sql = "SELECT * FROM user WHERE id = " + id.intValue();

    ???????

    ??????? List rs = jdbcTemplate.queryForList(sql);

    ???????

    ??????? Iterator it = rs.iterator();

    ???????

    ??????? if(it.hasNext()) {

    ??????????? Map userMap = (Map)it.next();

    ??????????? Integer i = new Integer(userMap.get("id").toString());

    ??????????? String name = Util.getStr(userMap.get("name").toString());// 轉碼

    ??????????? Integer age? = new Integer(userMap.get("age").toString());

    ???????????

    ??????????? User user = new User();

    ??????????? user.setId(i);

    ??????????? user.setAge(age);

    ??????????? user.setName(name);

    ??????????? return user;

    ??????? }

    ??????? return null;

    ??? }

    }

    ?

    ???? 幾種JdbcTemplate執行與更新,查詢的演示

    ?

    A.? 使用JdbcTemplateexecute()方法執行SQL陳述。

    jdbcTemploat.execute(sql);

    B.? 如果是Updateinsert,使用update()方法。

    ?

    … … …

    使用預編譯SQL

    public void insert(User user) {

    ??????? final String name = user.getName();

    ??????? final int age = user.getAge().intValue();

    ???????

    ??????? jdbcTemplate.update(new PreparedStatementCreator() {

    ?

    ??????????? public PreparedStatement createPreparedStatement(Connection conn) throws SQLException {

    ??????????????? String sql = "INSERT INTO user (name, age) VALUES (?, ?)";

    ??????????????? PreparedStatement ps = conn.prepareStatement(sql);

    ??????????????? ps.setString(1, name);

    ??????????????? ps.setInt(2, age);

    ??????????????? return ps;

    ??????????? }

    ??????? }

    ??????? );

    ??? }

    ?

    … … …

    ?

    public void insert(User user) {

    ??????? final String name = user.getName();

    ??????? final int age = user.getAge().intValue();

    ???????

    ??????? String sql = "INSERT INTO user (name, age) VALUES (?, ?)";

    ??????? jdbcTemplate.update(sql, new PreparedStatementSetter() {

    ?

    ??????????? public void setValues(PreparedStatement ps) throws SQLException {

    ??????????????? ps.setString(1, name);

    ??????????????? ps.setInt(2, age);

    ??????????? }

    ??????? });

    ??? }

    ?

    … … …

    ?

    public void insert(User user) {

    ??? String sql = "INSERT INTO user (name, age) VALUES (?, ?)";

    ??? jdbcTemplate.update(sql, new Object[] {user.getName(), user.getAge()});

    }

    ?

    … … …

    ?

    C.? 使用JdbcTemplate進行查詢時,可是使用queryForXXX()等方法。

    ?

    // 返回一個整型

    jdbcTemplate.queryForInt(“select count * from user)

    ?

    // 返回一個查詢后的結果對象

    jdbcTemplate.queryForObject(“select name from user where id = ?”,

    new Object[] {id},

    java.lang.String.class);

    ?

    // 返回多筆資料的列表

    jdbcTemplate.queryForList (“select * from user”;

    ?

    List 中包括的事Map對象,每個Map對象代表查詢結果的一行記錄。

    ?

    分享到:
    主站蜘蛛池模板: 亚洲第一黄色网址| 国产国产成年年人免费看片| 91麻豆精品国产自产在线观看亚洲 | 免费一级毛片在线播放放视频| 四虎影视在线永久免费看黄| 亚洲狠狠婷婷综合久久| 免费的涩涩视频在线播放| 亚洲永久网址在线观看| 成人毛片免费观看视频大全| 亚洲熟妇无码AV| 日本不卡在线观看免费v| 亚洲日韩在线中文字幕综合| 免费观看午夜在线欧差毛片| 久青草国产免费观看| 亚洲熟女少妇一区二区| 男人的天堂网免费网站| 久久亚洲精品成人无码网站| 足恋玩丝袜脚视频免费网站| 亚洲色欲色欲www| 四虎国产精品免费久久影院| 一级做a爱片特黄在线观看免费看| 亚洲一区爱区精品无码| 99热在线观看免费| 在线综合亚洲中文精品| 免费永久看黄在线观看app| 一区二区三区免费电影| 久久久久亚洲AV无码专区首| 和日本免费不卡在线v| 国产成人亚洲综合a∨| 亚洲日韩欧洲无码av夜夜摸| 97在线视频免费| 亚洲av无一区二区三区| 亚洲精品无码永久在线观看你懂的| 日韩精品免费在线视频| 亚洲小说图区综合在线| 国产亚洲精品高清在线| 免费99精品国产自在现线| 一级做a爰片久久毛片免费看| 久久久久亚洲AV片无码下载蜜桃| 国产精品酒店视频免费看| 日韩精品免费视频|