SpringBoot使用JdbcTemplate访问操作数据库基本用法

SpringBoot使用JdbcTemplate访问操作数据库基本用法

简介

JdbcTemplate 是 Spring 框架提供的一种基于 JDBC 的访问数据库的工具,使用它可以简化 JDBC 的开发流程和操作,减少大量模板式代码的编写。结合 SpringBoot 使用 JdbcTemplate 可以更加方便地访问和操作数据库。

Maven 依赖

在 SpringBoot 项目的 pom.xml 文件中添加 JdbcTemplate 的 Maven 依赖:

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

数据源配置

使用 JdbcTemplate 进行数据库操作前,需要先配置数据源。在 application.properties 中配置:

# 数据库配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://${mysql.host}:${mysql.port}/${mysql.database}?serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.username=${mysql.username}
spring.datasource.password=${mysql.password}

JdbcTemplate 使用

  1. 创建 JdbcTemplate 对象

创建 JdbcTemplate 对象需要先注入数据源。可以通过构造函数或者工厂方法的方式获取 JdbcTemplate 对象:

```java
@Autowired
private DataSource dataSource;

public JdbcTemplate jdbcTemplate() {
return new JdbcTemplate(dataSource);
}
```

  1. 查询操作

```java
public List> queryAllUsers() {
String sql = "SELECT * FROM user";
return jdbcTemplate().queryForList(sql);
}

public Map queryUserById(int id) {
String sql = "SELECT * FROM user WHERE id = ?";
return jdbcTemplate().queryForMap(sql, id);
}
```

  • queryForList(String sql):执行查询操作,返回 List<Map<String, Object>> 对象。其中,每个 Map 对象表示查询结果集中的一行数据,Map 中的 key 为列名,value 为对应的数据。

  • queryForMap(String sql, Object... args):执行查询操作,返回 Map<String, Object> 对象。其中,key 为查询结果集中的列名,value 为对应的数据。

  • 更新操作

```java
public void addUser(User user) {
String sql = "INSERT INTO user (username, password, age) VALUES (?, ?, ?)";
jdbcTemplate().update(sql, user.getUsername(), user.getPassword(), user.getAge());
}

public void updateUser(User user) {
String sql = "UPDATE user SET username = ?, password = ?, age = ? WHERE id = ?";
jdbcTemplate().update(sql, user.getUsername(), user.getPassword(), user.getAge(), user.getId());
}

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

  • update(String sql, Object... args):执行更新操作。

示例

以下是用户管理的示例:

User 实体类

public class User {
    private int id;
    private String username;
    private String password;
    private int age;

    // 省略 getter 和 setter 方法
}

UserDao 接口

public interface UserDao {
    List<Map<String, Object>> queryAllUsers();

    Map<String, Object> queryUserById(int id);

    void addUser(User user);

    void updateUser(User user);

    void deleteUserById(int id);
}

UserDaoImpl 实现类

@Repository
public class UserDaoImpl implements UserDao {
    @Autowired
    private DataSource dataSource;

    public JdbcTemplate jdbcTemplate() {
        return new JdbcTemplate(dataSource);
    }

    @Override
    public List<Map<String, Object>> queryAllUsers() {
        String sql = "SELECT * FROM user";
        return jdbcTemplate().queryForList(sql);
    }

    @Override
    public Map<String, Object> queryUserById(int id) {
        String sql = "SELECT * FROM user WHERE id = ?";
        return jdbcTemplate().queryForMap(sql, id);
    }

    @Override
    public void addUser(User user) {
        String sql = "INSERT INTO user (username, password, age) VALUES (?, ?, ?)";
        jdbcTemplate().update(sql, user.getUsername(), user.getPassword(), user.getAge());
    }

    @Override
    public void updateUser(User user) {
        String sql = "UPDATE user SET username = ?, password = ?, age = ? WHERE id = ?";
        jdbcTemplate().update(sql, user.getUsername(), user.getPassword(), user.getAge(), user.getId());
    }

    @Override
    public void deleteUserById(int id) {
        String sql = "DELETE FROM user WHERE id = ?";
        jdbcTemplate().update(sql, id);
    }
}

UserController 控制器

@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserDao userDao;

    @GetMapping
    public List<Map<String, Object>> queryAllUsers() {
        return userDao.queryAllUsers();
    }

    @GetMapping("/{id}")
    public Map<String, Object> queryUserById(@PathVariable("id") int id) {
        return userDao.queryUserById(id);
    }

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

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

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

小结

SpringBoot 结合 JdbcTemplate 使用,可以简化 JDBC 的开发流程和操作,提高开发效率和代码可读性。可以通过创建 JdbcTemplate 对象和调用对应的方法实现数据库的访问和操作。其中,查询操作的返回值为 List<Map<String, Object>> 或 Map<String, Object>,更新操作直接调用 update 方法即可。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot使用JdbcTemplate访问操作数据库基本用法 - Python技术站

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

相关文章

  • 基于SpringBoot bootstrap.yml配置未生效的解决

    在Spring Boot应用程序中,我们可以使用bootstrap.yml或bootstrap.properties文件来配置应用程序的属性。但是,有时候我们可能会遇到配置未生效的问题。下面是详解基于Spring Boot bootstrap.yml配置未生效的解决方案的完整攻略: 确认配置文件位置 首先,我们需要确认bootstrap.yml文件的位置是否…

    Java 2023年5月14日
    00
  • Java下载远程服务器文件到本地(基于http协议和ssh2协议)

    Java下载远程服务器文件到本地(基于http协议和ssh2协议) 在Java编程中,我们经常需要从远程服务器下载文件到本地。这篇文章将介绍如何使用Java实现基于http协议和ssh2协议的文件下载操作。 基于HTTP协议下载文件 使用Java下载http协议的文件,我们可以使用Java中自带的URL和URLConnection类。 下面是一个示例代码,它…

    Java 2023年5月20日
    00
  • centos7安装mysql并jdbc测试教程

    下面我就为您讲解“CentOS 7安装MySQL并JDBC测试教程”的完整攻略。 安装MySQL 首先,在CentOS 7上安装MySQL需要使用yum包管理器。 步骤1:添加MySQL Yum Repository MySQL官方提供了MySQL Yum Repository来帮助我们更简便地安装MySQL。 使用下面的命令添加官方仓库: sudo rpm…

    Java 2023年6月16日
    00
  • Java JDBC基本使用方法详解

    Java JDBC基本使用方法详解 什么是JDBC JDBC(Java Database Connectivity)是Java中访问关系型数据库的标准API,它提供了一种机制用于通过Java程序与各种关系型数据库进行交互,包括插入数据、修改数据、查询数据、删除数据等操作。 JDBC的基本使用步骤 JDBC的基本使用步骤如下: 加载JDBC驱动程序 建立与数据…

    Java 2023年5月19日
    00
  • Java多线程Future松获取异步任务结果轻松实现

    当我们在Java程序中执行耗时操作时,如果直接在主线程中执行,会导致程序阻塞,用户体验极差。为了解决这个问题,我们可以使用多线程技术,将耗时操作放在一个子线程中进行,以提高程序的响应速度。 在实际开发中,经常会遇到需要在主线程中获取子线程中执行任务的结果的场景。Java的Future接口提供了解决这个问题的方法。 下面是实现Java多线程Future获取异步…

    Java 2023年5月18日
    00
  • Tomcat服务器安装配置教程(win7)

    Tomcat服务器安装配置教程(win7) 1. 下载Tomcat 首先,你需要从官网下载Tomcat服务器的安装包,你可以选择最新版本的Tomcat来下载。下载地址如下: https://tomcat.apache.org/download-80.cgi 下载后,你需要解压缩文件并将其放置在一个你所选定的目录下。 2. 配置Tomcat服务器 接下来,你需…

    Java 2023年5月19日
    00
  • 什么是类卸载?

    类卸载是Java虚拟机(JVM)中的一项重要功能,它可以卸载运行时的类。在Java应用程序中,当一个类没有被引用时,JVM会自动释放该类所占用的内存。这个过程称为“类卸载”。 类卸载的实现是通过垃圾收集器完成的。在JVM中,垃圾收集器会判断一个类是否完全没有被引用,如果没有引用,则该类不再被使用。当该类不再被使用时,JVM会卸载该类,释放其内存,并将该类从方…

    Java 2023年5月11日
    00
  • springboot项目集成swagger-bootstrap-ui全过程

    下面就为大家详细讲解“springboot项目集成swagger-bootstrap-ui全过程”的完整攻略。 1. 前置条件 在集成Swagger Bootstrap UI之前,您需要确保满足以下两个前置条件: 已经拥有一个基于Spring Boot框架的Web应用程序。 已经清楚了解Swagger的基本概念和使用方式。 如果您还不了解Swagger,可以…

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