Spring的JdbcTemplate
来源:互联网 发布:wine for ubuntu下载 编辑:程序博客网 时间:2024/06/15 21:31
Spring对持久层框架的支持
Spring为各种支持的持久化技术都提供了简单操作的模板和回调。
使用JdbcTemplate创建数据表
除了Spring的核心包外,引入额外jar包:
- spring-tx-3.2.0.RELEASE.jar
- spring-jdbc-3.2.0.RELEASE.jar
当然还有mysql驱动:
- mysql-connector-java-5.0.8-bin.jar
创建applicationContext.xml:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd"><!-- bean definitions here --></beans>
配置连接池
1、Spring默认的连接池
配置applicationContext.xml:
<!-- 配置Spring默认的连接池 --> <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql:///SpringJdbcTemplate"/> <property name="username" value="root"/> <property name="password" value="***************"/> </bean> <!-- 定义jdbcTemplate --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="datasource"/> </bean>
测试单元中:
@Autowired @Qualifier("jdbcTemplate") private JdbcTemplate jdbcTemplate; @Test public void test() { String sql = "CREATE TABLE test1(id INT PRIMARY KEY,stuName VARCHAR(20))"; jdbcTemplate.execute(sql); }
结果:
DBCP连接池和C3P0连接池的配置和上面几乎相同,仅仅需要导入相应jar包和更改class,并且注意property属性的值有些不同即可:
DBCP连接池:
导入jar包:
- com.springsource.org.apache.commons.dbcp-1.2.2.osgi.jar
- com.springsource.org.apache.commons.pool-1.5.3.jar
类名:org.apache.commons.dbcp.BasicDataSource
<!-- 配置DBCP连接池 --> <bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql:///SpringJdbcTemplate"/> <property name="username" value="root"/> <property name="password" value="***************"/> </bean> <!-- 定义jdbcTemplate --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="datasource"/> </bean>
C3P0连接池:
导入jar包:
- com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar
类名:com.mchange.v2.c3p0.ComboPooledDataSource
<!-- 配置C3P0连接池 --> <bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="com.mysql.jdbc.Driver"/> <property name="jdbcUrl" value="jdbc:mysql:///SpringJdbcTemplate"/> <property name="user" value="root"/> <property name="password" value="***************"/> </bean> <!-- 定义jdbcTemplate --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="datasource"/> </bean>
通过属性文件配置连接池
一般我们并不会将连接数据库的参数直接设置在xml文件中,而是将参数填写在属性文件中。
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql:///SpringJdbcTemplatejdbc.user=rootjdbc.password=###########
在applicationContext.xml文件中使用属性文件配置的内容:
两种方法
第一种:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties"/> </bean> <!-- 配置C3P0连接池 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driver}"/> <property name="jdbcUrl" value="${jdbc.url}"/> <property name="user" value="${jdbc.user}"/> <property name="password" value="${jdbc.password}"/> </bean>
第二种:
<context:property-placeholder location="classpath:jdbc.properties"/> <!-- 配置C3P0连接池 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driver}"/> <property name="jdbcUrl" value="${jdbc.url}"/> <property name="user" value="${jdbc.user}"/> <property name="password" value="${jdbc.password}"/> </bean>
JdbcTemplate的CRUD操作
创建StuDao:
public class StuDao{ private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate){ this.jdbcTemplate = jdbcTemplate; } public void InsertStu(String name){ String sql = "INSERT into test1 VALUES(NULL,?)"; this.getJdbcTemplate().update(sql, name); } public void DeleteStu(String name){ String sql = "delete from test1 where stuName=?"; this.getJdbcTemplate().update(sql, name); } public void UpdateStu(int id,String name){ String sql = "UPDATE test1 set stuName=? where id=?"; this.getJdbcTemplate().update(sql, name,id); }}
配置文件:
<bean id="stuDao" class="dao.StuDao"> <property name="jdbcTemplate" ref="jdbcTemplate"/> </bean>
这是一种创建dao并且获取JdbcTemplate的方法,其实我们使用以下方式:
public class StuDao extends JdbcDaoSupport{ public void InsertStu(String name){ String sql = "INSERT into test1 VALUES(NULL,?)"; this.getJdbcTemplate().update(sql, name); } public void DeleteStu(String name){ String sql = "delete from test1 where stuName=?"; this.getJdbcTemplate().update(sql, name); } public void UpdateStu(int id,String name){ String sql = "UPDATE test1 set stuName=? where id=?"; this.getJdbcTemplate().update(sql, name,id); }}
继承JdbcDaoSupport类,其实它的内部有jdbctemplate和setter/getter方法。
实现查询操作:
- 简单查询:
- select count(*) from test1;–>queryForInt(String sql)
- select name from test1 where id=?–>queryForObject(String sql,Class clazz,Object… args)
public int GetCount(){ String sql = "select count(*) from test1"; return this.getJdbcTemplate().queryForInt(sql);}public String getNameById(int id){ String sql = "select stuName from test1 where id=?"; return this.getJdbcTemplate().queryForObject(sql, String.class, id);}
- 复杂查询:
- select * from test1 where id=?–>queryForObject(String sql,RowMapper<T> rowMapper,Object… args)
- select * from test1;–>query(String sql,RowMapper<T> rowMapper,Object… args)
public Student findById(int id){ String sql = "select * from test1 where id=?"; return this.getJdbcTemplate().queryForObject(sql, new StuRowMapper(),id); }public List<Student> findAll(){ String sql = "select * from test1"; return this.getJdbcTemplate().query(sql, new StuRowMapper());}//创建一个内部类实现RowMapper接口 class StuRowMapper implements RowMapper<Student>{ @Override public Student mapRow(ResultSet rs, int rowNum) throws SQLException { Student stu = new Student(); stu.setId(rs.getInt("id")); stu.setName(rs.getString("stuName")); return stu; }}
阅读全文
3 0
- spring JdbcTemplate 的若干问题
- Spring的JDBCTemplate
- Spring的jdbcTemplate使用
- spring jdbcTemplate的使用说明
- Spring的JDBCTemplate
- spring jdbcTemplate的问题
- spring 的JDBCtemplate试用
- Spring的JDBCTemplate详解
- Spring的JDBCTemplate
- Spring的JDBCTemplate
- Spring的JDBCTemplate
- Spring的JDBCTemplate
- spring JdbcTemplate 的若干问题
- Spring的JDBCTemplate
- Spring的jdbcTemplate使用
- Spring的JDBCTemplate
- Spring的JDBCTemplate
- Spring的JDBCTemplate
- 欧式距离计算
- 我亲手调教的AI,竟然开始歧视我了!
- 小白笔记---------------------------------leetcode(70. Climbing Stairs )
- mysql5.7.19 安装配置方法图文教程
- windows10+cuda8.0+cudnn+python3.5+tensorflow-gpu-1.3.0-rc0( bottleneck() argument after ** must be )
- Spring的JdbcTemplate
- ELF 文件格式介绍
- Best Time to Buy and Sell Stock III
- 小小的公共库,大大的耦合,你痛过吗?
- 38.开源项目--git常用命令总结
- 用Dom4j解析自定义数据库XML配置文件
- Java IO 转换流 字节转字符流
- 浅析各类排序算法(四) 插入类排序之直接插入排序及折半插入,2-路插入算法
- Android应用性能优化系列视图篇——ListView自适应导致的严重性能问题