微信公众号:compassblog

欢迎关注、转发,互相学习,共同进步!

有任何问题,请后台留言联系!

1、Spring框架整合 DAO 模板

  • JDBC:org.springframework.jdbc.core.JdbcTemplate
  • Hibernate3.0:org.springframework.orm.hibernate3.HibernateTemplate
  • MyBatis:org.springframework.orm.ibatis.SqlMapClientTemplate
  • JPA:org.springframework.orm.jpa.JpaTemplate

2、JdbcTemplate 模板整合 JDBC 实例

(1)、新建web项目,导入所需要的 jar 包,如下图所示:

(2)、在 MySQL 数据库 JdbcTemplateDB 中新建数据表 t_user, 如下图所示:

(3)、新建一个 bean 类,具体代码如下:

User.java

  1. package com.spring.bean;
  2. public class User {
  3. private Integer id;
  4. private String name;
  5. public Integer getId() {
  6. return id;
  7. }
  8. public void setId(Integer id) {
  9. this.id = id;
  10. }
  11. public String getName() {
  12. return name;
  13. }
  14. public void setName(String name) {
  15. this.name = name;
  16. }
  17. @Override
  18. public String toString() {
  19. return "User [id=" + id + ", name=" + name + "]";
  20. }
  21. }

(4)、书写 DAO 接口,代码如下:

UserDao.java

  1. package com.spring.dao;
  2. import java.util.List;
  3. import com.spring.bean.User;
  4. public interface UserDao {
  5. //增
  6. void save(User u);
  7. //删
  8. void delete(Integer id);
  9. //改
  10. void update(User u);
  11. //查
  12. User getById(Integer id);
  13. //查
  14. int getTotalCount();
  15. //查
  16. List<User> getAll();
  17. }

(5)、书写一个类实现 DAO 接口,代码如下:

UserDaoImpl.java

  1. package com.spring.dao;
  2. import java.sql.ResultSet;
  3. import java.sql.SQLException;
  4. import java.util.List;
  5. import org.springframework.jdbc.core.RowMapper;
  6. import org.springframework.jdbc.core.support.JdbcDaoSupport;
  7. import com.spring.bean.User;
  8. //使用JDBC模板实现增删改查
  9. public class UserDaoImpl extends JdbcDaoSupport implements UserDao {
  10. public void save(User u) {
  11. String sql = "insert into t_user values(null,?) ";
  12. super.getJdbcTemplate().update(sql, u.getName());
  13. }
  14. public void delete(Integer id) {
  15. String sql = "delete from t_user where id = ? ";
  16. super.getJdbcTemplate().update(sql,id);
  17. }
  18. public void update(User u) {
  19. String sql = "update t_user set name = ? where id=? ";
  20. super.getJdbcTemplate().update(sql, u.getName(),u.getId());
  21. }
  22. public User getById(Integer id) {
  23. String sql = "select * from t_user where id = ? ";
  24. return super.getJdbcTemplate().queryForObject(sql,new RowMapper<User>(){
  25. public User mapRow(ResultSet rs, int arg1) throws SQLException {
  26. User u = new User();
  27. u.setId(rs.getInt("id"));
  28. u.setName(rs.getString("name"));
  29. return u;
  30. }}, id);
  31. }
  32. public int getTotalCount() {
  33. String sql = "select count(*) from t_user ";
  34. Integer count = super.getJdbcTemplate().queryForObject(sql, Integer.class);
  35. return count;
  36. }
  37. public List<User> getAll() {
  38. String sql = "select * from t_user ";
  39. List<User> list = super.getJdbcTemplate().query(sql, new RowMapper<User>(){
  40. public User mapRow(ResultSet rs, int arg1) throws SQLException {
  41. User u = new User();
  42. u.setId(rs.getInt("id"));
  43. u.setName(rs.getString("name"));
  44. return u;
  45. }});
  46. return list;
  47. }
  48. }

(6)、新建数据库驱动链接资源文件,代码如下:

db.properties

  1. jdbc.jdbcUrl=jdbc:mysql:///JdbcTemplateDB
  2. jdbc.driverClass=com.mysql.jdbc.Driver
  3. jdbc.user=root
  4. jdbc.password=root

(7)、书写 Spring 配置文件,代码如下:

applicationContext.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd ">
  3. <!-- 指定spring读取db.properties配置 -->
  4. <context:property-placeholder location="classpath:db.properties" />
  5. <!-- 1.将数据库连接池放入spring容器 -->
  6. <bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" >
  7. <property name="jdbcUrl" value="${jdbc.jdbcUrl}" ></property>
  8. <property name="driverClass" value="${jdbc.driverClass}" ></property>
  9. <property name="user" value="${jdbc.user}" ></property>
  10. <property name="password" value="${jdbc.password}" ></property>
  11. </bean>
  12. <!-- 2.将JDBCTemplate放入spring容器 -->
  13. <bean name="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" >
  14. <property name="dataSource" ref="dataSource" ></property>
  15. </bean>
  16. <!-- 3.将UserDao放入spring容器 -->
  17. <bean name="userDao" class="com.spring.dao.UserDaoImpl" >
  18. <property name="dataSource" ref="dataSource" ></property>
  19. </bean>
  20. </beans>

(8)、新建测试类进行测试,代码如下:

TestDemo.java

  1. package com.spring.test;
  2. import org.junit.Test;
  3. import org.junit.runner.RunWith;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.jdbc.core.JdbcTemplate;
  6. import org.springframework.test.context.ContextConfiguration;
  7. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  8. import com.mchange.v2.c3p0.ComboPooledDataSource;
  9. import com.spring.bean.User;
  10. import com.spring.dao.UserDao;
  11. //演示JDBC模板
  12. @RunWith(SpringJUnit4ClassRunner.class)
  13. @ContextConfiguration("classpath:applicationContext.xml")
  14. public class TestDemo {
  15. @Autowired
  16. private UserDao ud;
  17. @Test
  18. public void fun1() throws Exception{
  19. //1、准备连接池
  20. ComboPooledDataSource dataSource = new ComboPooledDataSource();
  21. dataSource.setDriverClass("com.mysql.jdbc.Driver");
  22. dataSource.setJdbcUrl("jdbc:mysql:///JdbcTemplateDB");
  23. dataSource.setUser("root");
  24. dataSource.setPassword("root");
  25. //2、创建JDBC模板对象
  26. JdbcTemplate jt = new JdbcTemplate();
  27. jt.setDataSource(dataSource);
  28. //3、书写sql语句,并执行
  29. String sql = "insert into t_user values(null,'rose') ";
  30. jt.update(sql);
  31. }
  32. @Test
  33. public void fun2() throws Exception{
  34. User u = new User();
  35. u.setName("tom");
  36. ud.save(u);
  37. }
  38. @Test
  39. public void fun3() throws Exception{
  40. User u = new User();
  41. u.setId(2);
  42. u.setName("jack");
  43. ud.update(u);
  44. }
  45. @Test
  46. public void fun4() throws Exception{
  47. ud.delete(2);
  48. }
  49. @Test
  50. public void fun5() throws Exception{
  51. System.out.println(ud.getTotalCount());
  52. }
  53. @Test
  54. public void fun6() throws Exception{
  55. System.out.println(ud.getById(1));
  56. }
  57. @Test
  58. public void fun7() throws Exception{
  59. System.out.println(ud.getAll());
  60. }
  61. }

(9)、配置依赖关系与使用图解:

注:部分知识源于网络,侵权联删除!

扫描关注微信公众号,了解更多

Spring 框架系列之 JDBC 整合实例的更多相关文章

  1. Spring框架系列(3) - 深入浅出Spring核心之控制反转(IOC)

    在Spring基础 - Spring简单例子引入Spring的核心中向你展示了IoC的基础含义,同时以此发散了一些IoC相关知识点; 本节将在此基础上进一步解读IOC的含义以及IOC的使用方式.@pd ...

  2. J2EE进阶(六)SSH框架工作流程项目整合实例讲解

    J2EE进阶(六)SSH框架工作流程项目整合实例讲解 请求流程 经过实际项目的进行,结合三大框架各自的运行机理可分析得出SSH整合框架的大致工作流程. 首先查看一下客户端的请求信息: 对于一个Web项 ...

  3. Spring框架系列(6) - Spring IOC实现原理详解之IOC体系结构设计

    在对IoC有了初步的认知后,我们开始对IOC的实现原理进行深入理解.本文将帮助你站在设计者的角度去看IOC最顶层的结构设计.@pdai Spring框架系列(6) - Spring IOC实现原理详解 ...

  4. Spring框架系列(7) - Spring IOC实现原理详解之IOC初始化流程

    上文,我们看了IOC设计要点和设计结构:紧接着这篇,我们可以看下源码的实现了:Spring如何实现将资源配置(以xml配置为例)通过加载,解析,生成BeanDefination并注册到IoC容器中的. ...

  5. Spring框架系列(8) - Spring IOC实现原理详解之Bean实例化(生命周期,循环依赖等)

    上文,我们看了IOC设计要点和设计结构:以及Spring如何实现将资源配置(以xml配置为例)通过加载,解析,生成BeanDefination并注册到IoC容器中的:容器中存放的是Bean的定义即Be ...

  6. Spring框架系列(11) - Spring AOP实现原理详解之Cglib代理实现

    我们在前文中已经介绍了SpringAOP的切面实现和创建动态代理的过程,那么动态代理是如何工作的呢?本文主要介绍Cglib动态代理的案例和SpringAOP实现的原理.@pdai Spring框架系列 ...

  7. Spring框架系列(12) - Spring AOP实现原理详解之JDK代理实现

    上文我们学习了SpringAOP Cglib动态代理的实现,本文主要是SpringAOP JDK动态代理的案例和实现部分.@pdai Spring框架系列(12) - Spring AOP实现原理详解 ...

  8. Spring框架系列(13) - SpringMVC实现原理之DispatcherServlet的初始化过程

    前文我们有了IOC的源码基础以及SpringMVC的基础,我们便可以进一步深入理解SpringMVC主要实现原理,包含DispatcherServlet的初始化过程和DispatcherServlet ...

  9. Spring框架系列之AOP思想

    微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.AOP概述 (1).什么是 AOP AOP 为 Aspect Oriented Progra ...

随机推荐

  1. POI--HSSFWorkbook类

    HSSFWorkbook类 要生成一个Workbook,需要用到HSSFWorkbook类文件.构造器如下: 现在我们使用2种方式来获得一个Workbook对象. 1,创建excel表 HSSFWor ...

  2. org.apache.catalina.util.DefaultAnnotationProcessor cannot be cast to org.apache.AnnotationProcessor

    这几天来公司,公司的SVN坏掉了,然后项目还比较大,是一个分布式的,然后同事就把项目发我了.我在myeclipse里面导入项目了,把相应的jar包也建了个人的library导入了项目,现在项目不报错了 ...

  3. Android Camera2采集摄像头原始数据并手动预览

    Android Camera2采集摄像头原始数据并手动预览 最近研究了一下android摄像头开发相关的技术,也看了Google提供的Camera2Basic调用示例,以及网上一部分代码,但都是在Te ...

  4. docker入门(二)容器与镜像的关系

    [编者的话]本文用图文并茂的方式介绍了容器.镜像的区别和Docker每个命令后面的技术细节,能够很好的帮助读者深入理解Docker. 这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(co ...

  5. 【转】CentOS 6.3(x86_32)下安装Oracle 10g R2

    一.硬件要求 1.内存 & swap Minimum: 1 GB of RAMRecommended: 2 GB of RAM or more 检查内存情况 # grep MemTotal / ...

  6. Oracle打印日历功能

    Oracle用SQL打印日历 1.1  打印当月日历 , D, NULL)) SUN, , D, NULL)) MON, , D, NULL)) TUE, , D, NULL)) WED, , D,  ...

  7. android adb shell and monkey 学习记录

    Monkey环境: android SDK and JDK SDK目录下的platform-tools和tools目录要配置环境变量 查看版本: ADB 的安装这里就不多说了,输入以下命令有如下提示就 ...

  8. BZOJ 3998: [TJOI2015]弦论 [后缀自动机 DP]

    3998: [TJOI2015]弦论 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 2152  Solved: 716[Submit][Status] ...

  9. C语言实现数据结构中的堆创建,堆排序

    #include "stdio.h"#include "stdlib.h"void swap(int *a,int *b)//交换两个数{int t;t=*a; ...

  10. VS2012以后版本MFC程序发布记录,支持XP

    ##概述 自从VS2012之后,增加了新的VC运行时库,而一般用户机器上不一定有对应的版本的运行时库,所以微软官方给出的方案是需要用户安装对应版本的VisualC++Redistributable P ...