springboot jdbcTemplate 连接mysql

本实例 是在 springboot-base 的基础上进行的。

第一步:添加依赖

1
2
3
4
5
6
7
8
9
	<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 这里不需要版本号 -->

这里我们另外再添加两个依赖。等下写http接口的发布之后,可以帮我们生成一个可访问的接口文档。

1
2
3
4
5
6
7
8
9
10
11
12
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>

其中的版本是在上方定义的:

1
2
3
<properties>
<swagger.version>2.9.2</swagger.version>
</properties>

第二步:配置数据库连接信息

在 applcatiion.properties 文件里:

1
2
3
4
5
6
# 这里根据自己的数据库信息填写
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/web?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.name=test

第三步:在数据库建表:

这里可以通过idea 本身的database 模块连接数据库建表:

1569679502067.png

也可以用其它工具(例如navicat)连接数据库建表:

1569679591601.png

这边我们来建个学生表:

1569680104922.png

(建表时记得把备注(comment)填写全,后面生成代码时,可以帮助我们生成注释)

sql语句为:

1
2
3
4
5
6
7
8
9
create table student
(
id int auto_increment comment '数据id' primary key,
study_no varchar(20) not null comment '学号',
stu_name varchar(20) not null comment '学生姓名',
stu_age int not null comment '学生年龄',
class_name varchar(32) not null comment '班级名称'
)
comment '学生表';

我们再双击student 表添加两条数据:

1569680601726.png

控制台自动把插入数据的sql 打印了出来

1
2
3
4
[2019-09-28 22:20:43] 0 rows retrieved in 43 ms (execution: 8 ms, fetching: 35 ms)
sql> INSERT INTO `web`.`student` (`study_no`, `stu_name`, `stu_age`, `class_name`) VALUES ('00110', '张三', 12, '初一6班')
[2019-09-28 22:22:33] 1 row affected in 14 ms
sql> INSERT INTO `web`.`student` (`study_no`, `stu_name`, `stu_age`, `class_name`) VALUES ('00111', '李四', 12, '初一3班')

第四步:我们来自动生成个实体类(也可以自己手动写这个类)

我们在这里新建一个包来存放实体类。

1569680881837.png

然后我们再右击表名 选择 generate java class

1569680862129.png

没有这个选项的需要安装一个插件。(插件为收费版)

1569681007667.png

点击generate java class 后:

1569681201640.png

java class path 选择我们前面建的包名。

勾选 comment 能够帮我们生成备注。

勾选swagger 能够帮我们生成swagger 的一些注解注释。

点击ok 就会生成好一个实体类。

1569681488344.png

第五步:我们来写调用数据库的一些方法。

1569682912018.png

这里的代码先简单这样写了。实际开发中业务相关的代码一般不放在 controller.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.example.springbootbase.controller;

import com.example.springbootbase.model.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;
/**
* @ClassName StudentController
* @Author wuzhiyong
* @Date 2019/9/28 22:41
* @Version 1.0
**/
@RestController
public class StudentController {
@Autowired
JdbcTemplate jdbcTemplate;

@ResponseBody
@GetMapping("/stu/{id}")
public Student getStuById(@PathVariable("id") int id){
return (Student) jdbcTemplate.queryForObject("select * from student where id = "+id,new BeanPropertyRowMapper(Student.class));
}
@ResponseBody
@DeleteMapping("/stu/{id}")
public Map delStuById(@PathVariable("id") int id){
jdbcTemplate.execute("delect from student when id = "+id);
Map result = new HashMap(2);
result.put("code",200);
result.put("msg","success");
return result;
}
}

我们今天测接口不用postman 也不用浏览器,我们来用一个叫 restfulToolKit 的插件

装好之后 侧边栏有个 restServices 的选项卡点开后 找到我们编写的接口。修改参数后点击send 即可发送请求测试

1569683461753.png

点击send 后 response 里可看到请求的结果。下面看到了数据表的数据表示我们成功的从数据库里拿到了数据

1569683819259.png

第六步:利用swagger框架生成接口文档同时测试接口。

最简单的使用我们只需要在启动类上加上@EnableSwagger2注解然后重启就可以了

1569683988703.png

然后我们就可以通过浏览器访问地址 http://localhost:8080/swagger-ui.html 看到我们的接口了

第七步:配置连接池

由于spring boot默认集成hikari 链接池

所以我们直接复制一段连接池的配置就可以了。不需要额外添加依赖。当然如果你不想用这个链接池那么得自行添加依赖了

1
2
3
4
5
spring.datasource.type=com.zaxxer.hikari.HikariDataSourcespring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.maximum-pool-size=15spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.idle-timeout=30000spring.datasource.hikari.pool-name=DatebookHikariCP
spring.datasource.hikari.max-lifetime=1800000spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.connection-test-query=SELECT 1