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));
        }
    
    }
  • 相关阅读:
    react路由组件&&非路由组件
    react函数式组件(非路由组件)实现路由跳转
    react使用antd组件递归实现左侧菜单导航树
    【LeetCode】65. Valid Number
    【LeetCode】66. Plus One (2 solutions)
    【LeetCode】68. Text Justification
    【LeetCode】69. Sqrt(x) (2 solutions)
    【LeetCode】72. Edit Distance
    【LeetCode】73. Set Matrix Zeroes (2 solutions)
    【LeetCode】76. Minimum Window Substring
  • 原文地址:https://www.cnblogs.com/jatpeo/p/11767527.html
Copyright © 2011-2022 走看看