一.JdbcTemplate介绍:

  为了使 JDBC 更加易于使用,Spring 在 JDBCAPI 上定义了一个抽象层, 以此建立一个JDBC存取框架,Spring Boot Spring Data-JPA。

  作为 SpringJDBC 框架的核心, JDBC 模板的设计目的是为不同类型的JDBC操作提供模板方法. 每个模板方法都能控制整个过程,并允许覆盖过程中的特定任务。

通过这种方式,可以在尽可能保留灵活性的情况下,将数据库存取的工作量降到最低。

二、JdbcTemplate 方法介绍

  • execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;Execute、executeQuery、executeUpdate
  • update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句 SQL SERVCER(GO SQL语句 GO) ;
  • query方法及queryForXXX方法:用于执行查询相关语句;
  • call方法:用于执行存储过程、函数相关语句。

三、使用JdbcTemplate方式实现数据库编程

  (一)、配置方式

  1.引入依赖

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
  <version>5.1.5.RELEASE</version>
</dependency>
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.32</version>
</dependency>

  2.实体类

public class StuInfo {
    private Integer id;
    private String name;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "StuInfo{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }

  3.创建数据库连接配置文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/stutest?useUniCode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=123

  4.搭建分层架构

    Dao层实现类:

public class StuDao extends JdbcDaoSupport {//继承JdbcDaoSupport类,里面封装了JdbcTemplate模板
     /*new RowMapper<StuInfo>() {
        @Override
        public StuInfo mapRow(ResultSet resultSet, int i) throws SQLException {
            StuInfo stu=new StuInfo();
            stu.setId(resultSet.getInt("id"));
            stu.setName(resultSet.getString("name"));
            return stu;
        }
    }*/

        //查询所有信息
        public List<StuInfo> getStu(){//这里运用自动映射的方式处理结果集,上面注释的方式为手动关联
            List<StuInfo> lists=this.getJdbcTemplate().query("select * from stu_info",  new BeanPropertyRowMapper(StuInfo.class));
            return  lists;
        }
}

    源码分析:

 5.Spring配置文件

<!--导入jdbc配置文件-->
    <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
   <!-- 数据源配置-->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${jdbc.driver}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    </bean>

    <bean id="stuDao" class="cn.spring.jdbcTemplate.mapper.StuDao">
<!-- 配置dao
        * dao 继承 JdbcDaoSupport,之后只需要注入数据源,底层将自动创建模板-->
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!--包扫描仪-->
    <context:component-scan base-package="cn.spring.jdbcTemplate"></context:component-scan>

  因为继承了JdbcTemplate,所以此时直接在Dao层注入数据源,否则:

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
 <bean id="stuDao" class="cn.spring.jdbcTemplate.mapper.StuDao">
        <property name="jdbcTemplate" ref="jdbcTemplate"></property>
    </bean>

  6.测试

ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        StuService stuServiceImpl = (StuService) context.getBean("StuService");
        List<StuInfo> stu = stuServiceImpl.getStu();
        //输出数据
        for (StuInfo stuInfo : stu) {
            System.out.println(stuInfo.getId() + "====" + stuInfo.getName());

        }

  (二)、注解方式

    这里只做两点区别:

  Dao层实现类:

@Repository
public class UserDaoImpl implements UserDao{

    @Resource//使用注解方式注入JdbcTemplate
    private JdbcTemplate jdbcTemplate;

    @Override
    public int addMoney(double money,Integer id) {
        int update = jdbcTemplate.update("update  user set money=money+? where id=?", money, id);
        return update;
    }

  配置文件:

 <!--设置JdbcTemplate模板-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

Spring——JdbcTemplate的更多相关文章

  1. (转)Spring JdbcTemplate 方法详解

    Spring JdbcTemplate方法详解 文章来源:http://blog.csdn.net/dyllove98/article/details/7772463 JdbcTemplate主要提供 ...

  2. [转]Spring JdbcTemplate 查询分页

    原文:http://blog.csdn.net/xiaofanku/article/details/4280128 现在进行的项目由于数据库的遗留原因(设计的不堪入目)不能用hibernate.所以用 ...

  3. spring jdbcTemplate query

    1. spring jdbcTemplate query需要实现mapRow方法 package com.cdv.apolloagent.jdbc.dao.impl; import java.sql. ...

  4. Spring JdbcTemplate 的使用与学习(转)

    紧接上一篇 (JdbcTemplate是线程安全的,因此可以配置一个简单的JdbcTemplate实例,将这个共享的实例注入到多个DAO类中.辅助的文档) Spring DAO支持 http://ww ...

  5. Spring JdbcTemplate的queryForList(String sql , Class<T> elementType)易错使用--转载

    原文地址: http://blog.csdn.net/will_awoke/article/details/12617383 一直用ORM,今天用JdbcTemplate再次抑郁了一次. 首先看下这个 ...

  6. spring jdbcTemplate源码剖析

    本文浅析 spring jdbcTemplate 源码,主要是学习其设计精髓.模板模式.巧妙的回调 一.jdbcTemplate 类结构 ①.JdbcOperations : 接口定义了方法,如 &l ...

  7. 使用Spring JDBCTemplate简化JDBC的操作

    使用Spring JDBCTemplate简化JDBC的操作 接触过JAVA WEB开发的朋友肯定都知道Hibernate框架,虽然不否定它的强大之处,但个人对它一直无感,总感觉不够灵活,太过臃肿了. ...

  8. Apache Phoenix JDBC 驱动和Spring JDBCTemplate的集成

    介绍:Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排运行以生成标准的JDBC结果集. 直接使用HBase API.协同处理器与自己定义过滤器.对于简单查询来说,其性能 ...

  9. Spring JdbcTemplate用法整理

    Spring JdbcTemplate用法整理: xml: <?xml version="1.0" encoding="UTF-8"?> <b ...

  10. SpringJdbc持久层封装,Spring jdbcTemplate封装,springJdbc泛型Dao,Spring baseDao封装

    SpringJdbc持久层封装,Spring jdbcTemplate封装,springJdbc泛型Dao,Spring baseDao封装 >>>>>>>& ...

随机推荐

  1. centos7上搭建NFS的实践

    NFS 即network file system 可用于向k8s集群提供持久存储 最小化安装centos后  把网卡设置好了后 1.关闭防火墙 [root@NFS ~]# systemctl stop ...

  2. javascript——加强for循环 和Java中的加强for循环的区别

    javascript中获得的是下标      in var id=[4,5,6]; for (var index in id) { console.log(id[index]); } Java中获得的 ...

  3. Upload Image to .NET Core 2.1 API

    原文地址:https://www.codeproject.com/Articles/1256591/Upload-Image-to-NET-Core-2-1-API using System; usi ...

  4. API工具下载地址记录一下

    java 1.6 帮助文档中文链接:http://download.csdn.net/detail/qw599186875/9608735 中文 – 谷歌版在线版: https://blog.fond ...

  5. kbmMW均衡负载与容灾(1)

    kbmMW为均衡负载与容灾提供了很好的机制,支持多种实现方式,现在看看最简单的一种,客户端控制的容灾和简单的负载均衡. 现在,我们将kbmMWServer部署到不同的服务器,或者在同一服务器部署多份实 ...

  6. Python学习计划-首篇

    概述 Python语言这几年的热度一直持续上升,有多火也不用我再介绍了,光从近几年编程语言排行榜的上升热度就能看出,因此我也计划学习一下python语言,并且将每次的学习收获记录下来.一方面是记录下来 ...

  7. 转载--Java中的PO、DO、DTO、 VO的概念

    Java中的PO.DO.DTO. VO的概念 写的很清晰,学习了.

  8. 自己实现strcat函数

    问题:自己实现一个strcat_s函数,要和C语言库函数的strcat函数完成同样的功能. (1) 函数原型 char *strcat(char *dest, const char *src); (2 ...

  9. 布隆算法(BloomFilter)

          BloomFilter算法,是一种大数据排重算法.在一个数据量很大的集合里,能准确断定一个对象不在集合里:判断一个对象有可能在集合里,而且占用的空间不大.它不适合那种要求准确率很高的情况, ...

  10. python读取csv文件的某一列或某几列

    import csvimport pandas as pd with open('D:\Data\新建文件夹\list3.2.csv','r') as csvfile: reader = csv.re ...