spring-boot 连接数据库(六)
2024-10-06 19:58:34
环境
- jdk 6
- tomcat 6.0.53
- sts 4.4.2
- maven 3.2.5
- mysql 5.7
准备
接下来的数据库操作基于 mysql,所以需要一套可用的 mysql 环境。
引入 jdbc 依赖
spring boot 有配置的 jdbc starter,可以直接使用。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
删除 tomcat-juli
因为默认的数据库连接池依赖的是 tomcat-jdbc,已经依赖进来了 tomcat-juli,所以这个依赖可用直接删除。
删除如下依赖:
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-juli</artifactId>
<version>${tomcat.version}</version>
<scope>provided</scope>
</dependency
引入 mysql 连接驱动
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
增加数据库连接信息
在 application.properties 中,增加如下信息:
spring.datasource.url=jdbc:mysql://localhost/spring-boot-demo?useUnicode=true&characterEncoding=UTF-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
数据库对象
省略了 get/set 方法。
public class User {
private Integer id;
private String username;
private String userpwd;
private String fullname;
private Integer age;
}
api 访问层
增加 UserApi 控制层,并增加获得旅客列表的方法。增加构造函数注入访问数据库的 userDao。
修改完成后,如下:
package jiangbo.demo.user.api;
@RestController
@RequestMapping("/users")
public class UserApi {
private final UserService userService;
public UserApi(UserService userService) {
this.userService = userService;
}
@GetMapping
public List<User> allUsers() {
return userService.findAll();
}
}
service 层
暂时还没有任何的业务,可以直接调用 dao 层,可以增加一个接口来隔离实现。
package jiangbo.demo.user.service;
public interface UserService {
List<User> allUsers();
}
package jiangbo.demo.user.service.impl;
@Service
public class UserServiceImpl implements UserService {
private final UserDao userDao;
public UserServiceImpl(UserDao userDao) {
this.userDao = userDao;
}
@Override
public List<User> allUsers() {
return userDao.findAll();
}
}
增加 dao
先定义 dao 访问的接口:
package jiangbo.demo.dao;
public interface UserDao {
List<User> findAll();
}
在增加 jdbc 的实现。
package jiangbo.demo.user.dao.jdbc;
@Repository
public class JdbcUserDao implements UserDao {
private static final RowMapper<User> USER_ROW_MAPPER = BeanPropertyRowMapper.newInstance(User.class);
private final JdbcTemplate jdbcTemplate;
public JdbcUserDao(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Override
public List<User> findAll() {
return jdbcTemplate.query("SELECT * FROM user", USER_ROW_MAPPER);
}
}
运行并访问
访问 localhost:8080/demo/users,可以看到页面显示了数据库中存在的数据。
[
{
"id": 1,
"username": "zhangdaming",
"userpwd": "123456",
"fullname": "张大明",
"age": 66
},
{
"id": 2,
"username": "jiangbo",
"userpwd": "123456",
"fullname": "jiangbo",
"age": 44
},
{
"id": 3,
"username": "zhangsan",
"userpwd": "123456",
"fullname": "张三",
"age": 55
}
]
附录
完整 pom.xml
<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 http://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>1.5.22.RELEASE</version>
</parent>
<groupId>jiangbo.demo</groupId>
<artifactId>demo</artifactId>
<version>1.0.0</version>
<packaging>war</packaging>
<properties>
<tomcat.version>7.0.59</tomcat.version>
<jackson.version>2.6.7.3</jackson.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-legacy</artifactId>
<version>1.1.0.RELEASE</version>
</dependency>
<!-- provided -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
最新文章
- SOAPUI测试步骤----DataGen TestStep
- 【Swift学习】Swift编程之旅---闭包(十一)
- iOS 从应用中跳转至系统设置页面里的多种设置页面
- ActiveMQ的几种消息持久化机制
- android EditView ime
- iOS - NSURLSession 网络请求
- Git 图解剖析
- PowerShell文件系统(一)前言
- jsoup_解析任意网站,做任意网站客户端
- Xcode GDB 命令list
- 半个月学习的it内容
- MySQL 数据库字符集 utf8 和 utf8mb4 的区别
- centos7生产环境下openssh升级
- [开发笔记]-Jqplot图表初体验
- keyword模块
- C++ —— 重载、覆盖和隐藏
- 互联网创业原则与创业模式attilax大总结
- 虚拟机 ---- 最小化安装无法使用tab补全键
- c++之默认参数的函数
- python中set()函数的用法