zoukankan      html  css  js  c++  java
  • 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));
        }
    
    }
  • 相关阅读:
    HTML-DOM实例——实现带样式的表单验证
    HTML-DOM常用对象的用法(select/option/form/table)
    C++程序嵌入Python解释器二次开发
    线程池、协程
    Qt信号(SINGAL)与槽(SLOT)
    随机数
    字符串、内存拷贝
    模板元编程以及关键字template和typename
    std::thread,std::future,std::promise,std::async
    C++智能指针,RAII(资源获取即初始化) 原则
  • 原文地址:https://www.cnblogs.com/jatpeo/p/11767527.html
Copyright © 2011-2022 走看看