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

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

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

    Kela's Blog

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

    摘要:使用JDBCTemplate

    ?

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

    ?

    ?

    ???? 對于UserDAO.javaJdbcTemplate改進

    ?

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

    ?

    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 + ")";

    ??????? // 轉(zhuǎn)碼

    ??????? 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());// 轉(zhuǎn)碼

    ??????????? 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執(zhí)行與更新,查詢的演示

    ?

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

    jdbcTemploat.execute(sql);

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

    ?

    … … …

    使用預(yù)編譯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)

    ?

    // 返回一個查詢后的結(jié)果對象

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

    new Object[] {id},

    java.lang.String.class);

    ?

    // 返回多筆資料的列表

    jdbcTemplate.queryForList (“select * from user”;

    ?

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

    ?

    分享到:
    主站蜘蛛池模板: 337p日本欧洲亚洲大胆人人 | 国产伦精品一区二区三区免费下载| 91亚洲国产在人线播放午夜| 你是我的城池营垒免费看| 久久国产成人亚洲精品影院 | 国产精品亚洲产品一区二区三区| 看亚洲a级一级毛片| 亚洲国产一成久久精品国产成人综合 | 伊人久久综在合线亚洲2019| 日本在线看片免费人成视频1000 | 一区二区视频在线免费观看| 亚洲午夜成人精品电影在线观看| 亚洲阿v天堂在线2017免费| 中文字幕精品亚洲无线码一区| 最新亚洲成av人免费看| 亚洲网址在线观看| 好大好硬好爽免费视频| 野花视频在线官网免费1| 国产日韩成人亚洲丁香婷婷| 中文字幕日本人妻久久久免费| 亚洲国产成人久久综合碰碰动漫3d| 91精品导航在线网址免费| 日本亚洲免费无线码| 亚洲AV无码一区二三区 | 国产精品偷伦视频观看免费 | 色噜噜综合亚洲av中文无码| 97无码免费人妻超级碰碰碰碰 | 亚洲国产成人99精品激情在线| 日本免费一二区在线电影| 一区视频免费观看| 亚洲理论精品午夜电影| 日本特黄特色免费大片| 国内精品免费久久影院| 亚洲人色大成年网站在线观看| 国产免费人人看大香伊| 久久国产精品免费看| 亚洲AV综合永久无码精品天堂| 亚洲精品乱码久久久久久按摩| 亚洲国产精品免费观看| 又长又大又粗又硬3p免费视频| 亚洲视频中文字幕|