我们看下如何使用jdbc进行操作数据库。
以往的风格我们是按照示例程序开始的,下面我们看下我们这个很容易理解的示例程序都需要什么?首先自己使用的工具是idea,java版本使用的是1.8,好了,我们看下自己项目的pom文件内容。
<?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.2.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.wpw</groupId>
<artifactId>springboot-jdbc</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-jdbc</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
上面的pom文件的jar包依赖主要是web包的依赖和操作数据库jar包的依赖。
由于这个示例程序是自己比较想写的,所以内容风格不一定规范,非规范了一些,自己是在自己的服务器上基于docker容器化方式进行mysql数据库服务搭建的,需要了解如何搭建的,可以看下之前的文章,好了,我们看下我们的示例程序吧。
首先,我们创建了一个实体类,里面的属性字段和我们创建的数据库字段保持一致。
package com.wpw.springbootjdbc;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Data
@Builder
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
public class Student implements Serializable {
private Integer id;
private String name;
}
是不是很简洁明了,是自己使用了第三方的库lombok,对lombok不了解的可以看下历史信息,里面有一篇文章对其进行了使用讲解。解放了你自动生成get/set方法的双手。
下面的示例程序就是自己简单的写了对数据库的增删改查操作,比较容易理解。
package com.wpw.springbootjdbc;
import lombok.Cleanup;
import lombok.extern.slf4j.Slf4j;
import java.sql.*;
import java.util.Optional;
@Slf4j
public class MYSQLUtil {
private static void execute() throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.cj.jdbc.Driver");
@Cleanup Connection connection = DriverManager.getConnection("jdbc:mysql://自己mysql数据库服务地址:3306/test", "root", "123456");
@Cleanup PreparedStatement preparedStatement = connection.prepareStatement("select * from stu");
@Cleanup ResultSet resultSet = preparedStatement.executeQuery();
Student student = null;
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
student = new Student().setId(id).setName(name);
}
boolean present = Optional.ofNullable(student).isPresent();
if (present) {
System.out.println(student);
} else {
System.out.println("查询内容为空");
}
}
private static void insert() throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.cj.jdbc.Driver");
@Cleanup Connection connection = DriverManager.getConnection("jdbc:mysql://自己mysql数据库服务地址:3306/test", "root", "123456");
@Cleanup PreparedStatement preparedStatement = connection.prepareStatement("insert into stu values(?,?)");
preparedStatement.setInt(1, 4);
preparedStatement.setString(2, "backCoder4");
boolean flag = preparedStatement.execute();
String message = !flag ? "成功插入一条数据" : "保存数据失败";
log.info("message:{}", message);
}
private static void delete() throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://自己mysql数据库服务地址:3306/test", "root", "123456");
PreparedStatement preparedStatement = connection.prepareStatement("delete from stu where id =?");
preparedStatement.setInt(1, 4);
int count = preparedStatement.executeUpdate();
String message = count > 0 ? "删除数据库的数据成功" : "删除数据库的数据失败";
log.info("message:{}", message);
}
private static void update() throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://自己mysql数据库服务地址:3306/test", "root", "123456");
PreparedStatement preparedStatement = connection.prepareStatement("update stu set name =? where id= ?");
preparedStatement.setString(1,"backCoder-Coder");
preparedStatement.setInt(2,1);
int count = preparedStatement.executeUpdate();
String message=count>0?"更新数据库数据成功":"更新数据库数据失败";
log.info("message:{}",message);
}
public static void main(String[] args) throws SQLException, ClassNotFoundException {
// execute();
// insert();
delete();
}
}
上面的示例程序还是比较容易理解的,希望可以帮助到你。