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