Spring Boot JdbcTemplate CRUD 操作 MySQL

大家好,在这篇文章中,我们将讨论创建连接到关系数据库 MySQL 的 Spring Boot REST API 并使用 Spring 执行数据库操作,例如创建、读取、更新和删除 (CRUD)JdbcTemplate以及完整的代码示例

概述


  • JDBCTemplate 是帮助我们查询数据库的类
  • JDBCTemplate 提供方法的实现 JdbcOperations ,例如 query(), execute()等 update() ,
  • BeanPropertyRowMapper 是 RowMapper 将表行转换为指定映射目标类的新实例的实现。
  • 映射的目标类必须是顶级类,并且必须具有默认或无参数构造函数。
  • queryForObject()是由 提供的一种方法 JdbcTemplate,用于从数据库中获取单条记录
  • queryForObject() 接受 3 个参数 sql_query, row_mapper 和 parameter
  • update()是由 提供的一种方法 JdbcTemplate,用于从数据库中删除、更新和插入单个记录
  • update() 接受2个参数, sql_query 并且 parameter

完整示例


我们将逐步创建此示例,按照本教程进行操作直到最后

阅读更多:

创建数据库


打开 mysql 控制台或工作台并执行以下查询

CREATE DATABASE springbootjdbc;

USE springbootjdbc;

CREATE TABLE tbl_employees
(
	id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,
    location VARCHAR(255) NOT NULL,
    department VARCHAR(255) NOT NULL
);

INSERT INTO tbl_employees
(name, location, department)
VALUES
("Bushan", "India", "IT");

INSERT INTO tbl_employees
(name, location, department)
VALUES
("Bharath", "India", "Sales");

创建spring boot项目


创建 Spring Boot 应用程序的方法有很多种,您可以按照以下文章创建一个 -

>>使用 Spring 初始化程序
创建 Spring Boot 应用程序 >>在 Spring 工具套件 [STS]
中创建 Spring Boot 应用程序 >>在 IntelliJ IDEA 中创建 Spring Boot 应用程序

添加maven依赖


打开pom.xml并添加以下依赖项 -

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.5.3</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>in.bushansirgur</groupId>
	<artifactId>springbootjdbc</artifactId>
	<version>1.0.0</version>
	<name>springbootjdbc</name>
	<description>Spring boot jdbc project</description>
	<properties>
		<java.version>16</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>

spring-boot-starter-web使用 Spring MVC 构建 Web 应用程序的依赖项。它使用 tomcat 作为默认的嵌入式容器。



 

spring-boot-devtools自动重新加载或实时重新加载应用程序的依赖项。spring-boot-starter-jdbc是与数据库通信的启动器依赖项。lombokdependency 是一个 java 库,它将减少我们通常在每个实体类中编写的样板代码,例如 setter、getter 和 toString()。mysql-connector-java 依赖是将数据存储到数据库中。

配置数据源


打开application.properties文件并添加以下内容

spring.datasource.url=jdbc:mysql://localhost:3306/springbootjdbc?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root

创建实体类


Employee.java在包内创建in.bushansirgur.springboot.entity并添加以下内容

package in.bushansirgur.springbootjdbc.entity;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Setter
@Getter 
@NoArgsConstructor
@AllArgsConstructor
public class Employee {
	
	private Long id;
	
	private String name;
	
	private String location;
	
	private String department;
	
	public Employee(String name, String location, String department) {
		this.name = name;
		this.location = location;
		this.department = department;
	}
}
  • @Setter注释生成 setter 方法
  • @Getter注释生成 getter 方法
  • @AllArgsConstructor生成带有所有字段的参数化构造函数
  • @NoArgsConstructor生成无参数构造函数

Create a DAO


在包里面创建一个接口,添加如下内容 EmployeeDAO.javain.bushansirgur.springboot.dao

package in.bushansirgur.springbootjdbc.DAO;

import java.util.List;

import in.bushansirgur.springbootjdbc.entity.Employee;

public interface EmployeeDAO {

    public List<Employee> findAll();

    public Employee findById(int id);

    public int deleteById(int id);

    public int save(Employee e);

    public int update(Employee e, int id);
}

EmployeeDAOImpl.java 在包内创建in.bushansirgur.springboot.dao并添加以下内容

package in.bushansirgur.springbootjdbc.DAO;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

import in.bushansirgur.springbootjdbc.entity.Employee;

@Repository
public class EmployeeDAOImpl implements EmployeeDAO {

    @Autowired
    JdbcTemplate jdbcTemplate;

    @Override
    public List<Employee> findAll() {
        return jdbcTemplate.query("SELECT * FROM tbl_employees", new BeanPropertyRowMapper<Employee>(Employee.class));
    }

    @Override
    public Employee findById(int id) {
        return jdbcTemplate.queryForObject("SELECT * FROM tbl_employees WHERE id=?", new BeanPropertyRowMapper<Employee>(Employee.class), id);
    }

    @Override
    public int deleteById(int id) {
        return jdbcTemplate.update("DELETE FROM tbl_employees WHERE id=?", id);
    }

    @Override
    public int save(Employee e) {
        return jdbcTemplate.update("INSERT INTO tbl_employees (name, location, department) VALUES (?, ?, ?)", new Object[]{e.getName(), e.getLocation(), e.getDepartment()});
    }

    @Override
    public int update(Employee e, int id) {
        return jdbcTemplate.update("UPDATE tbl_employees SET name = ?, location = ?, department = ? WHERE id = ?", new Object[]{e.getName(), e.getLocation(), e.getDepartment(), id});
    }

}

创建控制器


EmployeeController.java在包内创建in.bushansirgur.springbootjdbc.controller并添加以下内容

package in.bushansirgur.springbootjdbc.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import in.bushansirgur.springbootjdbc.DAO.EmployeeDAO;
import in.bushansirgur.springbootjdbc.entity.Employee;

@RestController
public class EmployeeController {

    @Autowired
    private EmployeeDAO eDAO;

    @GetMapping("/employees")
    public List<Employee> findAll() {
        return eDAO.findAll();
    }

    @GetMapping("/employees/{id}")
    public Employee findById(@PathVariable int id) {
        return eDAO.findById(id);
    }

    @DeleteMapping("/employees/{id}")
    public String deleteById(@PathVariable int id) {
        return eDAO.deleteById(id) + " Employee(s) delete from the database";
    }

    @PostMapping("/employees")
    public String save(@RequestBody Employee e) {
        return eDAO.save(e) + " Employee(s) saved successfully";
    }

    @PutMapping("/employees/{id}")
    public String update(@RequestBody Employee e, @PathVariable int id) {
        return eDAO.update(e, id) + " Employee(s) updated successfully";
    }

}

运行应用程序


使用以下 maven 命令运行应用程序 -

mvn spring-boot:run

打开浏览器或邮递员并输入以下 URL -

  • localhost:8080/employees

  • localhost:8080/employees/2

  • localhost:8080/employees/3

  • localhost:8080/employees


  • localhost:8080/employees/3



这就是这篇文章的内容。我希望你喜欢这篇文章,如果你喜欢,请与你的朋友和同事分享。此外,您可以与您的社交媒体资料分享此帖子。谢谢你,我会在下一篇文章中见到你。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值