天天看点

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