使用Spring对JDBC的Dao的支持类操作数据库

 

Spring对JDBC的Dao的支持类主要有三个:

JdbcDaoSupport→使用JdbcTemplate模板进行操作

NamedParameterJdbcTemplateySupport→使用NamedParameterJdbcTemplate模板进行操作

SimpleJdbcTemplateSupport→使用SimpleJdbcTemplate模板进行操作

实际上在这三个类中分别封装了一个对应的JDBC模板类

在使用中只要让你自己的Dao继承自Spring给JDBC提供的Dao的支持类,就可以方便的使用他提供的方法

下面着重介绍其中的一个SimpleJdbcTemplateSupport,其它的与其大同小异,请读者自行参考代码解决

一、SimpleJdbcDaoSupport示例

public class SimpleJdbcSupportUserDao extends SimpleJdbcDaoSupport 

二、基于注解的示例

 

1、基于注解

  Dao:

添加 @Repository("userDao")

package com.s.dao; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import javax.annotation.Resource; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport; import org.springframework.stereotype.Repository; import com.s.entity.User; @Repository("userDao") public class SimpleJdbcSupportUserDao extends SimpleJdbcDaoSupport{   public void add(User user){      String sql = "insert into user(name,password) values(?,?)";      getSimpleJdbcTemplate().update(sql, user.getName(),user.getPassword());   }   /**    * 查询所有    * @return  User集合    */   public List find(){      String sql = "select id,name,password from user";      return getSimpleJdbcTemplate().query(sql, new RowMapper(){        @Override        public User mapRow(ResultSet rs, int arg1) throws SQLException {           User user = new User();           user.setId(rs.getInt("id"));           user.setName(rs.getString("name"));           user.setPassword(rs.getString("password"));           return user;        }});   }   /**    * 按ID查询User表    * @param id    * @return  user    */   public User findById(String id){      String sql = "select id,name,password from user where id=?";      return getSimpleJdbcTemplate().queryForObject(sql, new RowMapper(){        @Override        public User mapRow(ResultSet rs, int arg1) throws SQLException {           User user = new User();           user.setId(rs.getInt("id"));           user.setName(rs.getString("name"));           user.setPassword(rs.getString("password"));           return user;        }}, id);   }   /**    * 更新数据的方法    * @param user    */   public void update(User user){      String sql = "update user set name=?,password=? where id=?";      getSimpleJdbcTemplate().update(sql, user.getName(),user.getPassword(),user.getId());   }   /**    * 删除数据的方法    * @param id    */   public void delete(String id){      String sql = "delete from user where id=?";      getSimpleJdbcTemplate().update(sql, id);   } }    

  Test:

package com.s.test; import java.util.List; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.s.dao.SimpleJdbcSupportUserDao; import com.s.entity.User; public class SimpleJdbcSupportUserDaoTest {   @Test   public void testAdd(){     ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");     User user = new User();     user.setName("spring");     user.setPassword("spring");          SimpleJdbcSupportUserDao dao = (SimpleJdbcSupportUserDao) ac.getBean("userDao");     dao.add(user);   }   @Test   public void testFind(){     ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");     SimpleJdbcSupportUserDao dao = (SimpleJdbcSupportUserDao) ac.getBean("userDao");     List list = dao.find();     for(User user:list){        System.out.println(user.getId()+":"+user.getName()+":"+user.getPassword());     }        }   @Test   public void testFindById(){     ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");     SimpleJdbcSupportUserDao dao = (SimpleJdbcSupportUserDao) ac.getBean("userDao");     User user = dao.findById("3");     System.out.println(user.getId()+":"+user.getName()+":"+user.getPassword());   }   @Test   public void testUpdate(){     ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");     SimpleJdbcSupportUserDao dao = (SimpleJdbcSupportUserDao) ac.getBean("userDao");     User user = dao.findById("1");     user.setName("Spring3");     dao.update(user);   }   @Test   public void testDelete(){     ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");     SimpleJdbcSupportUserDao dao = (SimpleJdbcSupportUserDao) ac.getBean("userDao");     dao.delete("6");   } }    

  Xml: 在声明部分添加如下属性,使Bean自动注入:

default-autowire="byType" 

 

三、基于Xml的示例

  Dao:删除 @Repository("userDao")

  Xml:去掉

default-autowire="byType"  

添加:

 

测试方法和使用注解的方法相同

PS:由于让我们的Dao继承了支持类,导致代码的灵活性下降,故此方法是不推荐的

 

你可能感兴趣的:(Spring)