Java Spring5学习之JdbcTemplate详解

Java Spring5学习之JdbcTemplate详解

什么是JdbcTemplate

JdbcTemplate 是 Spring Framework 中的一个核心模块,它提供了在 Java 应用程序中使用 JDBC 进行关系数据库访问的许多经典用例的实现。它通过显式管理 JDBC 资源和异常处理来简化了与数据库的交互。

在Java应用程序中使用JdbcTemplate

添加依赖

如果正在使用 Maven,请在 pom.xml 中添加以下依赖项:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.3.13</version>
</dependency>

使用示例

接下来,我们将以一个具体的示例来演示如何使用 JdbcTemplate 。

假设有一个学生表 student,包含 id 和 name 两个字段,我们要在 Java 应用程序中使用 JdbcTemplate 来完成对它的增、删、改、查。

  • 添加新的学生
import org.springframework.jdbc.core.JdbcTemplate;

public class StudentDAO {
    private JdbcTemplate jdbcTemplate;

    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    public void addStudent(String name) {
        String sql = "INSERT INTO student (name) VALUES (?)";
        jdbcTemplate.update(sql, name);
    }
}
  • 删除学生
import org.springframework.jdbc.core.JdbcTemplate;

public class StudentDAO {
    private JdbcTemplate jdbcTemplate;

    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    public void deleteStudentById(int id) {
        String sql = "DELETE FROM student WHERE id = ?";
        jdbcTemplate.update(sql, id);
    }
}
  • 修改学生姓名
import org.springframework.jdbc.core.JdbcTemplate;

public class StudentDAO {
    private JdbcTemplate jdbcTemplate;

    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    public void updateStudentNameById(int id, String name) {
        String sql = "UPDATE student SET name = ? WHERE id = ?";
        jdbcTemplate.update(sql, name, id);
    }
}
  • 查询所有学生
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

public class StudentDAO {
    private JdbcTemplate jdbcTemplate;

    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    public List<Student> getAllStudents() {
        String sql = "SELECT * FROM student";
        RowMapper<Student> rowMapper = new RowMapper<Student>() {
            @Override
            public Student mapRow(ResultSet resultSet, int i) throws SQLException {
                Student student = new Student();
                student.setId(resultSet.getInt("id"));
                student.setName(resultSet.getString("name"));
                return student;
            }
        };
        return jdbcTemplate.query(sql, rowMapper);
    }
}

示例1:在 Spring Boot 中使用 JdbcTemplate

添加依赖

在 Spring Boot 工程中,我们只需要添加以下依赖就可以使用 JdbcTemplate:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

配置数据源和 JdbcTemplate

在 application.properties 中配置数据源和 JdbcTemplate:

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root

spring.jdbc.template.query-timeout=5s
spring.jdbc.template.fetch-size=100
spring.jdbc.template.max-rows=1000

使用示例

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;

public class StudentDAO {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    public void addStudent(String name) {
        String sql = "INSERT INTO student (name) VALUES (?)";
        jdbcTemplate.update(sql, name);
    }
}

示例2:使用 NamedParameterJdbcTemplate

NamedParameterJdbcTemplate 是 JdbcTemplate 的一个变种,它可以使用命名参数而不是 ? 占位符,这使得 SQL 语句具有更好的可读性。

添加依赖

先添加 Spring Boot 的 Jdbc 和 MySQL 驱动器依赖,然后添加 NamedParameterJdbcTemplate 依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.3.13</version>
</dependency>

配置数据源和 NamedParameterJdbcTemplate

在 application.properties 中配置数据源和 NamedParameterJdbcTemplate:

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root

使用示例

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.namedparam.SqlParameterSourceUtils;

import javax.sql.DataSource;
import java.util.ArrayList;
import java.util.List;

public class StudentDAO {
    private NamedParameterJdbcTemplate namedParameterJdbcTemplate;

    @Autowired
    public void setDataSource(DataSource dataSource) {
        this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
    }

    public void batchAddStudents(List<Student> students) {
        String sql = "INSERT INTO student (name) VALUES (:name)";
        SqlParameterSource[] batch = SqlParameterSourceUtils.createBatch(students.toArray());
        namedParameterJdbcTemplate.batchUpdate(sql, batch);
    }
}

以上就是 Java Spring5 学习之 JdbcTemplate 的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Spring5学习之JdbcTemplate详解 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java实现批量下载(打包成zip)的实现

    下面是一份Java实现批量下载并打包成zip文件的攻略: 1. 实现思路 我们需要实现以下几个步骤:1. 获取所有需要下载的文件链接。2. 根据链接,将文件下载到本地。3. 将所有下载的文件打包成zip文件,保存到本地。 2. 具体实现 2.1 获取所有需要下载的文件链接 我们可以将所有需要下载的文件链接保存在一个列表中,代码示例如下: List<St…

    Java 2023年5月26日
    00
  • 详解Spring MVC如何测试Controller(使用springmvc mock测试)

    以下是关于“详解Spring MVC如何测试Controller(使用springmvc mock测试)”的完整攻略,其中包含两个示例。 详解Spring MVC如何测试Controller(使用springmvc mock测试) Spring MVC是一个基于Java的Web框架,它可以帮助我们快速开发Web应用程序。在开发过程中,我们需要对Control…

    Java 2023年5月17日
    00
  • Jdbc连Sybase数据库的几种方法

    JDBC是Java数据库连接的标准接口,在Java程序中可通过JDBC来访问多种类型的数据库。本文将针对Sybase数据库,介绍几种连接Sybase数据库的方法,以及代码示例。 1. 准备工作 在使用JDBC连接Sybase数据库之前,需要先进行准备工作,包括安装Sybase数据库、Sybase驱动程序。 1.1 安装Sybase数据库 Sybase数据库是…

    Java 2023年6月16日
    00
  • SpringMVC核心DispatcherServlet处理流程分步详解

    SpringMVC核心DispatcherServlet处理流程分步详解 SpringMVC是一个非常流行的Java Web开发框架,它提供了很多便捷的功能,其中包括DispatcherServlet。DispatcherServlet是SpringMVC框架中的一个核心组件,它负责接收HTTP请求并将请求分发给对应的处理器。本文将详细介绍Dispatche…

    Java 2023年5月17日
    00
  • SpringBoot学习系列之MyBatis Plus整合封装的实例详解

    以下是关于“SpringBoot学习系列之MyBatis Plus整合封装的实例详解”的完整攻略。 一、前言 本文将介绍如何在SpringBoot项目中整合MyBatis Plus,并通过封装示例,展示MyBatis Plus在实际开发中的应用。MyBatis Plus是MyBatis的增强工具包,可以极大地提高开发效率。 二、基本环境 SpringBoot…

    Java 2023年5月20日
    00
  • mybatis之增删改查

    下面是关于 MyBatis 的增删改查操作的完整攻略。 简介 MyBatis 是一种优秀的持久层框架,它封装了 JDBC 操作的细节,并提供了方便的 SQL 映射配置方法,使得开发者可以使用面向对象的方式进行 SQL 操作。 在 MyBatis 中,增删改查操作是非常常见的操作。本文将通过两个示例分别讲解如何使用 MyBatis 实现增删改查操作。 示例1:…

    Java 2023年5月20日
    00
  • PHP实现QQ空间自动回复说说的方法

    PHP实现QQ空间自动回复说说的方法 简介 在 PHP 中,可以通过调用第三方库实现登录QQ空间并发布评论、回复的功能。本文将介绍如何使用 PHP 向指定好友的说说进行自动回复。 整体思路 通过 QQ 登录,查找到指定好友的说说,获取说说的ID。通过模拟请求,向该说说增加回复。 具体来讲,可以分为以下步骤: 1.模拟登录 QQ 空间,获取 session、c…

    Java 2023年6月16日
    00
  • SpringBoot 替换 if 的参数校验示例代码

    下面是关于SpringBoot替换if的参数校验示例代码的完整攻略。 什么是参数校验 参数校验是指对输入参数的正确性进行检查,以保证系统可以正常的运行,常见的校验项包括非空校验、数据格式校验、数据范围校验等。 传统的参数校验方式 传统的参数校验是通过if或者switch等条件语句实现的,例如: public boolean check(String name…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部