总是要用到数据库的嘛,曾经我一度以为,写代码,编程就是搞数据库增删改查,甚至你设计一个系统,大部分时候在为如何设计关系型数据库努力,究其原因,是因为关系型数据库是逻辑的主要呈现。
这个系列,主要是对 Spring Boot 的数据库操作做一些示例程序展示。包括 mybatis、jpa操作、不同数据库的链接方式、多数据源切换、分库分表、自动编号问题、数据库优化问题。
从本系列开始,都需要用到 mysql 数据库 和其他一些参考的数据库。请准备相关环节。
- mysql 5.6+
- jdk1.8+
- spring boot 2.1.6
- idea 2018.1
1 准备数据库
mysql 5.6+ 数据库
|字段|类型|主键|说明| |--|--|--|---| |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
org.springframework.boot spring-boot-starter-jdbc org.springframework.boot spring-boot-starter-web mysql mysql-connector-java org.springframework.boot spring-boot-starter-test test
4 Jdbc 配置
application.yml 配置(.properties文件类似)
server: port: 8086spring: 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
6 运行示例
[{ "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}]