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

yizhihongxing

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日

相关文章

  • Java中的异常处理如何提高程序安全性?

    Java中的异常处理机制是提高程序安全性和稳定性的重要手段之一。它可以让我们在程序运行时捕获和处理可能发生的异常情况,以避免程序的崩溃或者无效输出。 以下是使用Java中的异常处理机制来提高程序安全性的一些攻略: 异常分类 在Java中异常是分为可检查异常和非可检查异常两种: 可检查异常(checked exception):指在编译阶段就可以预测并处理的异…

    Java 2023年4月27日
    00
  • 为zookeeper配置相应的acl权限

    为ZooKeeper配置ACL权限需要经过以下步骤: 创建一个与管理员相关的ZooKeeper用户 要启动ACL功能,需要至少一个有ACL权限的用户。可以使用addauth命令添加管理员用户,然后再创建其他的用户。下面是添加管理员用户的示例: $ zkCli.sh addauth digest admin:admin123 其中,admin是用户名,admi…

    Java 2023年5月20日
    00
  • JAVA IO API使用详解

    Java IO API使用详解 概述 Java IO API是用于读写数据的标准API。Java IO库是一个基于流的库,主要利用了Java中的抽象类和接口来完成对文件的读写操作。 在Java IO库中,主要包括以下三种抽象源: 字节流 字符流 以及文件读写流 字节流 字节流是Java IO库中最基本的流,它支持对字节的输入和输出两种操作。 InputStr…

    Java 2023年5月20日
    00
  • 如何把char数组转换成String

    将char数组转换成String通常可以使用String类的构造函数方法或valueOf()方法。 使用String类的构造函数方法 示例1: char[] charArray = {‘H’, ‘e’, ‘l’, ‘l’, ‘o’}; String str = new String(charArray); System.out.println(str); /…

    Java 2023年5月26日
    00
  • Java过滤器filter_动力节点Java学院整理

    Java过滤器filter_动力节点Java学院整理 什么是Java过滤器 Java中的过滤器(Filter),是一种能够拦截请求或响应,对请求或响应进行预处理或后处理的东西。当然,这个东西不是完全地由Java语言实现的,实际上它是由Servlet规范中定义的,所以Java中的Filter更准确地讲应该叫做Servlet Filter。Filter实际上是基…

    Java 2023年6月15日
    00
  • 熟悉maven:使java开发变得更高效

    熟悉Maven:使Java开发变得更高效 什么是Maven? Apache Maven是一个自动化构建工具,可以帮助我们管理Java项目的依赖关系、生成可执行文件、运行单元测试以及部署我们的代码。 Maven的核心概念 项目坐标 Maven通过“项目坐标”来唯一标识一个项目。项目坐标由groupId、artifactId、version三部分组成。 例如: …

    Java 2023年5月20日
    00
  • Java axios与spring前后端分离传参规范总结

    Java axios是一个基于Promise的HTTP客户端,可用于浏览器和node.js中。它的特点是易于使用和读取。以Spring前后端分离的场景中传参规范总结如下: API设计规范 RESTful 风格 API接口应该符合Restful风格,即资源(Resource)的URI应该有明确的含义,HTTP请求方法(GET, POST, PUT, DELET…

    Java 2023年5月20日
    00
  • SpringBoot使用Jsp的示例代码

    下面是 Spring Boot 使用 JSP 的详细攻略,内容包括: 添加 Maven 依赖 配置 Spring Boot 创建 JSP 页面 创建 Controller 类 运行并访问页面 1. 添加 Maven 依赖 首先在 pom.xml 文件中添加以下依赖: <dependencies> <dependency> <gr…

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