使用JDBC的DAO支持类

    技术2025-08-23  23

    用了Template,就会感觉能不能不每次都搞个

    private JdbcTemplate jdbcTemplate;

     public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {  this.jdbcTemplate = jdbcTemplate; }

     

    怪烦人的,当然spring也没那么傻。

     

    DAO支持类:

    可以直接给dataSource,也可以给Template,因为它不光有:

     /**  * Set the JdbcTemplate for this DAO explicitly,  * as an alternative to specifying a DataSource.  */ public final void setJdbcTemplate(JdbcTemplate jdbcTemplate) {  this.jdbcTemplate = jdbcTemplate;  initTemplateConfig(); }

     

    还有

     

    /**  * Set the JDBC DataSource to be used by this DAO.  */ public final void setDataSource(DataSource dataSource) {  if (this.jdbcTemplate == null || dataSource != this.jdbcTemplate.getDataSource()) {   this.jdbcTemplate = createJdbcTemplate(dataSource);   initTemplateConfig();  } }

     

    ----------

    用一下:

     

    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"  xmlns:jee="http://www.springframework.org/schema/jee"  xsi:schemaLocation="http://www.springframework.org/schema/beans           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd           http://www.springframework.org/schema/context           http://www.springframework.org/schema/context/spring-context-2.5.xsd           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd             http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd              http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <import resource="classpath:bean-jdbc.xml" />

     <bean id="helloJdbcDaoSupport" class="cn.partner4java.daosupport.impl.HelloJdbcDaoSupportBean">  <property name="dataSource" ref="dataSource"></property> </bean>  <bean id="helloNamedParameterJdbcDaoSupport" class="cn.partner4java.daosupport.impl.HelloNamedParameterJdbcDaoSupportBean">  <property name="dataSource" ref="dataSource"/> </bean>  <bean id="helloSimpleJdbcDaoSupport" class="cn.partner4java.daosupport.impl.HelloSimpleJdbcDaoSupportBean">  <property name="dataSource" ref="dataSource"/> </bean> </beans>  

     

    package cn.partner4java.daosupport;

    import cn.partner4java.bean.User;

    public interface HelloJdbcDaoSupport { /**  * 保存测试  * @param user  */ public void saveUser(User user);  /**  * 获取  * @param id 索引  * @return  */ public User getUserById(int id);}

     

     

     

    package cn.partner4java.daosupport;

    import cn.partner4java.bean.User;

    public interface HelloNamedParameterJdbcDaoSupport { public void saveUser(User user);}

     

    package cn.partner4java.daosupport;

    import cn.partner4java.bean.User;

    public interface HelloSimpleJdbcDaoSupport { public void saveUser(User user); /**  * 获取  * @param id 索引  * @return  */ public User getUserById(int id);}

     

     

    ----

    实现类

     

    package cn.partner4java.daosupport.impl;

    import java.sql.ResultSet;import java.sql.SQLException;import java.util.List;

    import org.springframework.jdbc.core.RowMapper;import org.springframework.jdbc.core.support.JdbcDaoSupport;

    import cn.partner4java.bean.User;import cn.partner4java.daosupport.HelloJdbcDaoSupport;

    public class HelloJdbcDaoSupportBean extends JdbcDaoSupport implements  HelloJdbcDaoSupport {  public User getUserById(int id) {   List users = this.getJdbcTemplate().query(USER_SELECT, new Object[]{id}, new RowMapper() {    public Object mapRow(ResultSet rs, int rowNum) throws SQLException {     User user = new User();     user.setId(rs.getInt(1));     user.setUsername(rs.getString(2));     user.setPassword(rs.getString(3));     return user;    }   }) ;   return users.size() > 0 ? (User)users.get(0):null;  }

      private static final String USER_SELECT = "select id,username,password from user where id = ?";    public void saveUser(User user) {   this.getJdbcTemplate().update(USER_INSERT, new Object[] {user.getUsername(),user.getPassword()});  }    private static final String USER_INSERT = "insert into user (username, password) values (?,?)";  }

     

     

     

    package cn.partner4java.daosupport.impl;

    import java.util.HashMap;import java.util.Map;

    import org.springframework.jdbc.core.namedparam.NamedParameterJdbcDaoSupport;

    import cn.partner4java.bean.User;import cn.partner4java.daosupport.HelloNamedParameterJdbcDaoSupport;

    public class HelloNamedParameterJdbcDaoSupportBean extends  NamedParameterJdbcDaoSupport implements  HelloNamedParameterJdbcDaoSupport {

     public void saveUser(User user) {  Map parameters = new HashMap();  parameters.put("username", user.getUsername());  parameters.put("password", user.getPassword());  this.getNamedParameterJdbcTemplate().update(USER_INERT, parameters); }  private static final String USER_INERT = "insert into user (username,password) values (:username, :password)";

    }

     

     

     

    package cn.partner4java.daosupport.impl;

    import java.sql.ResultSet;import java.sql.SQLException;import java.util.HashMap;import java.util.List;import java.util.Map;

    import org.springframework.jdbc.core.simple.ParameterizedRowMapper;import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;

    import cn.partner4java.bean.User;import cn.partner4java.daosupport.HelloSimpleJdbcDaoSupport;

    public class HelloSimpleJdbcDaoSupportBean extends SimpleJdbcDaoSupport  implements HelloSimpleJdbcDaoSupport {

     public void saveUser(User user) {  Map parameters = new HashMap();  parameters.put("username", user.getUsername());  parameters.put("password", user.getPassword());  //下面两种都可以  this.getSimpleJdbcTemplate().update(USER_INERT, parameters);//  this.getSimpleJdbcTemplate().update(USER_INSERT,  user.getUsername(), user.getPassword()); }  private static final String USER_INERT = "insert into user (username,password) values (:username, :password)"; private static final String USER_INSERT = "insert into user (username, password) values (?,?)";   public User getUserById(int id) {  List<User> users = this.getSimpleJdbcTemplate().query(USER_SELECT,     new ParameterizedRowMapper<User>() {     public User mapRow(ResultSet rs, int rowNum) throws SQLException {      User user = new User();      user.setId(rs.getInt(1));      user.setUsername(rs.getString(2));      user.setPassword(rs.getString(3));      return user;     }  }, id);  return users.size() > 0 ? (User)users.get(0):null; }  private static final String USER_SELECT = "select id,username,password from user where id = ?";

    }

     

     

     

    ----

    测试一下

    package cn.partner4java.daosupport.junit;

    import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;

    import cn.partner4java.bean.User;import cn.partner4java.daosupport.HelloJdbcDaoSupport;import junit.framework.TestCase;

    public class HelloJdbcDaoSupportBeanTest extends TestCase { private HelloJdbcDaoSupport helloJdbcDaoSupport;  @Override protected void setUp() throws Exception {  ApplicationContext ac = new ClassPathXmlApplicationContext("beans-jdbcdaosupport.xml");  helloJdbcDaoSupport = (HelloJdbcDaoSupport) ac.getBean("helloJdbcDaoSupport"); }  public void testSaveUser(){  User user = new User();  user.setUsername("心烦鸟");  user.setPassword("123");  helloJdbcDaoSupport.saveUser(user); }  public void testGetUserById(){  System.out.println(helloJdbcDaoSupport.getUserById(1)); }  }

     

     

     

     

     

     

    package cn.partner4java.daosupport.junit;

    import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;

    import cn.partner4java.bean.User;import cn.partner4java.daosupport.HelloNamedParameterJdbcDaoSupport;import junit.framework.TestCase;

    public class HelloNamedParameterJdbcDaoSupportBeanTest extends TestCase { private HelloNamedParameterJdbcDaoSupport helloNamedParameterJdbcDaoSupport;

     @Override protected void setUp() throws Exception {  super.setUp();  ApplicationContext ac = new ClassPathXmlApplicationContext("beans-jdbcdaosupport.xml");  helloNamedParameterJdbcDaoSupport = (HelloNamedParameterJdbcDaoSupport) ac.getBean("helloNamedParameterJdbcDaoSupport"); }

     public void testSaveUser(){  User user = new User();  user.setUsername("面霸");  user.setPassword("123");  helloNamedParameterJdbcDaoSupport.saveUser(user); }  }

     

     

    package cn.partner4java.daosupport.junit;

    import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;

    import cn.partner4java.bean.User;import cn.partner4java.daosupport.HelloSimpleJdbcDaoSupport;import junit.framework.TestCase;

    public class HelloSimpleJdbcDaoSupportBeanTest extends TestCase { private HelloSimpleJdbcDaoSupport helloSimpleJdbcDaoSupport;  @Override protected void setUp() throws Exception {  ApplicationContext ac = new ClassPathXmlApplicationContext("beans-jdbcdaosupport.xml");  helloSimpleJdbcDaoSupport = (HelloSimpleJdbcDaoSupport) ac.getBean("helloSimpleJdbcDaoSupport"); }  public void testSaveUser(){  User user = new User();  user.setUsername("心烦鸟");  user.setPassword("123");  helloSimpleJdbcDaoSupport.saveUser(user); }  public void testGetUserById(){  System.out.println(helloSimpleJdbcDaoSupport.getUserById(2)); } }

     

     

     

     

     

     

     

     

    最新回复(0)