使用JDBC模板

    技术2025-07-08  19

    JdbcTemplate:Spring里最基础的JDBC模板,利用JDBC和简单的索引参数查询提供对数据库的简单访问。并提供RowMapper实现半自动化数据库数据 bean的转化。  NameParameterJdbcTemplate:能够在执行查询时把值绑定到SQL里的命名参数,而不是索引参数。  SimpleJdbcTemplate:利用Java5的特性,比如自动装箱、通用(generic)和可变参数列表来简化JDBC模板的使用。  用一下:  view plain copy to clipboard print ? <?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" />   <!--      JdbcTemplate:Spring里最基础的JDBC模板,利用JDBC和简单的索引参数查询提供对数据库的简单访问。并提供RowMapper实现半自动化数据库数据 bean的转化。     NameParameterJdbcTemplate:能够在执行查询时把值绑定到SQL里的命名参数,而不是索引参数。     SimpleJdbcTemplate:利用Java5的特性,比如自动装箱、通用(generic)和可变参数列表来简化JDBC模板的使用。     -->   <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">     <property name="dataSource" ref="dataSource"></property>   </bean>      <bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">     <constructor-arg ref="dataSource" />    </bean>      <bean id="simpleJdbcTemplate" class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate">     <constructor-arg ref="dataSource" />    </bean>      <bean id="helloJdbcTemplate" class="cn.partner4java.template.impl.HelloJdbcTemplateBean">     <property name="jdbcTemplate" ref="jdbcTemplate"></property>   </bean>      <bean id="helloNamedParameterJdbcTemplate" class="cn.partner4java.template.impl.HelloNamedParameterJdbcTemplateBean">     <property name="namedParameterJdbcTemplate" ref="namedParameterJdbcTemplate"/>   </bean>      <bean id="helloSimpleJdbcTemplate" class="cn.partner4java.template.impl.HelloSimpleJdbcTemplateBean">     <property name="simpleJdbcTemplate" ref="simpleJdbcTemplate"/>   </bean>      </beans>       ---  "jdbcTemplate": view plain copy to clipboard print ? package cn.partner4java.template;   import cn.partner4java.bean.User;   /**  * JdbcTemplate 测试  * @author wangchanglong  *  */   public interface HelloJdbcTemplate {   /**    * 保存测试    * @param user    */   public void saveUser(User user);      /**    * 获取    * @param id 索引    * @return    */   public User getUserById(int id);   }         view plain copy to clipboard print ? package cn.partner4java.template.impl;   import java.sql.ResultSet;   import java.sql.SQLException;   import java.util.List;   import org.springframework.jdbc.core.JdbcTemplate;   import org.springframework.jdbc.core.RowMapper;   import cn.partner4java.bean.User;   import cn.partner4java.template.HelloJdbcTemplate;   /**  * JdbcTemplate 测试  * @author wangchanglong  *  */   public class HelloJdbcTemplateBean implements HelloJdbcTemplate {   private JdbcTemplate jdbcTemplate;   public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {     this.jdbcTemplate = jdbcTemplate;   }   public User getUserById(int id) {     List users = jdbcTemplate.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) {     jdbcTemplate.update(USER_INSERT, new Object[] {user.getUsername(),user.getPassword()});   }      private static final String USER_INSERT = "insert into user (username, password) values (?,?)";      }   view plain copy to clipboard print ? package cn.partner4java.template.junit;   import org.springframework.context.ApplicationContext;   import org.springframework.context.support.ClassPathXmlApplicationContext;   import cn.partner4java.bean.User;   import cn.partner4java.template.HelloJdbcTemplate;   import junit.framework.TestCase;      public class HelloJdbcTemplateBeanTest extends TestCase {   private HelloJdbcTemplate helloJdbcTemplate;      @Override   protected void setUp() throws Exception {     ApplicationContext ac = new ClassPathXmlApplicationContext("beans-jdbctemplate.xml");     helloJdbcTemplate = (HelloJdbcTemplate) ac.getBean("helloJdbcTemplate");   }      public void testSaveUser(){     User user = new User();     user.setUsername("心烦鸟");     user.setPassword("123");     helloJdbcTemplate.saveUser(user);   }      public void testGetUserById(){     System.out.println(helloJdbcTemplate.getUserById(1));   }         }      -----  namedParameterJdbcTemplate:  view plain copy to clipboard print ? package cn.partner4java.template;   import cn.partner4java.bean.User;   /**  * 测试 NamedParameterJdbcTemplate  * @author wangchanglong  *  */   public interface HelloNamedParameterJdbcTemplate {   public void saveUser(User user);   }      view plain copy to clipboard print ? package cn.partner4java.template.impl;   import java.util.HashMap;   import java.util.Map;   import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;   import cn.partner4java.bean.User;   import cn.partner4java.template.HelloNamedParameterJdbcTemplate;   /**  * 测试 NamedParameterJdbcTemplate  * @author wangchanglong  *  */   public class HelloNamedParameterJdbcTemplateBean implements     HelloNamedParameterJdbcTemplate {   private NamedParameterJdbcTemplate namedParameterJdbcTemplate;   public void setNamedParameterJdbcTemplate(      NamedParameterJdbcTemplate namedParameterJdbcTemplate) {     this.namedParameterJdbcTemplate = namedParameterJdbcTemplate;   }   public void saveUser(User user) {     Map parameters = new HashMap();     parameters.put("username", user.getUsername());     parameters.put("password", user.getPassword());     namedParameterJdbcTemplate.update(USER_INERT, parameters);   }      private static final String USER_INERT = "insert into user (username,password) values (:username, :password)";   }      view plain copy to clipboard print ? package cn.partner4java.template.junit;   import org.springframework.context.ApplicationContext;   import org.springframework.context.support.ClassPathXmlApplicationContext;   import cn.partner4java.bean.User;   import cn.partner4java.template.HelloNamedParameterJdbcTemplate;   import junit.framework.TestCase;   public class HelloNamedParameterJdbcTemplateBeanTest extends TestCase {   private HelloNamedParameterJdbcTemplate helloNamedParameterJdbcTemplate;   @Override   protected void setUp() throws Exception {     super.setUp();     ApplicationContext ac = new ClassPathXmlApplicationContext("beans-jdbctemplate.xml");     helloNamedParameterJdbcTemplate = (HelloNamedParameterJdbcTemplate) ac.getBean("helloNamedParameterJdbcTemplate");   }   public void testSaveUser(){     User user = new User();     user.setUsername("面霸");     user.setPassword("123");     helloNamedParameterJdbcTemplate.saveUser(user);   }         }      --------  simpleJdbcTemplate:  view plain copy to clipboard print ? package cn.partner4java.template;   import cn.partner4java.bean.User;   /**  * 测试 simpleJdbcTemplate  * @author wangchanglong  *  */   public interface HelloSimpleJdbcTemplate {   public void saveUser(User user);   }      package cn.partner4java.template.impl;   import java.util.HashMap;   import java.util.Map;   import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;   import cn.partner4java.bean.User;   import cn.partner4java.template.HelloSimpleJdbcTemplate;   /**  * 测试 simpleJdbcTemplate  * @author wangchanglong  *  */   public class HelloSimpleJdbcTemplateBean implements HelloSimpleJdbcTemplate {   private SimpleJdbcTemplate simpleJdbcTemplate;   public void setSimpleJdbcTemplate(SimpleJdbcTemplate simpleJdbcTemplate) {     this.simpleJdbcTemplate = simpleJdbcTemplate;   }      public void saveUser(User user) {     Map parameters = new HashMap();     parameters.put("username", user.getUsername());     parameters.put("password", user.getPassword());     //下面两种都可以     simpleJdbcTemplate.update(USER_INERT, parameters);   //  simpleJdbcTemplate.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 (?,?)";   }      view plain copy to clipboard print ? package cn.partner4java.template.junit;   import org.springframework.context.ApplicationContext;   import org.springframework.context.support.ClassPathXmlApplicationContext;   import cn.partner4java.bean.User;   import cn.partner4java.template.HelloSimpleJdbcTemplate;   import junit.framework.TestCase;      public class HelloSimpleJdbcTemplateBeanTest extends TestCase {   private HelloSimpleJdbcTemplate helloSimpleJdbcTemplate;      @Override   protected void setUp() throws Exception {     ApplicationContext ac = new ClassPathXmlApplicationContext("beans-jdbctemplate.xml");     helloSimpleJdbcTemplate = (HelloSimpleJdbcTemplate) ac.getBean("helloSimpleJdbcTemplate");   }      public void testSaveUser(){     User user = new User();     user.setUsername("心烦鸟");     user.setPassword("123");     helloSimpleJdbcTemplate.saveUser(user);   }            }      ----  用法大体上如上  基本上就是Simple包含了,Name和Template,不过也不是所有的地方都可以用Simple哦 

    最新回复(0)