Spring连接Mysql数据库全过程

下面将详细讲解Spring连接MySQL数据库的全过程,包含以下步骤:

1. 引入MySQL JDBC驱动

首先,我们需要在项目中引入MySQL JDBC驱动,由于MySQL JDBC驱动是Maven Central库中最受欢迎的库之一,因此我们可以通过在项目的pom.xml文件中加入以下代码来引入MySQL JDBC驱动:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
</dependency>

2. 创建数据源

在Spring中,我们可以使用数据源连接池来连接MySQL数据库,而连接池是通过数据源管理的。因此,我们需要配置数据源,以便在运行时创建连接池。

这里以使用HikariCP数据源配置MySQL数据库为例。在Spring Boot项目中,我们只需在application.yml或application.properties文件中添加以下配置即可:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
    username: root
    password: root1234
    driver-class-name: com.mysql.cj.jdbc.Driver

该配置中,我们使用了MySQL官方提供的JDBC驱动com.mysql.cj.jdbc.Driver,指定了MySQL实例的地址、端口、数据库名等信息,同时指定了数据库的字符集为utf8,并将时区设置为GMT+8。

3. 创建数据访问对象

通过Spring的JDBC模板来与MySQL数据库进行交互,我们需要创建一个数据访问对象(DAO)。这个DAO应该包含所有针对MySQL数据表的数据访问接口,例如数据库插入操作、查询操作、更新操作等。

这里我们以一个简单的用户管理场景为例来说明,创建一个用户DAO的Java接口:

public interface UserDao {
    void add(User user);
    User getById(int id);
    List<User> getAll();
    void update(User user);
    void delete(int id);
}

然后,我们实现该接口的具体实现类:

@Repository
public class UserDaoImpl implements UserDao {
    private final JdbcTemplate jdbcTemplate;

    @Autowired
    public UserDaoImpl(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    @Override
    public void add(User user) {
        jdbcTemplate.update(
            "INSERT INTO users (name, password, age) VALUES (?, ?, ?)",
            user.getName(),
            user.getPassword(),
            user.getAge()
        );
    }

    @Override
    public User getById(int id) {
        return jdbcTemplate.queryForObject(
            "SELECT * FROM users WHERE id = ?",
            new Object[]{id},
            new UserRowMapper()
        );
    }

    @Override
    public List<User> getAll() {
        return jdbcTemplate.query(
            "SELECT * FROM users",
            new UserRowMapper()
        );
    }

    @Override
    public void update(User user) {
        jdbcTemplate.update(
            "UPDATE users SET name = ?, password = ?, age = ? WHERE id = ?",
            user.getName(),
            user.getPassword(),
            user.getAge(),
            user.getId()
        );
    }

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

这里我们使用JdbcTemplate来执行MySQL数据库操作。在构造函数中通过@Autowired注入JdbcTemplate实例,并使用@Repository注解将其声明为Bean。

4. 编写JDBC RowMapper

我们需要编写一个JDBC RowMapper用于将查询操作中返回的结果集中的每行映射为Java对象。在这个例子中,我们使用了User对象作为例子。以下是一个简单的UserRowMapper实现:

public class UserRowMapper implements RowMapper<User> {
    @Override
    public User mapRow(ResultSet rs, int rowNum) throws SQLException {
        User user = new User();
        user.setId(rs.getInt("id"));
        user.setName(rs.getString("name"));
        user.setPassword(rs.getString("password"));
        user.setAge(rs.getInt("age"));
        return user;
    }
}

5. 使用JdbcTemplate进行数据访问

最后,我们可以在Controller中通过注入DAO实例,使用其提供的方法来访问MySQL数据库。以下是一个简单的UserController实现:

@RestController
public class UserController {
    private final UserDao userDao;

    @Autowired
    public UserController(UserDao userDao) {
        this.userDao = userDao;
    }

    @PostMapping("/user")
    public void addUser(@RequestBody User user) {
        userDao.add(user);
    }

    @GetMapping("/user/{id}")
    public User getUserById(@PathVariable int id) {
        return userDao.getById(id);
    }

    @GetMapping("/user")
    public List<User> getAllUsers() {
        return userDao.getAll();
    }

    @PutMapping("/user")
    public void updateUser(@RequestBody User user) {
        userDao.update(user);
    }

    @DeleteMapping("/user/{id}")
    public void deleteUser(@PathVariable int id) {
        userDao.delete(id);
    }
}

以上就是Spring连接MySQL数据库全过程的攻略。下面是两个使用该方法连接MySQL数据库的完整示例:

示例一:使用Spring Boot连接MySQL数据库

该示例使用Spring Boot框架连接MySQL数据库,实现了一个简单的用户管理模块。GitHub代码链接:https://github.com/wx-chevalier/Spring-Boot-Examples/tree/master/spring-boot-demo-sql-jdbc

示例二:使用Spring Framework连接MySQL数据库

该示例使用Spring Framework框架连接MySQL数据库,实现了一个简单的学生管理模块。GitHub代码链接:https://github.com/wx-chevalier/SpringExamples/tree/master/spring-transaction-example/src/main/java/com/wx/spring/transaction

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

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

相关文章

  • Java编程实现统计一个字符串中各个字符出现次数的方法

    下面是实现统计一个字符串中各个字符出现次数的攻略。 步骤一:定义Map对象 在Java中,我们可以使用Map对象来统计每个字符出现的次数。首先需要定义一个Map对象,键是字符,值是该字符出现的次数。Map对象的实例化可以用以下代码: Map<Character, Integer> charCountMap = new HashMap<Cha…

    Java 2023年5月27日
    00
  • Java编程实现逆波兰表达式代码示例

    让我来为您详细讲解Java编程实现逆波兰表达式代码示例的攻略。 什么是逆波兰表达式? 逆波兰表达式(Reverse Polish Notation,RPN)是一种无括号的计算表达式,其中操作符在操作数后面。例如,中缀表达式 3 + 4 * 5 可以转换为逆波兰表达式 3 4 5 * +。 实现逆波兰表达式求值 步骤一:将中缀表达式转换为逆波兰表达式 我们可以…

    Java 2023年5月30日
    00
  • java 逐行读取txt文本如何解决中文乱码

    要想解决中文乱码问题,需要了解Java中文编码方式的特点。Java会默认使用UTF-8编码格式,而读取txt文本时可能会面对其他编码格式,因此需要进行适当的转码操作。 以下是逐行读取txt文本并解决中文乱码问题的步骤: 创建一个FileReader对象,用于读取txt文件,并指定编码格式为GBK。 FileReader fr = new FileReader…

    Java 2023年5月20日
    00
  • Java设计模式之java策略模式详解

    Java设计模式之Java策略模式详解 什么是Java策略模式? Java策略模式是一种行为型设计模式,它定义了算法族,即一组具有相同目的和不同实现的算法,让它们之间可以相互替换。这个模式让算法的变化独立于使用算法的客户端,从而实现算法行为的变化而无需更改使用算法的客户端。 Java策略模式的三个角色 Java策略模式一般涉及到如下三个角色: Context…

    Java 2023年5月19日
    00
  • java获取当前日期和时间的二种方法分享

    当我们在Java程序中需要获取当前日期和时间时,通常可以使用下面两种常见的方式: 一、使用Java Date类(已过时) Java中的Date类已经被微软官方宣布过时了,不建议使用。不过,这里还是提供一下使用Date类获取当前日期和时间的方式: import java.util.Date; public class GetDateTimeExample { …

    Java 2023年5月20日
    00
  • java实现文件复制、剪切文件和删除示例

    下面是“Java实现文件复制、剪切文件和删除”示例的完整攻略。 1. 复制文件 要使用Java复制文件,需要使用Java的IO库。有两种方法可以实现文件复制:通过字节流或字符流。 1.1 字节流复制 使用字节流复制文件的方法非常简单。以下是代码示例: import java.io.*; public class FileCopy { public stati…

    Java 2023年5月20日
    00
  • 在IDEA中创建跑得起来的Springboot项目

    让我来详细讲解如何在IntelliJ IDEA中创建跑得起来的Spring Boot项目。 1. 准备工作 在开始创建Spring Boot项目之前,我们需要确保电脑上已经安装好以下两个软件:- JDK 1.8或更高版本- IntelliJ IDEA 2. 创建Spring Boot项目 现在我们来开始创建Spring Boot项目。 2.1 打开Intel…

    Java 2023年5月19日
    00
  • 微信小程序登录态和检验注册过没的app.js写法

    微信小程序登录态和检验注册的实现涉及到小程序端的代码和服务端的代码,因此在您进行开发时需要分别处理。 实现登录态 小程序的登录态是通过wx.login()获取的,具体实现步骤如下: 在小程序中,在需要登录的页面中,首先调用wx.login()获取到微信返回的code码,然后使用wx.request()将该code码发送到服务端。以下是示例代码: wx.log…

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