生活随笔
收集整理的這篇文章主要介紹了
Jdbc模版式写法与Spring-JdbcTemplate的比较
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、Jdbc模版式寫法:
【流程】
加載驅動獲取數據庫鏈接創建Statement對象(用于發送sql語句)向數據庫發送sql語句,獲取數據庫返回的結果集從結果集中獲取數據釋放資源上述部分用try-catch-finally語句包圍【詳解】(以Mysql為例) 1.加載驅動 將Mysql驅動jar包導入lib文件夾,配置到構建路徑中。 String driver = "com.mysql.jdbc.Driver";
//更改驅動時修改字符串即可
Class.forName(driver);
//加載com.mysql.jdbc.Driver類 2.獲取數據庫鏈接 通過DriverManager工具類中的getConnection方法,創建數據庫鏈接對象: 【Connection:java.sql.Connection】 Connection conn = DriverManager.getConnection(url, username, password);
url,user,password參數都是String字符串。其中username和password就是Mysql的用戶名和密碼。 url:數據庫地址。在Mysql中,是:jdbc:mysql://主機:端口/數據庫名?參數的形式。比如: String url = "jdbc:mysql://localhost:3306/student?useUnicode=true&characterEncoding=UTF-8";。 >>>>>>>>>>>>>>>>>>>>>>>>>實際開發中的做法<<<<<<<<<<<<<<<<<<<<<<<<< >實際開發中,一般會建立db.properties配置文件,存儲driver、url、username、password等信息。如此,這些信息有改動時,不用修改代碼,只需修改配置文件即可。 db.properties: driver =
com.mysql.jdbc.Driver
url = jdbc:mysql:\\localhost:3306
\student
username =
root
password = root
獲取db.properties中的數據: Properties prop =
new Properties();
prop.load(JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties"));
//載入db.properties
Class.forName(prop.getProperty(driver));
Connnection conn = DriverManager.getConnection(prop.getProperty(url),prop.getProperty(username),prop.getProperty(password));
3.創建Statement對象 通過Connection類中的createStatement方法,創建Statement對象: 【Statement:java.sql.Statement】 Statement st = conn.createStatement();
4.發送sql語句,獲取結果集 通過Statement類中的excuteQuery或excuteUpdate方法,執行sql語句,返回值為ResultSet類對象(創建): 【ResultSet:java.sql.ResultSet】 String sql = "SELECT name FROM student WHERE id = 1"
;
ResultSet rs = st.excuteQuery(sql);
5.從結果集中獲取數據 數據在結果集rs中的存放方式:類似于表格的形式,初始游標指向表頭。 要獲取數據時,通過rs.next()方法,令游標指向下一行,然后通過rs.get*(*)方法獲取該行的數據。 當存在下一行時,rs.next()返回true,否則返回false。所以rs.next()的返回值可以作為遍歷結果集rs時的循環條件。 獲取數據的方法: (1)getInt("列名"),getString("列名")…… (2)getObject("列名") 通過ResultSet類中的方法獲取rs中的數據: String name =
null;
while(rs.next()) {name = rs.getString("name"
);
} 6.釋放資源 與創建資源順序相反,注意要放在finally中。 - 釋放rs:rs.close();
- 釋放st:st.close();
- 關閉數據庫鏈接:conn.close();
二、利用JdbcTemplate的寫法 1.創建db.properties,定義驅動driver、數據庫鏈接url、用戶名username、密碼password。 driver = com.mysql.jdbc.Driver
url = jdbc:mysql:\\localhost:3306\student
username = root
password = root 2.配置Spring配置文件:applicationContext.xml 首先(第1行),讀取db.properties。 然后(第2-7行),用db.properties中的內容配置一個數據源對象。DriverManagerDataSource是數據源類。數據源類可詳見編寫DAO,通過JdbcTemplate操作數據庫的實踐 最后(第9-11行),配置一個JdbcTemplate實例,注入dataSource數據源對象。 <context:property-placeholder location="classpath:db.properties"/>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="username" value="${username}"></property><property name="password" value="${password}"></property><property name="driver" value="${driver}"></property><property name="url" value="${url}"></property>
</bean><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource"></property>
</bean> ?
3.創建應用上下文對象,獲取JdbcTemplate對象。 ApplicationContext apc =
new ClassPathXmlApplicationContext("applicationContext.xml"
);
JdbcTemplate jdbcTemplate = (JdbcTemplate) apc.getBean("jdbcTemplate");
4.通過JdbcTemplate中封裝的方法,執行sql語句,將結果提取到指定對象中(此處以查詢語句為例) String sql = "select id,name,school from student where id=? ";
//sql語句
RowMapper<Student> rowMapper =
new BeanPropertyRowMapper<Student>(Student.
class);
//通過Student創建RowMapper實例【為了高性能,應自定義RowMapper(復寫mapRow方法)而不是利用現成類】
Student stu = jdbcTemplate.queryForObject(sql,rowMapper,20);
//查詢id為20的那一行數據,將結果存入到rowMapper對象中
三、JdbcTemplate的優勢 1.加載驅動、創建鏈接都可以在xml文件中完成,代碼可專注于sql語句的發送及其結果 2.無需創建Statement對象 3.無需手動釋放資源 4.無需使用try-catch語句
轉載于:https://www.cnblogs.com/cage666/p/7295382.html
總結
以上是生活随笔為你收集整理的Jdbc模版式写法与Spring-JdbcTemplate的比较的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。