Skip to content

整理自 沉默王二:原文。全文搬运仅供个人学习,请勿外传。

MySQL 简介 ​

MySQL 是目前项目中运用最广泛的关系型数据库,无论是互联网大厂,还是中小型公司,几乎都在用。

MySQL 体积小、速度快、源码开放,所以广受开发者喜爱。

MySQL 的安装非常简单,针对不同的操作系统,MySQL 都提供了安装包的下载。

MySQL 目前主推的版本是 8.0,参考手册的地址如下所示:

https://dev.mysql.com/doc/refman/8.0/en/

如何安装 MySQL ​

我在讲 MySQL 的时候也有专门讲过,更详细:MySQL 的安装(Windows、macOS、Linux)

如果有云服务器的话,建议安装在云服务器上,这样就可以长时间运行 MySQL 而不用担心服务重启的问题。按照步骤参照下面的文档。

https://dev.mysql.com/doc/refman/8.0/en/linux-installation.html

也可以直接通过宝塔面板的形式来安装,这样更省事省力省心。

宝塔面板安装脚本地址:https://www.bt.cn/new/download.html

安装完成后,就可以在数据库管理页面添加数据库并且进行管理了。

如果是 Windows 用户的话,安装步骤参照下面的文档。

https://dev.mysql.com/doc/refman/8.0/en/windows-installation.html

如果是 macOS 用户的话,安装步骤参照下面的文档。

https://dev.mysql.com/doc/refman/8.0/en/macos-installation-pkg.html

Windows 和 macOS 的安装都非常的简单,主要就是下载对应操作系统的 MySQL 包安装管理器。

然后按照包安装向导的提示一步步傻瓜式安装即可。

Spring Boot 整合 MySQL 数据库 ​

Spring Boot 整合 MySQL 数据库非常简单,只需要添加 MySQL 依赖并在配置文件中添加数据库配置即可。我们可以不用编写原始的访问数据库的代码,也不用调用 JDBC 或者连接池就可以访问 MySQL。

1)使用 Intellij IDEA 新建一个 Spring Boot 项目,使用 Java 8 版本「社区版没有此功能,需要到 (Spring initializr)[https://start.spring.io/])生成项目后导入,推荐使用旗舰版,功能更加强大」。

添加 MySQL 的 Java连接驱动依赖和 JDBC Starter。

对应pom.xml文件中的代码:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
</dependency>

2)通过宝塔面板新建codingmore-mysql数据库并添加数据表

CREATE TABLE `user` (
  `id` int NOT NULL,
  `name` varchar(10) NOT NULL,
  `password` varchar(10) NOT NULL,
  `age` int NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

--
-- 转储表的索引
--

--
-- 表的索引 `user`
--
ALTER TABLE `user`
  ADD PRIMARY KEY (`id`);
COMMIT;

然后插入一条数据:

INSERT INTO `user` (`id`, `name`, `password`, `age`) VALUES ('1', '沉默王二', ' 123456', '18');

我把 SQL 语句放在源码的 resouces 目录里了

3)在 application.yml 文件中添加数据库链接驱动信息

spring:
  datasource:
    username: codingmore-mysql
    password: YyfR4TDxCwrjZ2Fs
    url:jdbc: mysql://118.190.99.232:3306/codingmore-mysql?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false

推荐安装 Spring Initializr and assistant 插件。可以自动补全配置信息。

4)新建实体类 User.java

java
@Data
public class User {
    private Integer id;
    private String name;
    private String password;
    private Integer age;
}

建议在 pom.xml 文件中添加 lombok 的依赖。

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.20</version>
</dependency>

5)在测试类中添加以下代码

java
@SpringBootTest
@Slf4j
class CodingmoreMysqlApplicationTests {
    @Resource
    private JdbcTemplate jdbcTemplate;

    @Test
    void contextLoads() {
        String sql ="select * from user";
        List<User> users = jdbcTemplate.query(sql, new RowMapper<User>() {
            @Override
            public User mapRow(ResultSet rs, int rowNum) throws SQLException {
                User user = new User();
                user.setId(rs.getInt(1));
                user.setAge(rs.getInt("age"));
                user.setName(rs.getString("name"));
                user.setPassword(rs.getString("password"));
                return user;
            }
        });
        log.info("查询成功");
        log.info("用户{}",users);
    }
}

Spring Boot 的测试类主要放置在 src/test/java 目录下面,项目创建成功后,Spring Boot 会根据项目名称自动为我们生成测试类。

比如说本次项目名为 codingmore-mysql,那么测试类名为 CodingmoreMysqlApplicationTests。

@SpringBootTest 注解能够测试我们的项目主类,该项目为 CodingmoreMysqlApplication。

@Test 注解是 junit 单元测试的注解,表示该方法为测试方法。

JdbcTemplate 一个通过 JDBC 连接数据库的工具类,spring-boot-starter-jdbc 依赖中包含了该类。

@Resource 注解会帮我们在 Spring Boot 启动的时候注入一个 JdbcTemplate 的对象。

jdbcTemplate.query() 方法通过 SQL 语句和匿名内部类参数的形式,执行 SQL 并查询结果集。

RowMapper 就是查询到的每一行数据对象,我们可以通过重写 mapRow 方法将数据结果集封装到 User 对象上。

右键菜单运行 testMysql 方法就可以在日志中看到 SQL 执行的结果。

如何通过 Navicat 连接 MySQL ​

Navicat 是一个从我参加工作到现在一直都在用的 MySQL 客户端工具,通过 Navicat 可以轻松连接数据库,并执行增删改查操作。

连接数据库也非常的简单,只需要填写主机 IP 地址、端口、用户名和密码即可。

如何通过 Intellij IDEA 连接 MySQL ​

除了 Navicat,还可以使用 Intellij IDEA 直连 MySQL。

点击「database」面板,在左上角选择 + 号,选择 DataSource,再选择 MySQL。

在弹出面板中填写连接信息。

如果是第一次连接 MySQL 的话,记得点击「download」下载 MySQL 驱动,之后点击「test connection」测试是否链接成功,如果出现以下界面,则表示 OK。

选择右侧的数据库表,双击,就可以查看到数据了。

在「console」SQL 查询面板里可以编写 SQL 语句来执行增删改查操作。

Spring Boot 整合 Druid ​

Druid 是阿里巴巴开源的一款数据库连接池,结合了C3P0、DBCP 等 DB 池的优点,同时还加入了日志监控。

Druid 在 GitHub 上已经收获了 25.4k 的 star,可以说非常的知名,从简介上也能看得出,Druid 就是为了监控而生的。

https://github.com/alibaba/druid/

Druid 包含了三个重要的组成部分:

  • DruidDriver,能够提供基于 Filter-Chain 模式的插件体系;
  • DruidDataSource,高效可管理的数据库连接池;
  • SQLParser,支持所有 JDBC 兼容的数据库,包括 Oracle、MySQL 等。

Spring Boot2.0 以上默认使用的是 Hikari 连接池,我们从之前的日志信息里就可以看得到。

那如果我们想使用 Druid 的话,该怎么整合呢?

这次我们直接在编程喵项目后端项目 codingmore-admin 上进行修改。

第一步,在 pom.xml 文件中添加 Druid 的依赖,官方已经提供了 starter,我们直接使用。

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.23</version>
</dependency>

第二步,在 application.yml 文件中添加 Druid 配置。

spring:
  datasource:    
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      #初始化连接池大小
      initial-size: 5
      #配置最小连接数
      min-idle: 5
      #配置最大连接数
      max-active: 200
      #配置连接等待超时时间
      max-wait: 60000
      #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      time-between-eviction-runs-millis: 60000
      #配置一个连接在池中最小生存的时间,单位是毫秒
      min-evictable-idle-time-millis: 300000
      #测试连接
      validation-query: SELECT 1 FROM DUAL
      #申请连接的时候检测,建议配置为true,不影响性能,并且保证安全
      test-while-idle: true
      #获取连接时执行检测,建议关闭,影响性能
      test-on-borrow: false
      #归还连接时执行检测,建议关闭,影响性能
      test-on-return: false
      #是否开启PSCache,PSCache对支持游标的数据库性能提升巨大,oracle建议开启,mysql下建议关闭
      pool-prepared-statements: false
      #开启poolPreparedStatements后生效
      max-pool-prepared-statement-per-connection-size: 20
      #配置扩展插件,常用的插件有=>stat:监控统计  log4j:日志  wall:防御sql注入
      filters: stat,wall,slf4j
      #打开mergeSql功能;慢SQL记录
      connection-properties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
      #配置DruidStatFilter
      web-stat-filter:
        enabled: true
        url-pattern: "/*"
        exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
      #配置DruidStatViewServlet
      stat-view-servlet:
        url-pattern: "/druid/*"
        #登录名
        login-username: root
        #登录密码
        login-password: root

第三步,重启项目。在日志信息里可以看到 Druid 的初始化信息。

第四步,通过 http://localhost:9002/druid/ 地址就可以在浏览器访问 Druid 的监控页面了,用户名和密码是我们在配置文件里指定的 root 和 root,登录后是这样的。

更多关于监控的配置信息,可以到 Druid 的 GitHub 仓库查看。

https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

源码地址 ​


GitHub 上标星 17000+ 的开源知识库《二哥的 Java 进阶之路》第一版 PDF 终于来了!包括Java基础语法、数组&字符串、OOP、集合框架、Java IO、异常处理、Java 新特性、网络编程、NIO、并发编程、JVM等等,共计 32 万余字,500+张手绘图,可以说是通俗易懂、风趣幽默……详情戳:太赞了,GitHub 上标星 17000+ 的 Java 教程

微信搜 沉默王二 或扫描下方二维码关注二哥的原创公众号沉默王二,回复 222 即可免费领取。

本文整理自沉默王二 后端八股的公开内容,仅供个人学习使用

本站仅供个人学习使用,请勿外传