使用JDBC模板

JdbcTemplate:Spring里最基础的JDBC模板,利用JDBC和简单的索引参数查询提供对数据库的简单访问。并提供RowMapper实现半自动化数据库数据 bean的转化。
NameParameterJdbcTemplate:能够在执行查询时把值绑定到SQL里的命名参数,而不是索引参数。
SimpleJdbcTemplate:利用Java5的特性,比如自动装箱、通用(generic)和可变参数列表来简化JDBC模板的使用。

用一下:
  1. <?xml version="1.0"encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"
  4. xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"
  5. xmlns:jee="http://www.springframework.org/schema/jee"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context-2.5.xsd
  10. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
  11. http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
  12. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
  13. <importresource="classpath:bean-jdbc.xml"/>
  14. <!--
  15. JdbcTemplate:Spring里最基础的JDBC模板,利用JDBC和简单的索引参数查询提供对数据库的简单访问。并提供RowMapper实现半自动化数据库数据 bean的转化。
  16. NameParameterJdbcTemplate:能够在执行查询时把值绑定到SQL里的命名参数,而不是索引参数。
  17. SimpleJdbcTemplate:利用Java5的特性,比如自动装箱、通用(generic)和可变参数列表来简化JDBC模板的使用。
  18. -->
  19. <bean id="jdbcTemplate"class="org.springframework.jdbc.core.JdbcTemplate">
  20. <property name="dataSource"ref="dataSource"></property>
  21. </bean>
  22. <bean id="namedParameterJdbcTemplate"class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
  23. <constructor-arg ref="dataSource"/>
  24. </bean>
  25. <bean id="simpleJdbcTemplate"class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate">
  26. <constructor-arg ref="dataSource"/>
  27. </bean>
  28. <bean id="helloJdbcTemplate"class="cn.partner4java.template.impl.HelloJdbcTemplateBean">
  29. <property name="jdbcTemplate"ref="jdbcTemplate"></property>
  30. </bean>
  31. <bean id="helloNamedParameterJdbcTemplate"class="cn.partner4java.template.impl.HelloNamedParameterJdbcTemplateBean">
  32. <property name="namedParameterJdbcTemplate"ref="namedParameterJdbcTemplate"/>
  33. </bean>
  34. <bean id="helloSimpleJdbcTemplate"class="cn.partner4java.template.impl.HelloSimpleJdbcTemplateBean">
  35. <property name="simpleJdbcTemplate"ref="simpleJdbcTemplate"/>
  36. </bean>
  37. </beans>

---
"jdbcTemplate":
  1. packagecn.partner4java.template;
  2. importcn.partner4java.bean.User;
  3. /**
  4. * JdbcTemplate 测试
  5. * @author wangchanglong
  6. *
  7. */
  8. publicinterfaceHelloJdbcTemplate {
  9. /**
  10. * 保存测试
  11. * @param user
  12. */
  13. publicvoidsaveUser(User user);
  14. /**
  15. * 获取
  16. * @param id 索引
  17. * @return
  18. */
  19. publicUser getUserById(intid);
  20. }
  1. packagecn.partner4java.template.impl;
  2. importjava.sql.ResultSet;
  3. importjava.sql.SQLException;
  4. importjava.util.List;
  5. importorg.springframework.jdbc.core.JdbcTemplate;
  6. importorg.springframework.jdbc.core.RowMapper;
  7. importcn.partner4java.bean.User;
  8. importcn.partner4java.template.HelloJdbcTemplate;
  9. /**
  10. * JdbcTemplate 测试
  11. * @author wangchanglong
  12. *
  13. */
  14. publicclassHelloJdbcTemplateBeanimplementsHelloJdbcTemplate {
  15. privateJdbcTemplate jdbcTemplate;
  16. publicvoidsetJdbcTemplate(JdbcTemplate jdbcTemplate) {
  17. this.jdbcTemplate = jdbcTemplate;
  18. }
  19. publicUser getUserById(intid) {
  20. List users = jdbcTemplate.query(USER_SELECT,newObject[]{id},newRowMapper() {
  21. publicObject mapRow(ResultSet rs,introwNum)throwsSQLException {
  22. User user =newUser();
  23. user.setId(rs.getInt(1));
  24. user.setUsername(rs.getString(2));
  25. user.setPassword(rs.getString(3));
  26. returnuser;
  27. }
  28. }) ;
  29. returnusers.size() >0? (User)users.get(0):null;
  30. }
  31. privatestaticfinalString USER_SELECT ="select id,username,password from user where id = ?";
  32. publicvoidsaveUser(User user) {
  33. jdbcTemplate.update(USER_INSERT,newObject[] {user.getUsername(),user.getPassword()});
  34. }
  35. privatestaticfinalString USER_INSERT ="insert into user (username, password) values (?,?)";
  36. }
  1. packagecn.partner4java.template.junit;
  2. importorg.springframework.context.ApplicationContext;
  3. importorg.springframework.context.support.ClassPathXmlApplicationContext;
  4. importcn.partner4java.bean.User;
  5. importcn.partner4java.template.HelloJdbcTemplate;
  6. importjunit.framework.TestCase;
  7. publicclassHelloJdbcTemplateBeanTestextendsTestCase {
  8. privateHelloJdbcTemplate helloJdbcTemplate;
  9. @Override
  10. protectedvoidsetUp()throwsException {
  11. ApplicationContext ac =newClassPathXmlApplicationContext("beans-jdbctemplate.xml");
  12. helloJdbcTemplate = (HelloJdbcTemplate) ac.getBean("helloJdbcTemplate");
  13. }
  14. publicvoidtestSaveUser(){
  15. User user =newUser();
  16. user.setUsername("心烦鸟");
  17. user.setPassword("123");
  18. helloJdbcTemplate.saveUser(user);
  19. }
  20. publicvoidtestGetUserById(){
  21. System.out.println(helloJdbcTemplate.getUserById(1));
  22. }
  23. }

-----
namedParameterJdbcTemplate:
  1. packagecn.partner4java.template;
  2. importcn.partner4java.bean.User;
  3. /**
  4. * 测试 NamedParameterJdbcTemplate
  5. * @author wangchanglong
  6. *
  7. */
  8. publicinterfaceHelloNamedParameterJdbcTemplate {
  9. publicvoidsaveUser(User user);
  10. }
  1. packagecn.partner4java.template.impl;
  2. importjava.util.HashMap;
  3. importjava.util.Map;
  4. importorg.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
  5. importcn.partner4java.bean.User;
  6. importcn.partner4java.template.HelloNamedParameterJdbcTemplate;
  7. /**
  8. * 测试 NamedParameterJdbcTemplate
  9. * @author wangchanglong
  10. *
  11. */
  12. publicclassHelloNamedParameterJdbcTemplateBeanimplements
  13. HelloNamedParameterJdbcTemplate {
  14. privateNamedParameterJdbcTemplate namedParameterJdbcTemplate;
  15. publicvoidsetNamedParameterJdbcTemplate(
  16. NamedParameterJdbcTemplate namedParameterJdbcTemplate) {
  17. this.namedParameterJdbcTemplate = namedParameterJdbcTemplate;
  18. }
  19. publicvoidsaveUser(User user) {
  20. Map parameters =newHashMap();
  21. parameters.put("username", user.getUsername());
  22. parameters.put("password", user.getPassword());
  23. namedParameterJdbcTemplate.update(USER_INERT, parameters);
  24. }
  25. privatestaticfinalString USER_INERT ="insert into user (username,password) values (:username, :password)";
  26. }
  1. packagecn.partner4java.template.junit;
  2. importorg.springframework.context.ApplicationContext;
  3. importorg.springframework.context.support.ClassPathXmlApplicationContext;
  4. importcn.partner4java.bean.User;
  5. importcn.partner4java.template.HelloNamedParameterJdbcTemplate;
  6. importjunit.framework.TestCase;
  7. publicclassHelloNamedParameterJdbcTemplateBeanTestextendsTestCase {
  8. privateHelloNamedParameterJdbcTemplate helloNamedParameterJdbcTemplate;
  9. @Override
  10. protectedvoidsetUp()throwsException {
  11. super.setUp();
  12. ApplicationContext ac =newClassPathXmlApplicationContext("beans-jdbctemplate.xml");
  13. helloNamedParameterJdbcTemplate = (HelloNamedParameterJdbcTemplate) ac.getBean("helloNamedParameterJdbcTemplate");
  14. }
  15. publicvoidtestSaveUser(){
  16. User user =newUser();
  17. user.setUsername("面霸");
  18. user.setPassword("123");
  19. helloNamedParameterJdbcTemplate.saveUser(user);
  20. }
  21. }

--------
simpleJdbcTemplate:
  1. packagecn.partner4java.template;
  2. importcn.partner4java.bean.User;
  3. /**
  4. * 测试 simpleJdbcTemplate
  5. * @author wangchanglong
  6. *
  7. */
  8. publicinterfaceHelloSimpleJdbcTemplate {
  9. publicvoidsaveUser(User user);
  10. }
  11. packagecn.partner4java.template.impl;
  12. importjava.util.HashMap;
  13. importjava.util.Map;
  14. importorg.springframework.jdbc.core.simple.SimpleJdbcTemplate;
  15. importcn.partner4java.bean.User;
  16. importcn.partner4java.template.HelloSimpleJdbcTemplate;
  17. /**
  18. * 测试 simpleJdbcTemplate
  19. * @author wangchanglong
  20. *
  21. */
  22. publicclassHelloSimpleJdbcTemplateBeanimplementsHelloSimpleJdbcTemplate {
  23. privateSimpleJdbcTemplate simpleJdbcTemplate;
  24. publicvoidsetSimpleJdbcTemplate(SimpleJdbcTemplate simpleJdbcTemplate) {
  25. this.simpleJdbcTemplate = simpleJdbcTemplate;
  26. }
  27. publicvoidsaveUser(User user) {
  28. Map parameters =newHashMap();
  29. parameters.put("username", user.getUsername());
  30. parameters.put("password", user.getPassword());
  31. //下面两种都可以
  32. simpleJdbcTemplate.update(USER_INERT, parameters);
  33. //simpleJdbcTemplate.update(USER_INSERT,user.getUsername(), user.getPassword());
  34. }
  35. privatestaticfinalString USER_INERT ="insert into user (username,password) values (:username, :password)";
  36. privatestaticfinalString USER_INSERT ="insert into user (username, password) values (?,?)";
  37. }
  1. packagecn.partner4java.template.junit;
  2. importorg.springframework.context.ApplicationContext;
  3. importorg.springframework.context.support.ClassPathXmlApplicationContext;
  4. importcn.partner4java.bean.User;
  5. importcn.partner4java.template.HelloSimpleJdbcTemplate;
  6. importjunit.framework.TestCase;
  7. publicclassHelloSimpleJdbcTemplateBeanTestextendsTestCase {
  8. privateHelloSimpleJdbcTemplate helloSimpleJdbcTemplate;
  9. @Override
  10. protectedvoidsetUp()throwsException {
  11. ApplicationContext ac =newClassPathXmlApplicationContext("beans-jdbctemplate.xml");
  12. helloSimpleJdbcTemplate = (HelloSimpleJdbcTemplate) ac.getBean("helloSimpleJdbcTemplate");
  13. }
  14. publicvoidtestSaveUser(){
  15. User user =newUser();
  16. user.setUsername("心烦鸟");
  17. user.setPassword("123");
  18. helloSimpleJdbcTemplate.saveUser(user);
  19. }
  20. }

----
用法大体上如上
基本上就是Simple包含了,Name和Template,不过也不是所有的地方都可以用Simple哦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值