<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 閱讀(273) 評論(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對象代表查詢結果的一行記錄。

    ?

    分享到:
    主站蜘蛛池模板: 午夜老司机永久免费看片| 免费一级毛片在线播放视频免费观看永久 | 可以免费看黄视频的网站| 亚洲AV美女一区二区三区| 怡红院免费的全部视频| 亚洲日韩人妻第一页| 免费人成视频在线播放| 亚洲高清偷拍一区二区三区| 免费国产a理论片| 亚洲国产午夜福利在线播放| 一个人免费观看视频在线中文| 国产乱辈通伦影片在线播放亚洲 | 免费大片黄在线观看| 久久亚洲国产精品123区| 精品久久久久久国产免费了| 亚洲日本va在线视频观看| 久久免费线看线看| 精品亚洲成a人片在线观看少妇| 在线看片免费人成视久网| 亚洲av成人综合网| 成人五级毛片免费播放| 成人婷婷网色偷偷亚洲男人的天堂 | 亚洲无人区午夜福利码高清完整版 | 亚洲一区免费视频| 免费看a级黄色片| 51午夜精品免费视频| 亚洲av日韩av无码黑人| 免费三级毛片电影片| 色屁屁www影院免费观看视频| 成人午夜亚洲精品无码网站| 2015日韩永久免费视频播放| 亚洲一区二区三区丝袜| 亚洲片一区二区三区| 久久综合给合久久国产免费| 中文字幕亚洲精品无码| 亚洲情侣偷拍精品| 亚洲免费在线视频观看| 美女被免费网站视频在线| 亚洲av日韩av激情亚洲| 国产成人无码免费视频97| 成人黄网站片免费视频|