spring通过jdbc连接数据库

介绍

Spring Framework是一个非常受欢迎的Java应用程序开发框架。除了提供基于IoC容器和AOP的组件模型外,Spring还提供了众多的对事实标准技术的集成支持,数据库访问就是其中之一。在本篇文章中,我们将学习如何使用Spring提供的JDBC支持访问数据库。

前置知识

在开始之前,你需要具备以下技能:

  • Java基础知识,包括类、方法、包、接口、继承和多态。
  • Spring IoC容器的基本概念。
  • JDBC API和SQL基础知识。
  • 数据库的基本操作和语法,例如创建表、插入数据、查询数据等。

步骤

第一步:添加Maven依赖

在使用Spring JDBC连接数据库之前,你需要在Maven项目中添加以下依赖:

<!-- Spring JDBC依赖 -->
<dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-jdbc</artifactId>
     <version>5.2.6.RELEASE</version>
</dependency>

<!-- 数据库驱动 -->
<dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>8.0.20</version>
</dependency>

其中,spring-jdbc是Spring JDBC模块的依赖;mysql-connector-java是MySQL数据库驱动程序的依赖。

第二步:创建数据源

创建数据源是连接数据库的第一步。数据源是一个代表数据库的对象,它存储连接到数据库的必要信息,例如驱动程序类名、URL、用户名、密码等。

可以使用Spring提供的DriverManagerDataSource类来创建简单的数据源。这里以连接MySQL数据库为例:

import org.springframework.jdbc.datasource.DriverManagerDataSource;

javax.sql.DataSource dataSource = new DriverManagerDataSource("jdbc:mysql://localhost:3306/mydb", "root", "password");

在实际生产环境中,你需要使用连接池来管理数据源,例如c3p0、HikariCP等,以提高连接的性能和可扩展性。

第三步:创建JdbcTemplate对象

创建JdbcTemplate对象是使用Spring JDBC的另一个重要步骤。JdbcTemplate是Spring提供的一个用于简化JDBC编程的类,它封装了大量的JDBC操作,例如执行SQL查询、更新、批处理等。

可以使用Spring提供的JdbcTemplate类来创建JdbcTemplate对象,可以将数据源作为构造函数的参数传递给它:

import org.springframework.jdbc.core.JdbcTemplate;

JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

第四步:执行SQL查询

JdbcTemplate类提供了执行SQL查询的多种方法。例如,可以使用queryForList()方法查询一个或多个行,并将结果存储在List对象中:

List<Map<String, Object>> rows = jdbcTemplate.queryForList("SELECT * FROM users");
for (Map<String, Object> row : rows) {
    System.out.println(row.get("id") + " " + row.get("name"));
}

另一个可以执行SQL查询的方法是queryForObject()。该方法执行一个SQL查询,并返回单个对象。例如,以下代码返回数据库中该名称对应的用户的id:

int userId = jdbcTemplate.queryForObject(
    "SELECT id FROM users WHERE name = ?", 
    new Object[] { "John" }, Integer.class);
System.out.println("User ID = " + userId);

第五步:执行SQL更新和插入操作

JdbcTemplate类提供了execute()方法执行SQL更新和插入操作,并返回更新/插入的行数:

int rowsUpdated = jdbcTemplate.update(
        "UPDATE users SET name = ? WHERE id = ?", 
        "David", 1);
System.out.println(rowsUpdated + " row(s) updated.");

int rowsInserted = jdbcTemplate.update(
        "INSERT INTO users (id, name) values (?, ?)", 
        2, "Tom");
System.out.println(rowsInserted + " row(s) inserted.");

示例

以下是两个JDBC和Spring结合的示例。

示例1:查询学生记录

以下示例展示了如何使用Spring JDBC访问MySQL数据库并执行查询操作。该程序从学生表中选择所有学生记录,并打印它们的名字和成绩。假设你已经有一个名为student的MySQL表格,其中包含以下带有两列的记录:姓名和成绩。

首先,创建以下数据库表:

CREATE TABLE student (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    grade DOUBLE
);

然后,插入一些记录:

INSERT INTO student (name, grade) VALUES ('Alice', 3.7), ('Bob', 3.5), ('Charlie', 3.9);

接下来,创建以下Java代码,并将其放入一个名为JDBCExample的文件中:

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

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

public class JDBCExample {
    public static void main(String[] args) {
        // 创建数据源
        DataSource dataSource = new DriverManagerDataSource(
                "jdbc:mysql://localhost:3306/mydb", "root", "password");

        // 创建JdbcTemplate对象
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

        // 执行SQL查询
        List<Map<String, Object>> rows = jdbcTemplate.queryForList(
                "SELECT * FROM student");
        for (Map<String, Object> row : rows) {
            System.out.println(row.get("name") + " " + row.get("grade"));
        }
    }
}

运行该程序,你应该看到以下输出:

Alice 3.7
Bob 3.5
Charlie 3.9

示例2:插入新的学生记录

以下示例展示了如何使用Spring JDBC访问MySQL数据库并执行插入操作。该程序向学生表中插入一条新记录。假设你已经有一个名为student的MySQL表格,其中包含以下带有两列的记录:姓名和成绩。

首先,创建以下数据库表:

CREATE TABLE student (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    grade DOUBLE
);

然后,创建以下Java代码,并将其放入一个名为JDBCExample的文件中:

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

import javax.sql.DataSource;

public class JDBCExample {
    public static void main(String[] args) {
        // 创建数据源
        DataSource dataSource = new DriverManagerDataSource(
                "jdbc:mysql://localhost:3306/mydb", "root", "password");

        // 创建JdbcTemplate对象
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

        // 插入新的学生记录
        int rowsInserted = jdbcTemplate.update(
                "INSERT INTO student (name, grade) VALUES (?, ?)", 
                "David", 3.8);
        System.out.println(rowsInserted + " row(s) inserted.");
    }
}

运行该程序,你应该看到以下输出:

1 row(s) inserted.

这个程序向学生表中插入了一条名叫David,成绩为3.8的记录。

总结

在本教程中,我们使用Spring JDBC模块连接到MySQL数据库并执行SQL查询、更新和插入操作。Spring JDBC模块为数据库交互提供了简单而有效的解决方案。它提供了许多有用的类和方法,使得与JDBC的交互变得更加简单和易于维护。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:spring通过jdbc连接数据库 - Python技术站

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

相关文章

  • js+csss实现的一个带复选框的下拉框

    实现带复选框的下拉框可以通过JS和CSS的协作来实现。以下是一些实现具体步骤和示例说明: 步骤1:HTML结构 在HTML中,首先需要定义一个select元素,然后使用option元素填充下拉框选项。选项上可以添加checkbox元素,让用户可以选择多个选项。 <select id="myDropdown" multiple>…

    Java 2023年6月15日
    00
  • java 数组转list的两种方式

    Java 数组转 List 的方式有两种,分别为使用 Arrays.asList() 和通过遍历数组进行转换。下面将会对这两种方式进行详细讲解。 使用 Arrays.asList() Arrays.asList() 方法可以方便地将数组转换为 List,代码如下所示: String[] array = {"a", "b&quot…

    Java 2023年5月26日
    00
  • windows定时器配置执行java jar文件的方法详解

    一、概述 在Windows系统中,可以通过配置定时器来实现定时执行特定的任务,如在某个特定时间点自动运行指定的Java jar文件。本文将详细讲解在Windows系统中配置定时器来执行Java jar文件的具体方法和步骤,同时提供两个示例以便读者更好地理解实现过程。 二、配置方法 创建批处理文件 首先需要创建一个批处理文件,用于启动Java jar程序。在文…

    Java 2023年6月1日
    00
  • 解析C#彩色图像灰度化算法的实现代码详解

    接下来我将根据题目要求,详细讲解“解析C#彩色图像灰度化算法的实现代码详解”的完整攻略。 一、什么是灰度化算法 灰度化算法是图像处理中的一种重要操作,将彩色图像转化为灰度图像。在灰度图像中,每个像素点只保存一个灰度值,代表了该像素点在黑白色阶上的明暗程度。灰度图像通常比彩色图像更加简洁、易于处理。 二、C#彩色图像灰度化算法的实现 1. 方法一:加权平均法 …

    Java 2023年5月19日
    00
  • 微信小程序云开发 搭建一个管理小程序

    下面是关于“微信小程序云开发搭建一个管理小程序”的完整攻略,希望能对你有帮助。 一、前置条件 搭建微信小程序云开发的管理小程序需要以下几个前置条件: 已经有微信小程序的AppID,并且已经在微信公众平台上进行了配置。 了解基础的微信小程序开发和云开发知识。 安装了微信开发者工具,并且已经登录了自己的微信小程序开发者账号。 二、创建云开发环境 在微信开发者工具…

    Java 2023年5月23日
    00
  • java中flatMap用法完整示例

    下面是“java中flatMap用法完整示例”的完整攻略。 什么是flatMap flatMap 是一个操作符,它可以将一个 Observable 发射的数据集合转换成一个新的 Observable 对象,其中每个数据被变换为其他的数据(也可以是 0 个或多个数据)后,再重新发射出去。这些数据最终是被合并在一起作为一个单一的、合并后的数据序列进行发射的。 f…

    Java 2023年5月27日
    00
  • jsp文件上传与下载实例代码

    我来给您讲解一下“JSP文件上传与下载实例代码”的完整攻略。 步骤一:添加文件上传功能 首先,在JSP页面上添加文件上传功能,可以使用HTML中的<form>表单和<input>标签实现。上传文件时,需要使用enctype属性来指定提交的方式为multipart/form-data。以下是一个简单的文件上传表单的例子: <for…

    Java 2023年6月15日
    00
  • SpringSecurity登录使用JSON格式数据的方法

    下面是“Spring Security登录使用JSON格式数据的方法”详细攻略: 1. 问题分析 我们知道,Spring Security是Spring框架的一个重要组成部分,它用于处理系统中的用户身份认证和授权等问题。在实际开发过程中,我们经常需要使用JSON格式的数据来进行前后端通信,并且希望在登录时使用JSON格式的数据来进行用户身份认证。但是,在默认…

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