天天看點

Spring内置模闆 JDBCTemplate

JdbcTemplate是Spring架構提供的一個對象,是對原始jdbc API的簡單封裝。

spring架構為我們提供了很多操作模闆類
JDBC      org.springframework.jdbc.core.JdbcTemplate 
Hibernate org.springframework.orm.hibernate3.HibernateTemplate
IBatis(Mybatis)  org.springframework.orm.IBatis.SqlMapClientTemplate
JPA                      org.springframework.orm.JpaTemplate
           

導包:

1.spring-jdbc-4.2.4.RELEASE.jar

2.spring-orm-4.2.4.RELEASE.jar(orm依賴jar)

3.spring-tx-4.2.4.RELEASE.jar(事務依賴jar)

還需要導入spring-core-4.2.4.RELEASE.jar(不導入會報錯)

資料源是什麼?

資料源,顧名思義,資料的來源。在資料源中存儲了所有建立資料庫連接配接的資訊。
作用就是你可以操作資料庫,資料源裡面存放了你要連接配接哪個庫以及資料庫的賬号和密碼。

就是通過資料庫的使用者名、密碼等資訊建立的資料庫連接配接,來建構資料庫連接配接池。
普通的連接配接資料庫是建立一個連接配接,執行完sql之後,就會關閉,再次連接配接還需要重複上述步驟。
而資料源連接配接池會根據你的參數建立多個資料庫連接配接并緩存,你每次連接配接資料庫的時候就可以從連接配接池中擷取一個連接配接,
去執行sql,用完會放入連接配接池。這樣,就避免了連接配接資料庫的開銷,也減少了對資料庫的壓力。
           

代碼:(jdbcTemplate簡單使用)

//定義資料源
DriverManagerDataSource ds = new DriverManagerDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:8082/spring_jdbcTemplate");
ds.setUsername("root");
ds.setPassword("root");
//擷取jdbcTemplate
JdbcTemplate jt = new JdbcTemplate();
jt.setDataSource(ds);
//執行sql
jt.execute("insert into user(name,password) values("libai","123"));
           

Spring配置方式(使用JdbcTemplate)

<bean name = "jdbcTemplate" class = 'org.springfranework.jdbc.core.JdbcTemplate">
		<property name = "datasource" ref="datasource" />
</bean>
           

1.配置Spring内置資料源

<bean name ="datasource" class = "org.springframework.jdbc.datasource.DriverManagerDataSource" >
		<property name ="driverClassName" value = "com.mysql.jdbc.Driver"/>
		<property name ="url" value = "jdbc:mysql://localhost:8082/spring_jdbcTemplate"/>
		<property name ="username" value = "root"/>
		<property name ="password" value = "root"/>
</bean>
           

其他資料源的配置

2.dbcp:(需要導入的依賴jar:commons-dbcp-1.4.jar ,commons-pool-1.6.jar)

(隻需要更換class)

<bean name ="datasource" class = "org.apache.commons.dbcp.BasicDataSource" >
			<property name ="driverClassName" value = "com.mysql.jdbc.Driver"/>
			<property name ="url" value = "jdbc:mysql://localhost:8082/spring_jdbcTemplate"/>
			<property name ="username" value = "root"/>
			<property name ="password" value = "root"/>
	</bean>
           

3.c3p0:(需要導入的依賴jar:c3p0-0.9.2.1.jar ,mchange-commons-java-0.2.3.4.jar)

<bean name ="datasource" class = "com.mchange.v2.c3p0.ComoPooledDataSource" >
			<property name ="driverClass" value = "com.mysql.jdbc.Driver"/>
			<property name ="jdbcUrl" value = "jdbc:mysql://localhost:8082/spring_jdbcTemplate"/>
			<property name ="user" value = "root"/>
			<property name ="password" value = "root"/>
	</bean>
           

JdbcTemplate 的 CRUD操作

//儲存
	jd.update("insert into user(name,password) values(?,?)","酷哥",123);
	//更新
	jd.update("update user set name = ?,password = ?  where id = ?","gou哥",666,1);
	//删除
	jd.update("delete from user where id = ?" ,1);
	//查詢所有
	List<User> users = jt.query("select * from user where name = ? " new BeanPropertyRowMapper<User>(User.calss),“狗哥”);
	//查詢一個
	List<User> users	= jt.query("select * from user where id = ?" new BeanPropertyRowMapper<User>(User.calss),1);
	System.out.println(user.isEmpty() ? "沒有結果" : users.get(0));
	//聚合函數
	Integer c1 = jt.queryForObject("select count(*) from user where id > ?",Integer.class,1);