Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spring JDBCTemplate使用方法

Spring JDBCTemplate使用方法

原创
作者头像
大学里的混子
修改于 2018-10-25 03:24:15
修改于 2018-10-25 03:24:15
1.1K00
代码可运行
举报
文章被收录于专栏:LeetCodeLeetCode
运行总次数:0
代码可运行

1. Customer 表

代码语言:sql
AI代码解释
复制
 CREATE TABLE `customer` (
  `CUST_ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `NAME` varchar(100) NOT NULL,
  `AGE` int(10) unsigned NOT NULL,
  PRIMARY KEY (`CUST_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

2.客户模型

代码语言:java
AI代码解释
复制
public class Customer {
    int custId;
    String name;
    int age;
    }

3.客户数据处理接口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public interface CustomerDAO {

    public void insert(Customer customer);
    public Customer findByCustomerId(int custId);
    public List<Customer> findAll();
    public int findTotalCustomer();
}

4.客户数据处理接口实现类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class JdbcCustomerDAO implements CustomerDAO {
    private DataSource dataSource;
    private JdbcTemplate jdbcTemplate;

    public JdbcTemplate getJdbcTemplate() {
        return jdbcTemplate;
    }

    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    @Override
    public void insert(Customer customer) {
        String sql = "Insert into customer"+"(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";
        jdbcTemplate = new JdbcTemplate(dataSource);
        jdbcTemplate.update(sql,new Object[]{customer.getCustId(),customer.getName(),customer.age});
    }

    @Override
    public Customer findByCustomerId(int custId) {
        jdbcTemplate = new JdbcTemplate(dataSource);
        String sql = "select * from customer where CUST_ID = ?";
        Customer customer = getJdbcTemplate().queryForObject(sql,new Object[]{custId},new BeanPropertyRowMapper<>(Customer.class));
        return customer;
    }

    @Override
    public List<Customer> findAll() {
         String sql = "select * from customer";
         jdbcTemplate = new JdbcTemplate(dataSource);
         List<Customer> customers = getJdbcTemplate().query(sql,new BeanPropertyRowMapper<>(Customer.class));
         return customers;
    }

    @Override
    public int findTotalCustomer() {
        String sql = "select count(*) from customer";
        jdbcTemplate = new JdbcTemplate(dataSource);
        int total  = getJdbcTemplate().queryForObject(sql,Integer.class);
        return total;
    }
}

说明:

  1. JdbcTemplate类的构造函数的参数DataSource 是数据源,配置所要连接的数据库
  2. 连接数据库需要导入包mysql-connector-java-5.1.47.jar
  3. For single insert statements, JdbcTemplate’s `insert method is good. But for multiple inserts, it’s better to use batchUpdate.
  4. Use ? for arguments to avoid SQL injection attacks by instructing JDBC to bind variables.
  5. batchUpdate适合于批量增、删、改操作;          update(…):使用于增、删、改操作;           execute():执行一个独立的sql语句,包括ddl语句;          queryForInt :查询出一个整数值(旧方法,现在取消了)

下面是xml的配置文件的主要内容。

代码语言:html
AI代码解释
复制
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="password" value="123456"/>
    <property name="username" value="root"/>
    <property name="url" value="jdbc:mysql://localhost:3306/spring4"/>
</bean>

<bean id="customerDao" class="SpringJDBC.JdbcCustomerDAO">
    <property name="dataSource" ref="dataSource"/>
</bean>

<bean id="customer" class="SpringJDBC.Customer" p:name="lvchao" p:age="23" p:custId="201872018"></bean>

5.官方文档的进一步理解

<https://docs.spring.io/spring/docs/5.1.1.RELEASE/spring-framework-reference/data-access.html#jdbc-JdbcTemplate>

5.1 querying(select)

The following query gets the number of rows in a relation:(查找总行数)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int rowCount = this.jdbcTemplate.queryForObject("select count(*) from t_actor", Integer.class);

The following query uses a bind variable:(通过一个变量查找对应的数据的条数)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int countOfActorsNamedJoe = this.jdbcTemplate.queryForObject(
        "select count(*) from t_actor where first_name = ?", Integer.class, "Joe");

The following query looks for a String:(通过一个变量查找对应的数据)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
String lastName = this.jdbcTemplate.queryForObject(
        "select last_name from t_actor where id = ?",
        new Object[]{1212L}, String.class);

5.2 Updating (INSERT, UPDATE, and DELETE) with JdbcTemplate

You can use the update(..) method to perform insert, update, and delete operations. Parameter values are usually provided as variable argumets or, alternatively, as an object array.

The following example inserts a new entry:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
this.jdbcTemplate.update(
        "insert into t_actor (first_name, last_name) values (?, ?)",
        "Leonor", "Watling");

The following example updates an existing entry:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
this.jdbcTemplate.update(
        "update t_actor set last_name = ? where id = ?",
        "Banjo", 5276L);

The following example deletes an entry:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
this.jdbcTemplate.update(
        "delete from actor where id = ?",
        Long.valueOf(actorId));

5.3 Other JdbcTemplate Operations

You can use the execute(..) method to run any arbitrary SQL. Consequently, the method is often used for DDL statements. It is heavily overloaded with variants that take callback interfaces, binding variable arrays, and so on. The following example creates a table:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
this.jdbcTemplate.execute("create table mytable (id integer, name varchar(100))");

The following example invokes a stored procedure:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
this.jdbcTemplate.update(
        "call SUPPORT.REFRESH_ACTORS_SUMMARY(?)",
        Long.valueOf(unionId))

6. 采用.properties配置jdbc连接

代码语言:html
AI代码解释
复制
    <context:component-scan base-package="org.springframework.docs.test" />

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <context:property-placeholder location="jdbc.properties"/>

对应的jdbc.properties文件内容如下:

代码语言:text
AI代码解释
复制
jdbc.username = root
jdbc.password = 123456
jdbc.url = jdbc:mysql://localhost:3306/spring4
jdbc.driverClassName = com.mysql.jdbc.Driver

7.总结

采用JDBCTemplate可以方便以对象为单元进行操作数据库,不需要写复杂的sql语句。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
spring jdbctemplate[spring bean]
SpringJDBC可以理解为对于JDBC的封装使用,简化了不少重复代码并减少了SQL错误问题。一、概述在SpringJDBC模块中,所有的类可以被分到四个单独的包:1)core即核心包,它
Java架构师必看
2022/04/02
5490
[Spring框架]Spring JDBCTmplate基础入门总结.
前言: 前面有讲过 Spring IOC以及AOP的基本使用方法, 这里就再来讲下Spring JDBCTemplate的使用方法. 一, 概述 这里先说一下Spring 整合的一些模板: 从上图中
一枝花算不算浪漫
2018/05/18
6610
Spring 全家桶之 Spring Data JPA(一)
3.在applicationContext.xml配置文件中注入jdbcTemplate及数据源的配置
RiemannHypothesis
2022/08/19
1.5K0
Spring 全家桶之 Spring Data JPA(一)
【翻译】spring-data 之JdbcTemplate 使用
一个Application作为入口。IUserRepository和UserRepository作为具体的实现。applicationContext.xml定义spring的配置。db.properties保存数据库相关的信息。
_淡定_
2019/08/18
6800
11 Spring框架 SpringDAO的JdbcTemplate
上几个章节我们探讨了Spring的IoC和AOP,这是Spring的重点,但是Spring对jdbc的支持同样我们也不能忘记,毕竟我们还要通过Spring来管理DAO框架(例如Hibernate或者MyBatis等)。 Spring对DAO的支持分为大体可以分为以下两个点: Spring与jdbc模板 Spring对事务的管理 本节我们就来看看第一个知识点: Spring为我们提供了一套jdbc模板,对JDBC进行了一些简单的封装。 想要使用jdbc模板我们首先需要搭建环境: 引入jar包 我们需要
MindMrWang
2018/04/16
5330
11 Spring框架 SpringDAO的JdbcTemplate
使用Spring JDBCTemplate简化JDBC的操作
http://www.cnblogs.com/lichenwei/p/3902294.html
bear_fish
2018/09/19
1.1K0
使用Spring JDBCTemplate简化JDBC的操作
快速学习-Spring 中的 JdbcTemplate
除了默认构造函数之外,都需要提供一个数据源。既然有set方法,依据我们之前学过的依赖注入,我们可以在配置文件中配置这些对象。
cwl_java
2020/04/03
8970
快速学习-Spring 中的 JdbcTemplate
spring之操作数据库之使用JdbcTemplate和JdbcDaoSupport
注意打开mysql服务,并在数据库中新建两个表:employees和departments,目录如下:
西西嘛呦
2020/08/26
4180
spring之操作数据库之使用JdbcTemplate和JdbcDaoSupport
Spring 全家桶之 Spring Data JPA(二)
&emsp;&emsp;Spring Data JPA 让我们解脱了DAO层的操作,基本上所有CRUD都可以依赖于它来实现,在实际的工作工程中,推荐使用Spring Data JPA + ORM(如:hibernate)完成操作,这样在切换不同的ORM框架时提供了极大的方便,同时也使数据库层操作更加简单,方便解耦
RiemannHypothesis
2022/08/19
1.4K0
Spring 全家桶之 Spring Data JPA(二)
Spring5之JdbcTemplate
​ Spring 框架对 jdbc 进行封装, 使用 JdbcTemPlate 方便实现对数据库操作
OY
2022/03/12
4480
Spring5之JdbcTemplate
Spring5之JdbcTemplate
Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作
yuanshuai
2022/08/22
2660
Spring5之JdbcTemplate
Spring的学习笔记(十六)——SpringDataJpa配置和相关的操作
Spring Data JPA 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据库的访问和操作。它提供了包括增删改查等在内的常用功能,且易于扩展!学习并使用 Spring Data JPA 可以极大提高开发效率!
不愿意做鱼的小鲸鱼
2022/09/26
1.5K0
Spring的学习笔记(十六)——SpringDataJpa配置和相关的操作
Spring JdbcTemplate 使用及持久层继承JdbcDaoSupport XML配置
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
多凡
2019/11/01
4120
Spring-JDBCTemplate
今天开始学习我自己总结的 Java-学习路线 中的《Spring-JDBCTemplate》,小简从 0 开始学 Java 知识,并不定期更新所学笔记,期待一年后的蜕变吧!
小简
2023/01/04
3720
Spring 5(四)JdbcTemplate
四.JdbcTemplate 1.基本概念 什么是 JdbcTemplate? Spring 框架对]DBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作 准备工作 引入相关 jar
浅辄
2022/11/23
3430
Spring 5(四)JdbcTemplate
JdbcTemplate:轻松驾驭数据库的魔法工具
欢迎来到数据库的奇妙世界,在这里,我们将一同揭开Spring框架中JdbcTemplate的神秘面纱。JdbcTemplate是Spring提供的一个简化数据库操作的工具,它为我们提供了一种轻松驾驭数据库的魔法。本篇博客将详细解释JdbcTemplate的基本使用,适合刚刚接触Spring的童鞋们,让你轻松驾驭数据库的魔法世界。
繁依Fanyi
2024/01/14
4381
快速学习-Spring Data JPA 入门
使用Spring Data JPA,需要整合Spring与Spring Data JPA,并且需要提供JPA的服务提供者hibernate,所以需要导入spring相关坐标,hibernate坐标,数据库驱动坐标等
cwl_java
2020/04/01
4270
【Spring】通过JdbcTemplate实现CRUD操作
这里通过XML配置文件的方式,读取外部属性文件jdbc.properties,根据读取的信息来获取数据源对象。
.29.
2023/10/17
2610
【Spring】通过JdbcTemplate实现CRUD操作
SSM框架整合之练习篇
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
海仔
2019/10/22
4300
JAVAEE框架之Spring JdbcTemplate
1.数据库配置的代码,放到了java里面,根据“高内聚,低耦合”原则,应该尽量做到分离;
张哥编程
2024/12/19
1170
相关推荐
spring jdbctemplate[spring bean]
更多 >
LV.2
这个人很懒,什么都没有留下~
作者相关精选
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验