使用JDBC的DAO支持类

用了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));
 }
 
}

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值