日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

JDBC学习笔记03【JDBC事务管理、数据库连接池、JDBCTemplate】

發(fā)布時(shí)間:2024/9/30 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JDBC学习笔记03【JDBC事务管理、数据库连接池、JDBCTemplate】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
  • 黑馬程序員-JDBC文檔(騰訊微云)JDBC筆記.pdf:https://share.weiyun.com/Kxy7LmRm
  • JDBC學(xué)習(xí)筆記01【JDBC快速入門、JDBC各個類詳解、JDBC之CRUD練習(xí)】【day01】
  • JDBC學(xué)習(xí)筆記02【ResultSet類詳解、JDBC登錄案例練習(xí)、PreparedStatement類詳解】【day01】
  • JDBC學(xué)習(xí)筆記03【JDBC事務(wù)管理、數(shù)據(jù)庫連接池、JDBCTemplate】【day01】、【day02】
  • 目錄

    07?JDBC事務(wù)管理

    JDBC管理事務(wù)_概述

    JDBC管理事務(wù)_實(shí)現(xiàn)

    08?數(shù)據(jù)庫連接池

    今日內(nèi)容

    數(shù)據(jù)庫連接池_概述

    數(shù)據(jù)庫連接池_實(shí)現(xiàn)介紹

    數(shù)據(jù)庫連接池_c3p0_基本使用

    新建項(xiàng)目 day05_dataSource_jdbcTemplate

    復(fù)制c3p0配置文件(c3p0-config.xml)到工程src目錄下

    c3p0的演示

    數(shù)據(jù)庫連接池_c3p0_配置演示

    連接池——最大的連接數(shù)量

    連接池——超時(shí)時(shí)間

    連接池——使用非默認(rèn)配置

    數(shù)據(jù)庫連接池_druid_基本使用

    數(shù)據(jù)庫連接池_druid_工具類

    數(shù)據(jù)庫連接池_druid_工具類測試

    JDBCUtils.java

    DruidDemo2.java

    09?JDBCTemplate

    JDBCTemplate_介紹

    JDBCTemplate_快速入門

    JDBCTemplate_執(zhí)行DML語句

    注解?Junit單元測試,可以讓方法獨(dú)立執(zhí)行

    1. 修改1號數(shù)據(jù)的 salary 為 10000

    2. 添加一條記錄

    3.刪除剛才添加的記錄

    JDBCTemplate_執(zhí)行DQL語句

    4.查詢id為1001的記錄,將其封裝為Map集合

    5. 查詢所有記錄,將其封裝為List

    6. 查詢所有記錄,將其封裝為Emp對象的List集合

    7. 查詢總記錄數(shù)

    JUnit 代碼


    07?JDBC事務(wù)管理

    JDBC管理事務(wù)_概述

    1. 事務(wù):一個包含多個步驟的業(yè)務(wù)操作。如果這個業(yè)務(wù)操作被事務(wù)管理,則這多個步驟要么同時(shí)成功,要么同時(shí)失敗。
    2. 操作:
    ?? ?1. 開啟事務(wù)
    ?? ?2. 提交事務(wù)
    ?? ?3. 回滾事務(wù)
    3. 使用Connection對象來管理事務(wù)
    ?? ?* 開啟事務(wù):setAutoCommit(boolean autoCommit) :調(diào)用該方法設(shè)置參數(shù)為false,即開啟事務(wù)
    ?? ?* 提交事務(wù):commit()
    ?? ?* 回滾事務(wù):rollback()

    JDBC管理事務(wù)_實(shí)現(xiàn)

    1. 事務(wù):一個包含多個步驟的業(yè)務(wù)操作。如果這個業(yè)務(wù)操作被事務(wù)管理,則這多個步驟要么同時(shí)成功,要么同時(shí)失敗。
    2. 操作:
    ?? ?1. 開啟事務(wù)
    ?? ?2. 提交事務(wù)
    ?? ?3. 回滾事務(wù)
    3. 使用Connection對象來管理事務(wù)
    ?? ?* 開啟事務(wù):setAutoCommit(boolean autoCommit) :調(diào)用該方法設(shè)置參數(shù)為false,即開啟事務(wù)
    ?? ??? ?* 在執(zhí)行sql之前開啟事務(wù)
    ?? ?* 提交事務(wù):commit()?
    ?? ??? ?* 當(dāng)所有sql都執(zhí)行完提交事務(wù)
    ?? ?* 回滾事務(wù):rollback()?
    ?? ??? ?* 在catch中回滾事務(wù)

    4. 代碼:...

    package cn.itcast.jdbc;import cn.itcast.util.JDBCUtils;import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException;/*** 事務(wù)操作——JDBC控制事務(wù)*/ public class JDBCDemo10 {public static void main(String[] args) {Connection conn = null;PreparedStatement pstmt1 = null;PreparedStatement pstmt2 = null;try {//1.獲取連接conn = JDBCUtils.getConnection();//開啟事務(wù)conn.setAutoCommit(false);//2.定義sql//2.1 張三 - 500String sql1 = "update account set balance = balance - ? where id = ?";//2.2 李四 + 500String sql2 = "update account set balance = balance + ? where id = ?";//3.獲取執(zhí)行sql對象pstmt1 = conn.prepareStatement(sql1);pstmt2 = conn.prepareStatement(sql2);//4. 設(shè)置參數(shù)pstmt1.setDouble(1, 500);pstmt1.setInt(2, 1);pstmt2.setDouble(1, 500);pstmt2.setInt(2, 2);//5.執(zhí)行sqlpstmt1.executeUpdate();// 手動制造異常int i = 3 / 0;pstmt2.executeUpdate();//提交事務(wù)conn.commit();} catch (Exception e) { // 只要出現(xiàn)異常,就進(jìn)行事務(wù)的回滾 捕捉大異常//事務(wù)回滾try {if (conn != null) {conn.rollback();}} catch (SQLException e1) {e1.printStackTrace();}e.printStackTrace();} finally {JDBCUtils.close(pstmt1, conn);JDBCUtils.close(pstmt2, null);}}}

    08?數(shù)據(jù)庫連接池

    今日內(nèi)容

  • 數(shù)據(jù)庫連接池
  • Spring JDBC : JDBC Template
  • 寫代碼來獲取連接,用完之后 釋放掉。獲取連接:向操作系統(tǒng)底層申請資源(耗時(shí))。用完之后 釋放,用完之后 釋放,用完之后 釋放...? ?導(dǎo)致系統(tǒng)運(yùn)行較慢!

    使用“數(shù)據(jù)庫 連接池”解決 性能低、資源浪費(fèi)的情況。

    Spring JDBC提供JDBC Template技術(shù)(JDBC封裝),簡化JDBC編程。

    數(shù)據(jù)庫連接池_概述

    1. 概念:其實(shí)就是一個容器(集合),存放數(shù)據(jù)庫連接的容器。
    ?? ? ? ?當(dāng)系統(tǒng)初始化好后,容器被創(chuàng)建,容器中會申請一些連接對象,當(dāng)用戶來訪問數(shù)據(jù)庫時(shí),從容器中獲取連接對象,用戶訪問完之后,會將連接對象歸還給容器。

    2. 好處:
    ?? ?1. 節(jié)約資源
    ?? ?2. 用戶訪問高效

    數(shù)據(jù)庫連接池_實(shí)現(xiàn)介紹

    1. 概念:其實(shí)就是一個容器(集合),存放數(shù)據(jù)庫連接的容器。
    ?? ? ? ?當(dāng)系統(tǒng)初始化好后,容器被創(chuàng)建,容器中會申請一些連接對象,當(dāng)用戶來訪問數(shù)據(jù)庫時(shí),從容器中獲取連接對象,用戶訪問完之后,會將連接對象歸還給容器。

    2. 好處:
    ?? ?1. 節(jié)約資源
    ?? ?2. 用戶訪問高效

    3. 實(shí)現(xiàn):
    ?? ?1. 標(biāo)準(zhǔn)接口:DataSource ? javax.sql包下的
    ?? ??? ?1. 方法:
    ?? ??? ??? ?* 獲取連接:getConnection()
    ?? ??? ??? ?* 歸還連接:Connection.close()? 如果連接對象Connection是從連接池中獲取的,那么調(diào)用Connection.close()方法,則不會再關(guān)閉連接了,而是歸還連接。

    ?? ?2. 一般我們不去實(shí)現(xiàn)它,有數(shù)據(jù)庫廠商來實(shí)現(xiàn)
    ?? ??? ?1. C3P0:數(shù)據(jù)庫連接池技術(shù)
    ?? ??? ?2. Druid:數(shù)據(jù)庫連接池實(shí)現(xiàn)技術(shù),由阿里巴巴提供的

    數(shù)據(jù)庫連接池_c3p0_基本使用

    4. C3P0:數(shù)據(jù)庫連接池技術(shù)
    ?? ?* 步驟:
    ?? ??? ?1. 導(dǎo)入jar包 (兩個) c3p0-0.9.5.2.jar、mchange-commons-java-0.2.12.jar ,
    ?? ??? ??? ?* 不要忘記導(dǎo)入數(shù)據(jù)庫驅(qū)動jar包
    ?? ??? ?2. 定義配置文件:
    ?? ??? ??? ?* 名稱: c3p0.properties 或者 c3p0-config.xml
    ?? ??? ??? ?* 路徑:直接將文件放在src目錄下即可。

    ?? ??? ?3. 創(chuàng)建核心對象 數(shù)據(jù)庫連接池對象 ComboPooledDataSource
    ?? ??? ?4. 獲取連接: getConnection
    ?? ?* 代碼:
    ?? ??? ? //1.創(chuàng)建數(shù)據(jù)庫連接池對象
    ? ? ? ? DataSource ds ?= new ComboPooledDataSource();
    ? ? ? ? //2. 獲取連接對象
    ? ? ? ? Connection conn = ds.getConnection();

    新建項(xiàng)目 day05_dataSource_jdbcTemplate

    ????

    ??

    新建libs文件夾:

    ??

    ??

    復(fù)制c3p0配置文件(c3p0-config.xml)到工程src目錄下

    ??

    ??

    c3p0的演示

    數(shù)據(jù)庫連接池_c3p0_配置演示

    連接池——最大的連接數(shù)量

    連接池——超時(shí)時(shí)間

    連接池——使用非默認(rèn)配置

    ??

    數(shù)據(jù)庫連接池_druid_基本使用

    5. Druid:數(shù)據(jù)庫連接池實(shí)現(xiàn)技術(shù),由阿里巴巴提供的。
    ?? ?1. 步驟:
    ?? ??? ?1. 導(dǎo)入jar包 druid-1.0.9.jar
    ?? ??? ?2. 定義配置文件:
    ?? ??? ??? ?* 是properties形式的
    ?? ??? ??? ?* 可以叫任意名稱,可以放在任意目錄下
    ?? ??? ?3. 加載配置文件。Properties
    ?? ??? ?4. 獲取數(shù)據(jù)庫連接池對象:通過工廠來來獲取 ?DruidDataSourceFactory
    ?? ??? ?5. 獲取連接:getConnection
    ?? ?* 代碼:
    ?? ??? ? //3.加載配置文件
    ? ? ? ? Properties pro = new Properties();
    ? ? ? ? InputStream is = DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties");
    ? ? ? ? pro.load(is);
    ? ? ? ? //4.獲取連接池對象
    ? ? ? ? DataSource ds = DruidDataSourceFactory.createDataSource(pro);
    ? ? ? ? //5.獲取連接
    ? ? ? ? Connection conn = ds.getConnection();

    package cn.itcast.datasource.druid;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.util.Properties;/*** Druid演示*/ public class DruidDemo {public static void main(String[] args) throws Exception {//1.導(dǎo)入jar包//2.定義配置文件//3.加載配置文件Properties pro = new Properties();InputStream is = DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties");pro.load(is);//4.獲取連接池對象DataSource ds = DruidDataSourceFactory.createDataSource(pro);//5.獲取連接Connection conn = ds.getConnection();System.out.println(conn);} }

    數(shù)據(jù)庫連接池_druid_工具類

    ?? ?2. 定義工具類
    ?? ??? ?1. 定義一個類 JDBCUtils
    ?? ??? ?2. 提供靜態(tài)代碼塊加載配置文件,初始化連接池對象
    ?? ??? ?3. 提供方法
    ?? ??? ??? ?1. 獲取連接方法:通過數(shù)據(jù)庫連接池獲取連接
    ?? ??? ??? ?2. 釋放資源
    ?? ??? ??? ?3. 獲取連接池的方法

    ?? ?* 代碼:...

    數(shù)據(jù)庫連接池_druid_工具類測試

    JDBCUtils.java

    package cn.itcast.utils;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties;/*** Druid連接池的工具類*/ public class JDBCUtils {//1.定義成員變量 DataSourceprivate static DataSource ds ;static{try {//1.加載配置文件Properties pro = new Properties();pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));//2.獲取DataSourceds = DruidDataSourceFactory.createDataSource(pro);} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}/*** 獲取連接*/public static Connection getConnection() throws SQLException {return ds.getConnection();}/*** 釋放資源*/public static void close(Statement stmt,Connection conn){/* if (stmt != null) {try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if (conn != null) {try {conn.close();//歸還連接} catch (SQLException e) {e.printStackTrace();}}*/close(null,stmt,conn);}public static void close(ResultSet rs , Statement stmt, Connection conn){if(rs != null){try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if(stmt != null){try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if(conn != null){try {conn.close();//歸還連接} catch (SQLException e) {e.printStackTrace();}}}/*** 獲取連接池方法*/public static DataSource getDataSource(){return ds;}}

    DruidDemo2.java

    package cn.itcast.datasource.druid;import cn.itcast.utils.JDBCUtils;import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException;/*** 使用新的工具類*/ public class DruidDemo2 {public static void main(String[] args) {/** 完成添加操作:給account表添加一條記錄*/Connection conn = null;PreparedStatement pstmt = null;try {//1.獲取連接conn = JDBCUtils.getConnection();//2.定義sqlString sql = "insert into account values(null, ?, ?)"; // 主鍵自增長//3.獲取pstmt對象pstmt = conn.prepareStatement(sql);//4.給?賦值pstmt.setString(1, "王五");pstmt.setDouble(2, 3001);//5.執(zhí)行sqlint count = pstmt.executeUpdate();System.out.println(count);} catch (SQLException e) {e.printStackTrace();} finally {//6. 釋放資源JDBCUtils.close(pstmt, conn);}}}

    09?JDBCTemplate

    JDBCTemplate_介紹

    * Spring框架對JDBC的簡單封裝,提供了一個JDBCTemplate對象簡化JDBC的開發(fā)。
    * 步驟:
    ?? ?1. 導(dǎo)入jar包
    ?? ?2. 創(chuàng)建JdbcTemplate對象(依賴于數(shù)據(jù)源DataSource)
    ?? ??? ?* JdbcTemplate template = new JdbcTemplate(ds);

    ?? ?3. 調(diào)用JdbcTemplate的方法來完成CRUD的操作
    ?? ??? ?* update():執(zhí)行DML語句(增、刪、改語句)。
    ?? ??? ?* queryForMap():查詢結(jié)果將結(jié)果集封裝為map集合。
    ?? ??? ?* queryForList():查詢結(jié)果將結(jié)果集封裝為list集合。
    ?? ??? ?* query():查詢結(jié)果,將結(jié)果封裝為JavaBean對象。
    ?? ??? ?* queryForObject:查詢結(jié)果,將結(jié)果封裝為對象。

    JDBCTemplate_快速入門

    ??

    package cn.itcast.jdbctemplate;import cn.itcast.utils.JDBCUtils; import org.springframework.jdbc.core.JdbcTemplate;/*** JdbcTemplate入門*/ public class JdbcTemplateDemo1 {public static void main(String[] args) {//1.導(dǎo)入jar包//2.創(chuàng)建JDBCTemplate對象JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());//3.調(diào)用方法String sql = "update account set balance = 5000 where id = ?";int count = template.update(sql, 3);System.out.println(count);}}

    JDBCTemplate_執(zhí)行DML語句

    * Spring框架對JDBC的簡單封裝,提供了一個JDBCTemplate對象簡化JDBC的開發(fā)。
    * 步驟:
    ?? ?1. 導(dǎo)入jar包
    ?? ?2. 創(chuàng)建JdbcTemplate對象(依賴于數(shù)據(jù)源DataSource)
    ?? ??? ?* JdbcTemplate template = new JdbcTemplate(ds);

    ?? ?3. 調(diào)用JdbcTemplate的方法來完成CRUD的操作
    ?? ??? ?* update():執(zhí)行DML語句。增、刪、改語句
    ?? ??? ?* queryForMap():查詢結(jié)果將結(jié)果集封裝為map集合
    ?? ??? ?* queryForList():查詢結(jié)果將結(jié)果集封裝為list集合
    ?? ??? ?* query():查詢結(jié)果,將結(jié)果封裝為JavaBean對象
    ?? ??? ?* queryForObject:查詢結(jié)果,將結(jié)果封裝為對象

    ?? ?4. 練習(xí):
    ?? ??? ?* 需求:
    ?? ??? ??? ?1. 修改1號數(shù)據(jù)的 salary 為 10000
    ?? ??? ??? ?2. 添加一條記錄
    ?? ??? ??? ?3. 刪除剛才添加的記錄
    ?? ??? ??? ?4. 查詢id為1的記錄,將其封裝為Map集合
    ?? ??? ??? ?5. 查詢所有記錄,將其封裝為List
    ?? ??? ??? ?6. 查詢所有記錄,將其封裝為Emp對象的List集合
    ?? ??? ??? ?7. 查詢總記錄數(shù)

    ?? ??? ?* 代碼:...

    注解?Junit單元測試,可以讓方法獨(dú)立執(zhí)行

    1. 修改1號數(shù)據(jù)的 salary 為 10000

    2. 添加一條記錄

    3.刪除剛才添加的記錄

    JDBCTemplate_執(zhí)行DQL語句

    * Spring框架對JDBC的簡單封裝。提供了一個JDBCTemplate對象簡化JDBC的開發(fā)
    * 步驟:
    ?? ?1. 導(dǎo)入jar包
    ?? ?2. 創(chuàng)建JdbcTemplate對象。依賴于數(shù)據(jù)源DataSource
    ?? ??? ?* JdbcTemplate template = new JdbcTemplate(ds);

    ?? ?3. 調(diào)用JdbcTemplate的方法來完成CRUD的操作
    ?? ??? ?* update():執(zhí)行DML語句。增、刪、改語句
    ?? ??? ?* queryForMap():查詢結(jié)果將結(jié)果集封裝為map集合,將列名作為key,將值作為value 將這條記錄封裝為一個map集合
    ?? ??? ??? ?* 注意:這個方法查詢的結(jié)果集長度只能是1
    ?? ??? ?* queryForList():查詢結(jié)果將結(jié)果集封裝為list集合
    ?? ??? ??? ?* 注意:將每一條記錄封裝為一個Map集合,再將Map集合裝載到List集合中
    ?? ??? ?* query():查詢結(jié)果,將結(jié)果封裝為JavaBean對象
    ?? ??? ??? ?* query的參數(shù):RowMapper
    ?? ??? ??? ??? ?* 一般我們使用BeanPropertyRowMapper實(shí)現(xiàn)類,可以完成數(shù)據(jù)到JavaBean的自動封裝。
    ?? ??? ??? ??? ?* new BeanPropertyRowMapper<類型>(類型.class)
    ?? ??? ?* queryForObject:查詢結(jié)果,將結(jié)果封裝為對象
    ?? ??? ??? ?* 一般用于聚合函數(shù)的查詢

    ?? ?4. 練習(xí):
    ?? ??? ?* 需求:
    ?? ??? ??? ?1. 修改1號數(shù)據(jù)的 salary 為 10000
    ?? ??? ??? ?2. 添加一條記錄
    ?? ??? ??? ?3. 刪除剛才添加的記錄
    ?? ??? ??? ?4. 查詢id為1的記錄,將其封裝為Map集合
    ?? ??? ??? ?5. 查詢所有記錄,將其封裝為List
    ?? ??? ??? ?6. 查詢所有記錄,將其封裝為Emp對象的List集合
    ?? ??? ??? ?7. 查詢總記錄數(shù)

    ?? ??? ?* 代碼:...

    4.查詢id為1001的記錄,將其封裝為Map集合

    5. 查詢所有記錄,將其封裝為List

    6. 查詢所有記錄,將其封裝為Emp對象的List集合

    ??

    7. 查詢總記錄數(shù)

    JUnit 代碼

    package cn.itcast.jdbctemplate;import cn.itcast.domain.Emp; import cn.itcast.utils.JDBCUtils; import org.junit.Test; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper;import java.sql.Date; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import java.util.Map;public class JdbcTemplateDemo2 {//Junit單元測試,可以讓方法獨(dú)立執(zhí)行//1. 獲取JDBCTemplate對象private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());/*** Junit單元測試,可以讓方法獨(dú)立執(zhí)行*/@Testpublic void test() {System.out.println("我被執(zhí)行了...");int i = 3 / 0;System.out.println("我被執(zhí)行了...");}/*** 1. 修改1號數(shù)據(jù)的 salary 為 10000*/@Testpublic void test1() {//2. 定義sqlString sql = "update emp set salary = 10000 where id = 1001";//3. 執(zhí)行sqlint count = template.update(sql);System.out.println(count);}/*** 2. 添加一條記錄*/@Testpublic void test2() {String sql = "insert into emp(id,ename,dept_id) values(?,?,?)";int count = template.update(sql, 1015, "郭靖", 10);System.out.println(count);}/*** 3.刪除剛才添加的記錄*/@Testpublic void test3() {String sql = "delete from emp where id = ?";int count = template.update(sql, 1015);System.out.println(count);}/*** 4.查詢id為1001的記錄,將其封裝為Map集合* 注意:這個方法查詢的結(jié)果集長度只能是1*/@Testpublic void test4() {String sql = "select * from emp where id = ? or id = ?";Map<String, Object> map = template.queryForMap(sql, 1001);// Map<String, Object> map = template.queryForMap(sql, 1001, 1002); // 錯誤System.out.println(map);// {id=1001, ename=孫悟空, job_id=4, mgr=1004, joindate=2000-12-17, salary=10000.00, bonus=null, dept_id=20}}/*** 5. 查詢所有記錄,將其封裝為List*/@Testpublic void test5() {String sql = "select * from emp";List<Map<String, Object>> list = template.queryForList(sql);for (Map<String, Object> stringObjectMap : list) {System.out.println(stringObjectMap);}}/*** 6. 查詢所有記錄,將其封裝為Emp對象的List集合*/@Testpublic void test6() {String sql = "select * from emp";List<Emp> list = template.query(sql, new RowMapper<Emp>() {@Overridepublic Emp mapRow(ResultSet rs, int i) throws SQLException {Emp emp = new Emp();int id = rs.getInt("id");String ename = rs.getString("ename");int job_id = rs.getInt("job_id");int mgr = rs.getInt("mgr");Date joindate = rs.getDate("joindate");double salary = rs.getDouble("salary");double bonus = rs.getDouble("bonus");int dept_id = rs.getInt("dept_id");emp.setId(id);emp.setEname(ename);emp.setJob_id(job_id);emp.setMgr(mgr);emp.setJoindate(joindate);emp.setSalary(salary);emp.setBonus(bonus);emp.setDept_id(dept_id);return emp;}});for (Emp emp : list) {System.out.println(emp);}}/*** 6. 查詢所有記錄,將其封裝為Emp對象的List集合*/@Testpublic void test6_2() {String sql = "select * from emp";List<Emp> list = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));for (Emp emp : list) {System.out.println(emp);}}/*** 7. 查詢總記錄數(shù)*/@Testpublic void test7() {String sql = "select count(id) from emp";Long total = template.queryForObject(sql, Long.class);System.out.println(total);}}

    一鼓作氣,加油加油加油,寧死不破~~~

    總結(jié)

    以上是生活随笔為你收集整理的JDBC学习笔记03【JDBC事务管理、数据库连接池、JDBCTemplate】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。