简介
Spring-boot 中为我们提供了一套非常简单易用的开发框架,本文将记录Spring-boot 中如何连接MySql。由于笔者是第一次接触后端开发,如有问题,欢迎指正。
各种配置
MySql
当我们要在本地调试MySql时,我们首先需要确认,本地有个运行着的MySql。所以,我们首先要在本地下载一个MySql。此处推荐brew直接下载。
// 下载安装
brew install mysql
// 启动
mysql -u root -p
接下来,我们可以看一下,MySql的简单命令:
// 查看MySql中有哪些数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| ocean_database |
| performance_schema |
| sys |
+--------------------+
// 选择某个数据库
mysql> use ocean_database;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
// 显示所有表
mysql> show tables;
+--------------------------+
| Tables_in_ocean_database |
+--------------------------+
| user_table |
+--------------------------+
// 显示表中所有数据
mysql> select * from user_table;
+----+-------+-----+-----+
| id | name | age | sex |
+----+-------+-----+-----+
| 1 | ocean | 28 | m |
+----+-------+-----+-----+
关于如何建表,如何增加数据不是本篇重点,读者可自行查阅MySql的相关语法。
除了以上命令,我们还需要知道当前MySql的一些信息。
// 查询MySql的端口号
mysql> show global variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
// 查询版本号
mysql> status;
--------------
mysql Ver 8.0.16 for macos10.14 on x86_64 (MySQL Community Server - GPL)
Connection id: 54
Current database: ocean_database
Current user: root@localhost
SSL: Not in use
Current pager: less
Using outfile: ''
Using delimiter: ;
Server version: 8.0.16 MySQL Community Server - GPL
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
UNIX socket: /tmp/mysql.sock
Uptime: 7 days 7 min 1 sec
Threads: 2 Questions: 210 Slow queries: 0 Opens: 226 Flush tables: 3 Open tables: 131 Queries per second avg: 0.000
--------------
我们通过上面的命令知道,本地环境中,MySql的端口号为3306,版本号为8.0.16。这些信息都是非常重要的。
pom.xml
在spring-boot中,我们使用pom.xml来管理我们的依赖。我们要操作MySql当然需要依赖一些第三方组件。由于我们准备的调用方式,我们需要加入如下两个依赖:
<dependencies>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
</dependencies>
这里要注意,mysql-connector-java的版本一定要与本地的MySql版本一致!否则将连接失败。
application.properties
在 application.properties 中,我们配置mysql的连接信息。
##########################################################
#
# mysql
#
##########################################################
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/ocean_database?characterEncoding=UTF-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=******(不能给你看)
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.max-idle=10
spring.datasource.max-wait=10000
spring.datasource.min-idle=5
spring.datasource.initial-size=5
这里需要注意的是,端口、数据库名、密码一定要正确,这就是前面准备那么多MySql指令的作用了。
快速开始
完成了以上的配置,我们就可以开始开发软件,操作MySql了。
JdbcController
@RestController
public class JdbcController {
@Resource
private JdbcTemplate jdbcTemplate;
@RequestMapping(value = "/users" , method = RequestMethod.GET)
public String getUserList(ModelMap map){
String sql = "SELECT * FROM user_table";
List<User> userList = jdbcTemplate.query(sql, new RowMapper<User>() {
User user = null;
@Override
public User mapRow(ResultSet resultSet, int i) throws SQLException {
user = new User();
user.setId(resultSet.getString("id"));
user.setName(resultSet.getString("name"));
user.setSex(resultSet.getString("sex"));
user.setAge(resultSet.getString("age"));
return user;
}
});
StringBuilder builder = new StringBuilder();
for (User user : userList){
builder.append("name : ").append(user.getName()).append("\n");
}
return builder.toString();
}
}
我们调用了SELECT * FROM user_table
然后将数据存入User中。
public class User {
private String id;
private String name;
private String age;
private String sex;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
最后,显示User中的name字段。
完成以上代码后,我们就可以在localhost中,看到我们从MySql中查询的结果啦。
至此,一个简单的数据库demo就完成啦。
小结
jdbc只是spring-boot提供的一个执行简单sql语句的引挚。当我们真正进行数据库相关的开发时,jdbc是不够用的。
本文只是为了记录MySql环境的配置。要点就是:版本、域名、端口、密码的正确性。
如有问题,欢迎指正。