Spring Boot JDBC 使用教程
总是要用到数据库的嘛,曾经我一度以为,写代码,编程就是搞数据库增删改查,甚至你设计一个系统,大部分时候在为如何设计关系型数据库努力,究其原因,是因为关系型数据库是逻辑的主要呈现。
这个系列,主要是对 Spring Boot 的数据库操作做一些示例程序展示。包括 mybatis、jpa操作、不同数据库的链接方式、多数据源切换、分库分表、自动编号问题、数据库优化问题。
从本系列开始,都需要用到 mysql 数据库 和其他一些参考的数据库。请准备相关环节。
- mysql 5.6+
- jdk1.8+
- spring boot 2.1.6
- idea 2018.1
1 准备数据库
mysql 5.6+ 数据库
导入数据表 数据表t_user下载
(注意:本人使用了 Navicat Preminum 对 Mysql 进行管理)
如果想学习如何在 Centos7 上部署 mysql 可以参考我这篇 阿里云上的Centos 7.6的一次Nginx+Mysql+PHP7.3 部署https://www.cnblogs.com/fishpro/p/10651011.html)
| 字段 | 类型 | 主键 | 说明 |
|---|---|---|---|
| id | int | 是 | 自动编号 |
| user_name | varchar(100) | 否 | 用户名 |
| password | varchar(255) | 否 | 密码 |
| last_login_time | date | 否 | 最近登录时间 |
| sex | tinyint | 否 | 性别 0男 1女 2其他 |
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`last_login_time` datetime DEFAULT NULL,
`sex` tinyint(4) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=armscii8;
-- ----------------------------
-- Records of t_user
-- ----------------------------
BEGIN;
INSERT INTO `t_user` VALUES (1, 'json', '123', '2019-07-27 16:01:21', 1);
INSERT INTO `t_user` VALUES (2, 'jack jo', '123', '2019-07-24 16:01:37', 1);
INSERT INTO `t_user` VALUES (3, 'manistal', '123', '2019-07-24 16:01:37', 1);
INSERT INTO `t_user` VALUES (4, 'landengdeng', '123', '2019-07-24 16:01:37', 1);
INSERT INTO `t_user` VALUES (5, 'max', '123', '2019-07-24 16:01:37', 1);
COMMIT;
SET FOREIGN_KEY_CHECKS = 1;
2 新建 Spring Boot 项目工程
File>New>Project,如下图选择Spring Initializr然后点击 【Next】下一步- 填写
GroupId(包名)、Artifact(项目名) 即可。点击 下一步
groupId=com.fishpro
artifactId=jdbc - 选择依赖
Spring Web Starter前面打钩,勾选SQL选项的 JDBC、MySql。 - 项目名设置为
spring-boot-study-jdbc.
3 依赖引入 Pom.xml
<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>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
4 Jdbc 配置
application.yml 配置(.properties文件类似)
server:
port: 8086
spring:
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/demo_test?useSSL=false&useUnicode=true&characterEncoding=utf8
username: root
password: 123
5 编写示例代码
增加代码 controller/UserController.java
@RestController
@RequestMapping("/api/user")
public class UserController {
@Autowired
private JdbcTemplate jdbcTemplate;
/**
* 获取示例数据库 t_user 的全部信息
* @return 返回 json 数据
* */
@GetMapping("/users")
public Object getUsers(){
List<Map<String,Object>> list=jdbcTemplate.queryForList("select * from t_user ");
return list;
}
}
6 运行示例
运行 JdbcApplication 后在浏览器输入 http://localhost:8086/api/user/users 输出如下结果:
[{
"id": 1,
"user_name": "json",
"password": "123",
"last_login_time": "2019-07-27T21:01:21.000+0000",
"sex": 1
}, {
"id": 2,
"user_name": "jack jo",
"password": "123",
"last_login_time": "2019-07-24T21:01:37.000+0000",
"sex": 1
}, {
"id": 3,
"user_name": "manistal",
"password": "123",
"last_login_time": "2019-07-24T21:01:37.000+0000",
"sex": 1
}, {
"id": 4,
"user_name": "landengdeng",
"password": "123",
"last_login_time": "2019-07-24T21:01:37.000+0000",
"sex": 1
}, {
"id": 5,
"user_name": "max",
"password": "123",
"last_login_time": "2019-07-24T21:01:37.000+0000",
"sex": 1
}]
7 问题思考
- JdbcTemplate 如何动态获取数据库
- JdbcTemplate 如何实现 POJO 操作
- JdbcTemplate 如何分表分库
- JdbcTemplate 如何操作 Oracle 和 MSSQL Server
Spring Boot JDBC 使用教程的更多相关文章
- Spring Boot Mybatis 使用教程
Mybatis 在当下互联网开发环境,十分重要.本章主要讲述 Mybatis 如何使用. 从本系列开始,都需要用到 mysql 数据库 和其他一些参考的数据库.请准备相关环节.本章需要以下环境支撑: ...
- Spring Boot JPA 使用教程
JPA 是 Spring Boot 官方推荐的数据库访问组件,其充分体现了面向对象编程思想,有点像 asp.net 的 EFCore.JPA 也是众多 ORM 的抽象. 从本系列开始,都需要用到 my ...
- (转) Spring Boot JDBC 连接数据库
文本将对在Spring Boot构建的Web应用中,基于MYSQL数据库的几种数据库连接方式进行介绍. 包括JDBC.JPA.MyBatis.多数据源和事务. 1 JDBC 连接数据库 1.1 属性配 ...
- Spring Boot JDBC 连接数据库
文本将对在Spring Boot构建的Web应用中,基于MYSQL数据库的几种数据库连接方式进行介绍. 包括JDBC.JPA.MyBatis.多数据源和事务. JDBC 连接数据库 1.属性配置文件( ...
- Spring Boot 2.x教程-Thymeleaf 原理是什么
layout: post title: Spring Boot 2.x教程-Thymeleaf 原理是什么 categories: SpringBoot description: Spring Boo ...
- Spring Boot 2 快速教程:WebFlux 集成 Mongodb(四)
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 这是泥瓦匠的第104篇原创 文章工程:* JDK 1.8* M ...
- Spring Boot 2.0 教程 | AOP 切面统一打印请求日志
欢迎关注微信公众号: 小哈学Java 文章首发于个人网站 https://www.exception.site/springboot/spring-boot-aop-web-request 本节中,您 ...
- Shiro+JWT+Spring Boot Restful简易教程
序言 我也是半路出家的人,如果大家有什么好的意见或批评,请务必issue下. 项目地址:https://github.com/Smith-Cruise/Spring-Boot-Shiro . 如果想要 ...
- spring boot mybatis 整合教程
本项目使用的环境: 开发工具:Intellij IDEA 2017.1.3 springboot: 1.5.6 jdk:1.8.0_161 maven:3.3.9 额外功能 PageHelper 分页 ...
随机推荐
- pikaqiu练习平台(CSRF(跨站请求伪造) )
CSRF(跨站请求伪造) CSRF(跨站请求伪造)概述 Cross-site request forgery 简称为“CSRF”,在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接 ...
- java特性之二----继承
1.继承的概述 ============================================================================================ ...
- C语言 strlen
C语言 strlen #include <string.h> size_t strlen(const char *s); 功能:计算指定指定字符串s的长度,不包含字符串结束符‘\0’ 参数 ...
- HTML学习(3)基础
*开始标签常被称为起始标签(opening tag),结束标签常称为闭合标签(closing tag). *虽然有时候忘记写结束标签有的浏览器也能正常显示内容,但有时候会出现不可预料的结果或错误,所以 ...
- window10 上的mysql8.0.13的数据库服务丢失后,找回方法
1.由于mysql8 的 话是默认有一个配置文件的,所以在执行 初始化mysql8 mysqld --initialize #执行这个的原因是:因为之前使用的是Mysql8中自带的那个默认的配置文件 ...
- Docker on startup: “No activity detected on VM, aborting”
windows下安装的docker,切换到linux,一直处于重启中,最后报No activity detected on VM, aborting错误 上网百度一下这个错误,基本上没人遇到过,最后在 ...
- 【转载】在windows下使用gcc编译jni的简单教程
转自:http://veikr.com/201207/windows_gcc_jni.html 1.安装MinGW,这个可以为windows提供gcc编译环境. 到http://sourceforge ...
- FreeRTOS学习笔记1:任务
任务特性每个任务有自己的环境,不依赖于其他任务与调度器任何时间点只有一个任务运行.由调度器决定上下文环境:(寄存器值.堆栈内容等)调度器保证的就是任务开始执行时的上下文环境与上一次退出时相同所以每个任 ...
- kvm增加磁盘容量
一.qcow2格式 查看镜像文件实际占用空间 ls -alh t.qcow2 加容量(只能加不能减) qemu-img resize t.qcow2 +1G 查看qcow2信息 qemu-img in ...
- cgroup的学习笔记
1.cgroup是什么? cgroup是一个linux内核提供的机制.目的是为了做资源隔离,资源限制,资源记录. 2.cgroup怎么安装? yum install cgroup service cg ...