spring 07 對jdbc的支持

需要新增的包
mysql-connector-java.jar(數(shù)據(jù)庫連接包)
c3p0.jar(數(shù)據(jù)庫連接池包)
spring-jdbc.jar(jdbc的支持)

beam.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd">

    <!-- 加載Proerties配置文件 -->
    <context:property-placeholder location="classpath:com/xxjqr/spring01/jdbc/db.properties"/>

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${driverClass}"></property>
        <property name="jdbcUrl" value="${jdbcUrl}"></property>
        <property name="user" value="${user}"></property>
        <property name="password" value="${password}"></property>
    </bean>
    
    
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <constructor-arg name="dataSource" ref="dataSource"></constructor-arg>
    </bean>
    
    <bean id="userDaoImpl" class="com.xxjqr.spring01.jdbc.UserDaoImpl">
        <property name="jdbcTemplate" ref="jdbcTemplate"></property>
    </bean> 
</beans>

db.properties

driverClass=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql:///spring_db
user=root
password=221121
initialPoolSize=3
maxPoolSize=6
acquireIncrement=2

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private int id;
    private String name;
    private String sex;
}
public interface UserDao {
    
    public void save(User user);
    public void update(User user);
    public void delete(Serializable id);//Serializable可能只是想用多態(tài)吧
    public User findById(Serializable id);
    public List<User> getAll();
}
@Data
public class UserDaoImpl implements UserDao {
    
    // 接收容器注入的JdbcTemplate對象
    private JdbcTemplate jdbcTemplate;
    

    // 1. 原始jdbc代碼
    public void save(User user) {
        jdbcTemplate.update("insert into user_t(name,sex) values(?,?)", user.getName(),user.getSex());
    }


    @Override
    public void delete(Serializable id) {
        jdbcTemplate.update("delete from user_t where id=?", id);
    }
    
    @Override
    public void update(User user) {
        jdbcTemplate.update("update user_t set name=? where id=?", user.getName(),user.getId());
    }


    @Override
    public User findById(Serializable id) {
        // queryForList 把每一行都封裝為map對象,再添加到list中
//      List<Map<String, Object>> list = jdbcTemplate.queryForList("select * from t_User");
        
        // 傳入類型參數(shù)请琳,表示查詢的列的類型;  這里只能查詢一列
//      List<String> list = jdbcTemplate.queryForList("select UserName from t_User", String.class);

        List<User> list = jdbcTemplate.query("select * from user_t where id=?",  new MyRowMapper(), id);
        
        return (list!=null&&list.size()>0)?list.get(0):null;
    }


    @Override
    public List<User> getAll() {
        List<User> list = jdbcTemplate.query("select * from user_t", new MyRowMapper());
        return list;
    }
    
    
    
    // 封裝Springjdbc查詢的結果集
    class MyRowMapper implements RowMapper<User>{
        
        // 如何解析一行
        @Override
        public User mapRow(ResultSet rs, int rowNum) throws SQLException {
            User user = new User();
            user.setId(rs.getInt("id"));
            user.setName(rs.getString("name"));
            return user;
        }
        
    }
    
}
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {

    private ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml",App.class);
    
    @Test
    public void testApp() throws Exception {
        UserDao userDao = (UserDao) ac.getBean("userDaoImpl");
        
//      User user = new User();
//      user.setName("丁昌江");
//      user.setSex("男");
//      userDao.save(user);
        
//      userDao.delete(1);
        
//      User user = new User();
//      user.setId(2);
//      user.setName("丁丁");
//      userDao.update(user);
        
        // 查詢方法
//      User user = userDao.findById(2);
//      System.out.println(user);
        
        System.out.println(userDao.getAll());
    }
}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末拇惋,一起剝皮案震驚了整個濱河市变勇,隨后出現(xiàn)的幾起案子双藕,更是在濱河造成了極大的恐慌蠢甲,老刑警劉巖呻澜,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捉撮,死亡現(xiàn)場離奇詭異怕品,居然都是意外死亡,警方通過查閱死者的電腦和手機巾遭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門肉康,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人灼舍,你說我怎么就攤上這事吼和。” “怎么了骑素?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵炫乓,是天一觀的道長。 經(jīng)常有香客問我献丑,道長末捣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任创橄,我火速辦了婚禮箩做,結果婚禮上,老公的妹妹穿的比我還像新娘妥畏。我一直安慰自己邦邦,他們只是感情好,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布醉蚁。 她就那樣靜靜地躺著燃辖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪网棍。 梳的紋絲不亂的頭發(fā)上黔龟,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機與錄音滥玷,去河邊找鬼氏身。 笑死,一個胖子當著我的面吹牛罗捎,可吹牛的內容都是我干的观谦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼桨菜,長吁一口氣:“原來是場噩夢啊……” “哼豁状!你這毒婦竟也來了捉偏?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤泻红,失蹤者是張志新(化名)和其女友劉穎夭禽,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谊路,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡讹躯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了缠劝。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片潮梯。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖惨恭,靈堂內的尸體忽然破棺而出秉馏,到底是詐尸還是另有隱情,我是刑警寧澤脱羡,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布萝究,位于F島的核電站,受9級特大地震影響锉罐,放射性物質發(fā)生泄漏帆竹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一脓规、第九天 我趴在偏房一處隱蔽的房頂上張望栽连。 院中可真熱鬧,春花似錦抖拦、人聲如沸升酣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至下面,卻和暖如春复颈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背沥割。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工耗啦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人机杜。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓帜讲,卻偏偏與公主長得像,于是被迫代替她去往敵國和親椒拗。 傳聞我的和親對象是個殘疾皇子似将,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內容

  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,748評論 6 342
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理获黔,服務發(fā)現(xiàn),斷路器在验,智...
    卡卡羅2017閱讀 134,600評論 18 139
  • SPRING CONFIG (ConfigFileApplicationListener) spring.conf...
    JeGe閱讀 6,514評論 0 14
  • 如果你有一個真正懂互聯(lián)網(wǎng)的老板玷氏,或者對你有絕對的信任,請一定要珍惜R干唷盏触! 如果你的團隊已經(jīng)就緒,我們先開始一個兩周的...
    何仁閱讀 155評論 0 1
  • 生活中有太多的無奈, 太多的悲哀授艰, 太多的傷害诗宣。不是所有這些, 我們都可以原諒想诅。 可以原諒的召庞, 我們大方去原諒;不...
    思考的魏靖閱讀 528評論 4 4