spring boot之数据库
Spring Boot 底层针对于MySQL 、Oracle 等数据库都提供了良好的支持,通过 Spring Boot 提供的场景启动器就能够看出来。Java 程序在进行与 MySQL 的连接时需要通过 JDBC 来实现,JDBC 全称为 Java Data Base Connectivity(Java 数据库连接),主要由接口组成,是一种用于执行 SQL 语句的 Java API,各个数据库厂家
Spring Boot 底层针对于MySQL 、Oracle 等数据库都提供了良好的支持,通过 Spring Boot 提供的场景启动器就能够看出来。
Java 程序在进行与 MySQL 的连接时需要通过 JDBC 来实现,JDBC 全称为 Java Data Base Connectivity(Java 数据库连接),主要由接口组成,是一种用于执行 SQL 语句的 Java API,各个数据库厂家基于它各自实现了自己的驱动程序(Driver),如下图所示:
Java程序在获取数据库连接时,需要以URL方式指定不同类型数据库的Driver,在获得特定的Connection连接后,可按照JDBC规范对不同类型的数据库进行数据操作,代码如下所示:
// 第一步,注册驱动程序 Class.forName("数据库驱动的完整类名"); // 第二步,获取一个数据库的连接 Connection conn = DriverManager.getConnection("数据库地址","用户名","密码"); // 第三步,创建一个会话 Statement stmt=conn.createStatement(); // 第四步,执行SQL语句 stmt.executeUpdate("SQL 语句"); // 或者查询记录 ResultSet rs = stmt.executeQuery("查询记录的SQL语句"); // 第五步,对查询的结果进行处理 while(rs.next()){ // 操作 } // 第六步,关闭连接 rs.close(); stmt.close(); conn.close();
上面几行代码读者并不陌生,这是在初学JDBC连接时的代码。虽然现在可能用了一些数据层ORM框架(比如MyBatis或者Hibernate ),但是底层实现依然和这里的代码一样。通过使用JDBC,开发人员可以直接使用Java程序来对关系型数据库进行操作。接下来将对Spring Boot如何使用JDBC进行实例演示。
1.首先,需要在项目中引入相应的场景启动器,也就是引入依赖的jar包,添加的内容如下所示:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
在添加完相关依赖之后,需要启动MySQL数据库并在新建的Spring Boot项目中配置数据库连接的地址和账号密码,这样才能正确连接到数据库。在application.properties配置文件中添加如下配置代码:
spring.datasource.name=newbee-mall-datasource spring.datasource.url=jdbc:mysql://localhost:3306/test_db?useUnicode=true&serverTimezone=GMT&characterEncoding=utf8&autoReconnect=true&useSSL=false spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.username=root spring.datasource.password=123456
Spring Boot 操作数据库实践
Spring Boot 默认没有集成相关的 ORM 框架,而是提供了 JdbcTemplate 对象来简化开发者对于数据库的操作。
JdbcTemplate 是 Spring 对 JDBC 的封装,目的是使 JDBC 更加易于使用,更为关键的一点是,JdbcTemplate 对象也是通过自动配置机制注册到 IOC 容器中的,JdbcTemplate 的自动配置类是 JdbcTemplateAutoConfiguration。在 DataSourceAutoConfiguration 自动配置之后,会使用 IOC 容器中的 dataSource 对象作为构造参数创建一个 JdbcTemplate 对象并注册到 IOC 容器中。
在正确配置数据源之后,开发者们可以直接在代码中使用 JdbcTemplate 对象进行数据库操作。
使用 JdbcTemplate 进行数据库的增删改查
接下来进行编码操作来完成使用 JdbcTemplate 进行数据库的增删改查操作。
首先在数据库中创建一张测试表,建表语句如下:
DROP TABLE IF EXISTS `jdbc_test`;
CREATE TABLE `jdbc_test` (
`ds_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`ds_type` varchar(100) DEFAULT NULL COMMENT '数据源类型',
`ds_name` varchar(100) DEFAULT NULL COMMENT '数据源名称',
PRIMARY KEY (`ds_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8;
/*Data for the table `jdbc_test` */
insert into `jdbc_test`(`ds_id`,`ds_type`,`ds_name`) values (1,'com.zaxxer.hikari.HikariDataSource','hikari数据源'),(2,'org.apache.commons.dbcp2.BasicDataSource','dbcp2数据源');
为了演示方便,在 controller 包中新建 JdbcController 类直接注入 JdbcTemplate 对象。之后创建四个方法,分别实现根据传入的参数向 jdbc_test 表中新增数据、修改 jdbc_test 表中的数据、删除 jdbc_test 表中的数据、查询jdbc_test 表中的数据,实现代码如下:
package ltd.newbee.mall.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@RestController
public class JdbcController {
//已经自动配置,因此可以直接通过 @Autowired 注入进来 @Autowired JdbcTemplate jdbcTemplate; // 新增一条记录 @GetMapping("/insert") public String insert(String type, String name) { if (StringUtils.isEmpty(type) || StringUtils.isEmpty(name)) { return "参数异常"; } jdbcTemplate.execute("insert into jdbc_test(`ds_type`,`ds_name`) value (\"" + type + "\",\"" + name + "\")"); return "SQL执行完毕"; } // 删除一条记录 @GetMapping("/delete") public String delete(int id) { if (id < 0) { return "参数异常"; } List<Map<String, Object>> result = jdbcTemplate.queryForList("select * from jdbc_test where ds_id = \"" + id + "\""); if (CollectionUtils.isEmpty(result)) { return "不存在该记录,删除失败"; } jdbcTemplate.execute("delete from jdbc_test where ds_id=\"" + id + "\""); return "SQL执行完毕"; } // 修改一条记录 @GetMapping("/update") public String update(int id, String type, String name) { if (id < 0 || StringUtils.isEmpty(type) || StringUtils.isEmpty(name)) { return "参数异常"; } List<Map<String, Object>> result = jdbcTemplate.queryForList("select * from jdbc_test where ds_id = \"" + id + "\""); if (CollectionUtils.isEmpty(result)) { return "不存在该记录,无法修改"; } jdbcTemplate.execute("update jdbc_test set ds_type=\"" + type + "\", ds_name= \"" + name + "\" where ds_id=\"" + id + "\""); return "SQL执行完毕"; } // 查询所有记录 @GetMapping("/queryAll") public List<Map<String, Object>> queryAll() { List<Map<String, Object>> list = jdbcTemplate.queryForList("select * from jdbc_test"); return list; }
}
在 Spring Boot 项目中操作数据库,仅仅需要几行配置代码即可完成数据库的连接操作,并不需要多余的设置,再加上 Spring Boot 自动配置了 jdbcTemplate 对象,开发者可以直接上手进行数据库的相关开发工作。
更多推荐
所有评论(0)