一文带你学会Spring JDBC的使用

一文带你学会Spring JDBC的使用

简介

Spring JDBC是基于JDBC的框架,它提供了许多方便的功能去简化JDBC编码的繁琐。它可以自动管理连接、传播事务,同时提供了一种直观且简洁的方式去执行SQL语句,Spring JDBC已成为了Java应用程序中访问数据库的首选。本文将介绍如何使用Spring JDBC去连接数据库、执行SQL查询与更新,并演示一些常见的用例。

步骤

1. 添加依赖

首先,需要添加Spring JDBC的依赖到你的项目中。如果你正在使用Maven,那么可以在pom.xml文件中添加如下依赖:

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

如果你使用Gradle,可以在build.gradle文件中添加如下依赖:

implementation 'org.springframework:spring-jdbc:5.3.5'

2. 配置数据源

在使用Spring JDBC之前,需要先配置数据源。如果你使用的是关系型数据库,可以使用Spring提供的DataSource接口去配置数据源。Spring可以配置各种各样的数据源(例如Druid、HikariCP等),这里我们以连接MySQL为例,配置一个基本的DataSource

@Bean
public DataSource dataSource() {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql://localhost:3306/test_db");
    dataSource.setUsername("root");
    dataSource.setPassword("password");

    return dataSource;
}

在这个例子中,我们使用了DriverManagerDataSource,这是一种简单的数据源实现。你也可以使用其他更高级的数据源实现(例如HikariCP),它们可以提供更好的性能和稳定性。

3. 执行查询

完成数据源的配置之后,可以使用Spring JDBC去执行SQL查询。以下是一个简单的例子,展示如何使用Spring JDBC查询数据库中的数据:

@Autowired
private JdbcTemplate jdbcTemplate;

public List<Customer> findAll() {
    String sql = "SELECT * FROM customers";
    RowMapper<Customer> rowMapper = new CustomerRowMapper();

    return jdbcTemplate.query(sql, rowMapper);
}

在这个例子中,我们使用了JdbcTemplate类去执行SQL查询。JdbcTemplate是Spring JDBC中提供的一个核心类,它封装了大量常用的JDBC操作和异常处理,让我们可以更轻松地执行常见的任务。例如,我们可以使用query方法执行SELECT查询,它需要提供一个SQL语句和结果集的映射器(RowMapper),并返回查询结果。

4. 执行更新

除了查询数据之外,Spring JDBC也可以执行SQL更新(INSERT、UPDATE、DELETE等)。以下是一个简单的例子,演示如何通过JdbcTemplate去更新数据库:

@Autowired
private JdbcTemplate jdbcTemplate;

public void update(Customer customer) {
    String sql = "UPDATE customers SET name = ?, email = ? WHERE id = ?";
    jdbcTemplate.update(sql, customer.getName(), customer.getEmail(), customer.getId());
}

在这个例子中,我们使用了update方法去执行SQL更新。update方法需要提供一个SQL语句和SQL语句中占位符的值,并返回更新的记录数。

示例

接下来,演示一下如何通过Spring JDBC去操作MySQL数据库。在这个例子中,我们将展示如何查询、插入、更新和删除数据。

1. 配置数据源

在这个例子中,我们将使用HikariCP作为数据源,我们需要修改之前的数据源配置:

@Bean
public DataSource dataSource() {
    HikariConfig config = new HikariConfig();
    config.setJdbcUrl("jdbc:mysql://localhost:3306/test_db");
    config.setUsername("root");
    config.setPassword("password");
    config.setDriverClassName("com.mysql.cj.jdbc.Driver");

    return new HikariDataSource(config);
}

2. 定义实体类

我们将创建一个实体类User来表示数据库中的一条记录:

public class User {
    private int id;
    private String name;
    private String email;

    // constructors, getters, and setters
}

3. 查询数据

下面是一个查询数据的例子:

@Autowired
private JdbcTemplate jdbcTemplate;

public List<User> findAll() {
    String sql = "SELECT * FROM users";
    RowMapper<User> rowMapper = new BeanPropertyRowMapper<>(User.class);

    return jdbcTemplate.query(sql, rowMapper);
}

在这个例子中,我们使用了BeanPropertyRowMapper,它是Spring提供的一个映射器,可以根据Java类的属性名自动映射查询结果。

4. 插入数据

以下是一个插入数据的例子:

@Autowired
private JdbcTemplate jdbcTemplate;

public void insert(User user) {
    String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
    jdbcTemplate.update(sql, user.getName(), user.getEmail());
}

在这个例子中,我们使用了update方法去执行INSERT查询。由于我们并不需要返回更新记录数,所以可以使用更简单的update方法。

5. 更新数据

以下是一个更新数据的例子:

@Autowired
private JdbcTemplate jdbcTemplate;

public void update(User user) {
    String sql = "UPDATE users SET name = ?, email = ? WHERE id = ?";
    jdbcTemplate.update(sql, user.getName(), user.getEmail(), user.getId());
}

6. 删除数据

以下是一个删除数据的例子:

@Autowired
private JdbcTemplate jdbcTemplate;

public void delete(int id) {
    String sql = "DELETE FROM users WHERE id = ?";
    jdbcTemplate.update(sql, id);
}

总结

Spring JDBC是一个非常强大的框架,它可以极大地简化JDBC编码的难度。在本文中,我们介绍了如何使用Spring JDBC去连接数据库、执行SQL查询和更新,并提供了一些示例。希望这篇文章对你有所帮助,谢谢!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一文带你学会Spring JDBC的使用 - Python技术站

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

相关文章

  • 出现java.util.ConcurrentModificationException 问题及解决办法

    出现java.util.ConcurrentModificationException 问题及解决办法 问题背景 在Java并发编程中,如果在迭代集合的过程中对集合进行了修改,就会出现 java.util.ConcurrentModificationException 异常。 例如,下面的代码中,我们使用了 for-each 迭代器来遍历列表中的元素,同时在…

    Java 2023年5月27日
    00
  • 详解APP微信支付(java后台_统一下单和回调)

    详解APP微信支付(java后台_统一下单和回调) 一、前言 在移动APP中,使用微信支付功能是非常常见的需求,而且使用微信支付也是比较方便和快捷的。本文将详细介绍如何在Java后台中实现微信支付的功能。主要包括两部分:统一下单和回调。本文介绍的支付接口都是官方的API接口,并采用了最新的V3版本。 二、统一下单 下单接口是微信支付功能的核心,接口名称为:h…

    Java 2023年5月27日
    00
  • Java实现的求逆矩阵算法示例

    Java实现的求逆矩阵算法示例 什么是逆矩阵 矩阵A的逆矩阵记为A-1,它是一个与A相乘后得到单位矩阵的矩阵。在一般的情况下,只有方阵才有逆矩阵。 矩阵求逆算法 对于一个n阶方阵A,它的行列式为det(A)。 如果det(A)不等于0,则A可逆,它的逆矩阵B为: B = 1/det(A) * adj(A) 其中,adj(A)是A的伴随矩阵,它是由矩阵A的每个…

    Java 2023年5月19日
    00
  • 浅谈Tomcat乱码与端口占用的解决方案

    浅谈Tomcat乱码与端口占用的解决方案 Tomcat乱码问题 在Tomcat中,中文字符有可能导致乱码问题。解决方案如下: 修改Tomcat的server.xml文件,在Connector中添加URIEncoding属性。 <Connector port="8080" protocol="HTTP/1.1" c…

    Java 2023年5月19日
    00
  • SpringMVC通过模型视图ModelAndView渲染视图的实现

    SpringMVC是一种基于MVC架构模式的Web框架,它可以让开发者更加简便地开发Web应用程序。在SpringMVC中,渲染视图是关键步骤之一。SpringMVC借助于视图解析器(ViewResolver)将ModelAndView对象中的模型数据渲染成视图,输出给浏览器。 以下是SpringMVC通过模型视图ModelAndView渲染视图的实现攻略:…

    Java 2023年6月15日
    00
  • Java加载与存储指令之ldc与_fast_aldc指令

    Java加载与存储指令之ldc与_fast_aldc指令 在Java语言中,常数池是Java虚拟机处理的一个关键部分。Java字节码在运行时需要加载和存储常量来完成各种操作,Java指令集中就有专门用于加载常量到栈顶或将栈顶的常量存储到局部变量表中的指令。其中ldc指令用于加载常量,而_fast_aldc指令则用于快速加载常量。 ldc和ldc_w指令 ld…

    Java 2023年5月26日
    00
  • SpringBoot控制配置类加载顺序方式

    SpringBoot是一个基于Spring框架的开源应用程序开发框架,主要用于快速构建基于Spring的企业级应用程序。而SpringBoot中一个非常重要的机制就是使用控制配置类进行应用程序的配置。控制配置类可以通过多种方式进行加载,这里我们就详细讲解一下SpringBoot控制配置类加载顺序方式以及相应实例。 控制配置类的加载顺序方式 SpringBoo…

    Java 2023年5月31日
    00
  • Spring Security permitAll()不允许匿名访问的操作

    在Spring Security中,permitAll()方法用于指定某些URL路径不需要任何身份验证即可访问,但如果需要对某些操作进行授权,例如限制只有管理员才能访问,需要使用其他方法进行配置。如果只使用permitAll()方法,可能会因为某些操作不允许匿名访问而导致访问被拒绝的问题。 以下是详细的攻略: 1.理解 Spring Security 中的匿…

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