(二)Spring Boot 集成 MySQL —— 《一步一步学 Spring Boot 2》读书笔记

本文纯个人读书笔记,书籍《一步一步学 Spring Boot 2》
如果喜欢,可直接购买书籍。如有侵权,请联系删除

一、集成 MySQL

Spring Boot 拥有功能非常强大的资源库,借助于 Spring Boot,我们可以十分方便的调用数据库。

1.依赖

在 pom 文件添加 MySQL 所需的依赖。

pom.xml:

        <!--MySQL 连接 Java 的驱动程序-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.21</version>
        </dependency>
        <!-- 支持 JDBC 连接数据库-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

mysql-connector-java 如果不进行版本填写,有可能版本对不上,导致后续报错,请选择自己数据库对应对应的驱动版本。

2.添加数据库配置

在 application.properties 中添加数据库配置信息。

application.properties:

### mysql 连接信息
spring.datasource.url=jdbc:mysql://localhost:3306/test
### 用户名
spring.datasource.username=root
### 密码
spring.datasource.password=123456
### 驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

到这里,Spring Boot 已经集成 MySQL 了。

二、测试

1.创建数据库表 user

直接运行下方建表语句,创建数据库表 user 。

-- ----------------------------
-- 用户表
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS USER;
CREATE TABLE USER (
  id VARCHAR(32) NOT NULL COMMENT '主键',
  NAME VARCHAR(10) DEFAULT NULL COMMENT '用户名',
  PASSWORD VARCHAR(32) DEFAULT NULL COMMENT '密码'
);

INSERT INTO USER (id, NAME, PASSWORD) VALUES ('1', 'aa', '123456');
INSERT INTO USER (id, NAME, PASSWORD) VALUES ('2', 'bb', '123456');

2.创建实体类

创建 com.xiaoyue.demo.model.User 的实体类。

User .java:

public class User {

    private String id;
    private String name;
    private String password;

    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 getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "UserFilter{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

3.添加测试代码

在项目的单元测试类 DemoApplicationTests.java 中添加如下代码:

DemoApplicationTests.java:

    @Resource
    private JdbcTemplate jdbcTemplate ;
    /**
     * MySQL 集成 Sprig Boot 简单测试
     */
    @Test
    public void mySqlTest() {
        String sql = "select id, name, password from user ";
        List<User> userList = (List<User>) jdbcTemplate.query(sql, new RowMapper<User>() {
            @Override
            public User mapRow(ResultSet rs, int rowNum) throws SQLException {
                User user = new User();
                user.setId(rs.getString("id"));
                user.setName(rs.getString("name"));
                user.setPassword(rs.getString("password"));
                return user;
            }
        });
        System.out.println("查询成功:");

        for (User user : userList) {
            System.out.println(user);
        }
    }

4.运行测试

光标移到 mySqlTest 方法上面,右键执行 mySqlTest 的单元测试。
在这里插入图片描述

5.运行结果

在控制台打印出 User 信息。
在这里插入图片描述

三、Intellij IDEA 连接 MySql

点击 Intellij IDEA 的右侧 Database 图标。
在这里插入图片描述
点击 ‘+’ 号 ——> Data Source ——> MySQL。
在这里插入图片描述
注意选择对应的数据库驱动版本,然后填入相关信息,点击 “Test Connection” 进行连接测试。
在这里插入图片描述

成功后点击 “OK” 进行保存。
在这里插入图片描述

三、集成 Druid

Druid 是阿里巴巴开源项目中的一个 型数据库连接池。Druid 是一个 JDBC 组件,它包括三部分:

1. DruidDriver 代理 Driver,能够提供基于 Filter-Chain 模式的插件体系。

2. DruidDataSource 高效可管理的数据库连接池。

3. SQLParser。它支持所有 JDBC 兼容的数据库,包括 Oracle、MySQL、SQL Server 等。

Durid 在监控、可扩展、稳定性和性能方面具有明显的优势。通过其提供的监控功能,可以实现观察数据库连接池和 SQL 查询的工作情况。使用 Druid 连接池,可以提高数据库的访问性能。

(原谅我没用过这个,这边引用作者原本,简单点就是好用。)

1.引入依赖

在 pom.xml 中引入 Druid 依赖。

pom.xml:

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.9</version>
        </dependency>

2.配置

在 application.properties 中添加 Druid 参数配置。

application.properties:

###  数据源类别
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
### 初始化大小,最小,最大
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
### 配置获取连接等待超时的时间,单位是毫秒
spring.datasource.maxWait=60000
### 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.datasource.timeBetweenEvictionRunsMillis=60000
### 配置一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.minEvictableIdleTimeMillis=300000
spring.datasource.validationQuery=SELECT 1 FROM DUAL
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
### 打开PSCache,并且指定每个连接上PSCache的大小
spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
### 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
spring.datasource.filters=stat,wall,log4j
### 通过connectProperties属性来打开mergeSql功能;慢SQL记录
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
### 合并多个DruidDataSource的监控数据
#spring.datasource.useGlobalDataSourceStat=true

3.开启监控功能

这边采用代码注册 Servlet 和 Filter 的方式进行开启监控功能。Spring Boot 推荐使用这种方式。

新建一个 com.xiaoyue.demo.filter.DruidConfiguration.java 类。

DruidConfiguration.java:

@Configuration
public class DruidConfiguration {

    @Bean
    public ServletRegistrationBean statViewServlet(){
        //创建servlet注册实体
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(
                new StatViewServlet(),"/druid/*");
        //设置ip白名单
        servletRegistrationBean.addInitParameter("allow","127.0.0.1");
        //设置ip黑名单,如果allow与deny共同存在时,deny优先于allow
        servletRegistrationBean.addInitParameter("deny","192.168.0.19");
        //设置控制台管理用户
        servletRegistrationBean.addInitParameter("loginUsername","druid");
        servletRegistrationBean.addInitParameter("loginPassword","123456");
        //是否可以重置数据
        servletRegistrationBean.addInitParameter("resetEnable","false");
        return servletRegistrationBean;
    }

    @Bean
    public FilterRegistrationBean statFilter(){
        //创建过滤器
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
        //设置过滤器过滤路径
        filterRegistrationBean.addUrlPatterns("/*");
        //忽略过滤的形式
        filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return filterRegistrationBean;
    }
}

@Configuration: Spring 中会有很多的 XML 配置文件,文件中会配置很多的 bean。在类上添加@Configuration 注解,大家可以理解为该类变成一个 XML 配置文件。

@Bean: 等同于 XML 配置文件中的配置。Spring Boot 会把加上该注解的方法的返回值装载进 Spring IoC 容器,方法的名称对应标签的 id 属性值。具体代码如下:

@Bean
public FilterRegistrationBean druidStatFilter(){
      FilterRegistrationBean filterRegistrationBean
                            = new FilterRegistrationBean(new WebStatFilter());
      return filterRegistrationBean;
}

等同于

<bean id="druidStatFilter" 
class="org.springframework.boot.web.servlet.ServletRegistrationBean">
</bean>

4.测试

直接运行 “DemoApplication.java”,运行程序。访问 http://localhost:8080/druid/login.html 出现 Druid 的登录界面。
在这里插入图片描述

这边的用户名和密码就是在 DruidConfiguration.java 中设置的。
在这里插入图片描述

注: 如果在 application.properties 中配置了
application.properties :

 server.servlet.context-path=/demo

这时候访问 http://localhost:8080/druid/login.html 会报 404 错误。这时候的访问地址应该是 http://localhost:8080/demo/druid/login.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值