Spring基础知识(8)-JdbcTemplate

一、Spring JdbcTemplate 使用

1 、 Spring 提供 不同持久化技术 模板工具类

      JDBC  ----  org.springframework.jdbc.core.JdbcTemplate
      Hibernate3.0  --- org.springframework.orm.hibernate3.HibernateTemplate
      IBatis(MyBatis) --- org.springframework.orm.ibatis.SqlMapClientTemplate
      JPA --- org.springframework.orm.jpa.JpaTemplate

      JdbcTemplate 是用来简化JDBC操作的 , 操作和Apache DbUtils 框架非常类似 

2、 快速入门

      步骤一 : 导入jar包 

      在Spring 最基本jar包 基础上, 导入JDBC模板开发包
      spring-jdbc-3.2.0.RELEASE.jar  --- 存放JdbcTemplate 工具类 
      spring-tx-3.2.0.RELEASE.jar   ---- 进行事务管理 
      操作数据库 别忘了驱动

      步骤二 :编写无配置文件 入门案例
            1) 创建连接池
            2) 构造jdbcTemplate对象
            3) 执行SQL语句

3、 使用xml 配置数据库连接池

      常用数据源

      * Spring 数据源实现类 DriverManagerDataSource

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

      * DBCP 数据源 BasicDataSource

      导入jar包
            com.springsource.org.apache.commons.dbcp-1.2.2.osgi.jar
            com.springsource.org.apache.commons.pool-1.5.3.jar

		<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
			<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
			<property name="url" value="jdbc:mysql:///spring3day2"></property>
			<property name="username" value="root"></property>
			<property name="password" value="root"></property>
		</bean>

      * C3P0 数据源  ComboPooledDataSource (重点掌握)

      导入jar包
            com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar

		<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
			<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
			<property name="jdbcUrl" value="jdbc:mysql:///spring3day2"></property>
			<property name="user" value="root"></property>
			<property name="password" value="abc"></property>
		</bean>


4、 外部属性文件引入 

      在Spring 直接修改常用属性,不方便,可以将属性抽取出来 建立单独 properties 文件,在Spring 中引入properties

      在Spring的applicationContext.xml 引入properties 有两种写法 
      写法一 :

	<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
          <property name="location" value="classpath:jdbc.properties"></property>
	</bean>
      将连接池配置参数,使用 ${属性key}

	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="${jdbc.driver}"></property>
		<property name="jdbcUrl" value="${jdbc.url}"></property>
		<property name="user" value="${jdbc.user}"></property>
		<property name="password" value="${jdbc.password}"></property>
	</bean>


      写法二: 
<span style="white-space:pre">	</span><context:property-placeholder location="classpath:jdbc.properties">


5、 使用JdbcTemplate 实现CURD 操作

      UserDAO 实现数据库操作,必须要使用 JdbcTemplate, Spring 将jdbcTemplate 注入 UserDAO 

1) Spring 为每种持久化技术 提供一个支持类 
支持类作用,在DAO 中注入 模板工具类 

      JDBC : org.springframework.jdbc.core.support.JdbcDaoSupport
      Hibernate 3.0 :org.springframework.orm.hibernate3.support.HibernateDaoSupport
      iBatis :org.springframework.orm.ibatis.support.SqlMapClientDaoSupport
      用户自己编写DAO 只需要继承 JdbcDaoSupport, 就可以注入 JdbcTemplate

2)  通过jdbcTemplate 提供 int update(String sql, Object... args)  实现增加 、修改 、删除 

3)  简单查询,返回原始数据类型, String类型 
      String sql = "select count(*) from user";   //  int queryForInt(String sql) 
      String sql = "select name from user where id = ? "; // <T> T queryForObject(String sql, Class<T> requiredType, Object... args) 
4) 复杂查询
      JdbcTemplate 没有handler, 手动完成对象封装 

      编写实体类 RowMapper 

	class UserRowMapper implements RowMapper<User> {
		@Override
		public User mapRow(ResultSet rs, int rowNum) throws SQLException {
			// rs 已经指向每一条数据,不需要自己调用 next,将rs指向数据 转换 User对象
			User user = new User();
			user.setId(rs.getInt("id"));
			user.setName(rs.getString("name"));
			return user;
		}
	}
查询单个对象  <T> T queryForObject(String sql, RowMapper<T> rowMapper, Object... args) 
      return this.getJdbcTemplate().queryForObject(sql, new UserRowMapper(),id);

查询所有对象List集合 <T> List<T> query(String sql, RowMapper<T> rowMapper, Object... args) 
       return this.getJdbcTemplate().query(sql, new UserRowMapper());





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值