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中的Filter过滤器

    浅谈Java中的Filter过滤器,下面是完整攻略。 什么是Filter过滤器? 在Java的Web开发中,Filter过滤器起到了一个非常重要的作用,它主要用于在请求到达Servlet之前或者将响应返回给浏览器之前,对请求或响应进行预处理或后处理。 Filter使用链式结构实现,一个过滤器可以对数据进行处理后,将数据传递给链中的下一个过滤器,直到请求到达目…

    Java 2023年6月15日
    00
  • SpringBoot整合SpringSecurityOauth2实现鉴权动态权限问题

    请听我详细讲解如何使用SpringBoot整合SpringSecurityOauth2实现鉴权动态权限。 简介 OAuth是一种开放标准,它可以为不同的应用程序之间提供安全的认证和授权机制。Spring Security OAuth是Spring Security框架的一部分,通过它可以为您的应用提供OAuth2认证和授权能力。本文将介绍如何使用Spring…

    Java 2023年5月20日
    00
  • Java集合源码全面分析

    Java集合源码全面分析是一部分Java开发者必备的技能。这个攻略将为您提供一些提示,如何最有效地学习和理解Java集合的源代码。 1. 学习Java集合的类层次结构 Java集合框架包含多个类和接口,这些类和接口组成了一个复杂的层次结构。您应该首先了解这个层次结构,确定每个类的位置以及它们如何相互调用。可以通过查找Java集合的类图或在线资料来帮助您。 2…

    Java 2023年5月26日
    00
  • Java方法的可变参数类型实例分析

    首先我们需要了解什么是Java方法的可变参数类型。 Java方法的可变参数类型 Java方法的可变参数类型指的是:在方法的参数列表中,允许最后一个参数为可变参数,即不确定数量的参数。在方法中,可变参数被声明为数组类型,在调用方法时可以传入任意数量的参数。 可变参数的语法为: 修饰符 返回值类型 方法名(参数类型… 参数名) { // 方法体 } 其中的参…

    Java 2023年5月26日
    00
  • ActionScript3禁止构造请求标头Referer

    对于ActionScript3禁止构造请求标头Referer这个问题,我们需要按照以下步骤进行操作: 第一步:禁止Flash Player构造请求标头Referer 在 ActionScript 3 中,需要使用 URLLoader 或 URLRequest 对象发送 HTTP 请求。默认情况下,Flash Player 会向服务器发送包含 Referer …

    Java 2023年6月16日
    00
  • Hibernate的Session_flush与隔离级别代码详解

    Hibernate的Session_flush与隔离级别代码详解 Session_flush Session_flush是Hibernate的Session接口中的一个方法。它将缓存中所有的托管实体对象同步到数据库中,即将所有还未被同步到数据库中的操作都提交执行。 Session_flush方法有两种调用方式,分别是: session.flush():这种方…

    Java 2023年5月19日
    00
  • Spring Security 中如何让上级拥有下级的所有权限(案例分析)

    什么是Spring Security Spring Security是一个基于Spring框架提供的安全性解决方案,实现了通用的安全功能,例如身份验证、授权、加密等等。它提供了一组用于Web应用程序中的库和API,以便实现许多常见的安全场景,以及为自定义安全需求提供支持的扩展点。 Spring Security中如何让上级拥有下级的所有权限 在Spring …

    Java 2023年5月20日
    00
  • Java中Stringbuild,Date和Calendar类的用法详解

    Java中StringBuilder, Date和Calendar类的用法详解 StringBuilder类的使用 在Java中,String是一个不可变的类,即一旦创建了一个String对象,它的内容就无法更改。如果需要频繁地对字符串进行修改,使用String类型会导致性能问题。这时就可以使用StringBuilder类,它是一个可变的字符串,可以方便地进…

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