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