06_Spring JDBCTemplate

Spring对不同持久化技术的支持

ORM持久化技术

模板类

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

使用JDBCTemlpate

Spring JDBC是Spring提供的持久层技术,简化JDBC API开发,使用上和Apache公司的DBUtils框架非常类似,导入必要jar包到工程目录,

spring-jdbc-4.2.4.RELEASE.jar

spring-tx-4.2.4.RELEASE.jar

数据库驱动包

1.创建jdbc.properties

jdbc.driverClass=com.jdbc.mysql.Driver
jdbc.jdbcUrl=jdbc:mysql:///crm
jdbc.user=root
jdbc.password=123456

2.applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://www.springframework.org/schema/beans" 
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" 
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd 
	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd 
	http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd ">
	
	<!--1   创建一个jdbcTemplate对象 -->
	<!-- <bean name="jt" class="org.springframework.jdbc.core.JdbcTemplate"> </bean> -->
	<!--2 继承JdbcDaoSupport 通过getJdbcTemplate()方法获得  -->
	
	<!-- 读取属性文件方式<一> -->
	 <!-- <context:property-placeholder location="classpath:jdbc.properties"/> --> 
	<!-- 读取属性文件方式<二> -->
	<bean id="propertyConfigurer" 
	class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="location">
			<value>classpath:jdbc.properties</value>
		</property>
	</bean> 	
	<!-- c3p0数据源 -->
	<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="${jdbc.driverClass}"></property>
		<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
		<property name="user" value="${jdbc.user}"></property>
		<property name="password" value="${jdbc.password}"></property>
	</bean>
	<!-- userDao对象 -->
	<bean name="userDao" class="com.wann.dao.UserDaoImpl">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
</beans>

3.userDao

public interface UserDao {
	//增
	void save(User u);
	//删
	void delete(Integer id);
	//改
	void update(User u);
	//查
	User getById(Integer id);
	//查
	int getTotal();
	//查
	List<User> getAll();
}

4.userDaoImpl

public class UserDaoImpl extends JdbcDaoSupport implements UserDao {
	
	//声明jdbcTemplate 
	/*@Resource(name="jt")
	private JdbcTemplate jt;*/

	//set方法 
	/*public void setJt(JdbcTemplate jt) {
		this.jt = jt;
	}*/
	@Override
	public void save(User u) {
		String sql="insert into t_user values (null,?)";		
		getJdbcTemplate().update(sql, u.getName());
		
	}

	@Override
	public void delete(Integer id) {
		String sql="delete from t_user where id=?";		
		getJdbcTemplate().update(sql, id);
		//jt.update(sql,id);
	}

	@Override
	public void update(User u) {
		String sql="update t_user set name=? where id=?";		
		getJdbcTemplate().update(sql, u.getName(),u.getId());
		
	}

	@Override
	public User getById(Integer id) {
		String sql="select id,name from t_user where id=?";
		return  getJdbcTemplate().queryForObject(sql,new RowMapper<User>(){
			@Override
			//参数 结果集  args 索引 第一行0,。。。。
			public User mapRow(ResultSet rs, int args) throws SQLException {
				User u = new User();
				u.setId(rs.getInt("id"));
				u.setName(rs.getString("name"));
				return u;
			}}, id);
	 
	}

	@Override
	public int getTotal() {
		String sql="select count(1) n from t_user";
		return getJdbcTemplate().queryForObject(sql, Integer.class);
	}

	@Override
	public List<User> getAll() {
		String sql="select id,name from t_user";
		List<User> list = getJdbcTemplate().query(sql, new RowMapper<User>(){

			@Override
			//参数 结果集  args 索引 第一行0,。。。。
			public User mapRow(ResultSet rs, int args) throws SQLException {
				User u = new User();
				u.setId(rs.getInt("id"));
				u.setName(rs.getString("name"));
				return u;
			}});
		return list;
	}
	
	
}

注意:这里要得到jdbctemplate对象,1.继承JdbcDaoSupport 后getJdbcTemplate()

                                                          2.在applicationContext.xml配置

	<!--1   创建一个jdbcTemplate对象 -->
	<!-- <bean name="jt" class="org.springframework.jdbc.core.JdbcTemplate"> </bean> -->
	<!--2 继承JdbcDaoSupport 通过getJdbcTemplate()方法获得  -->

5.测试

@RunWith(SpringJUnit4ClassRunner.class) //帮我们创建容器
@ContextConfiguration("classpath:applicationContext.xml")//引入配置文件
public class Demo2 {
    @Resource(name = "userDao")
    private UserDao userDao;
    @Test
    public void test(){
       /* User u = new User();
        u.setName("李四");
        userDao.add(u);*/
        List<User> all = userDao.getAll();
        for(User u:all) {
            System.out.println(u);
        }
    }
    @Test
    public void test1(){
        System.out.println(userDao.getById(1));
    }

}
原文地址:https://www.cnblogs.com/jatpeo/p/11767527.html