SpringBoot学习笔记--数据库操作

文章目录

      • 7.1 JDBC+HikariDataSource
      • 7.2 整合 Druid 到 Spring-Boot

7.1 JDBC+HikariDataSource

  • 需求:演示 Spring Boot 如何通过 jdbc+HikariDataSource 完成对 Mysql 操作

说明: HikariDataSource : 目前市面上非常优秀的数据源, 是 springboot2

第一步、创建测试数据库和表

-- 创建 furns_ssm
DROP DATABASE IF EXISTS spring_boot;
CREATE DATABASE spring_boot;
USE spring_boot; -- 创建家居表
CREATE TABLE furn(
`id` INT(11) PRIMARY KEY AUTO_INCREMENT, ## id
`name` VARCHAR(64) NOT NULL, ## 家居名
`maker` VARCHAR(64) NOT NULL, ## 厂商
`price` DECIMAL(11,2) NOT NULL, ## 价格
`sales` INT(11) NOT NULL, ## 销量
`stock` INT(11) NOT NULL, ## 库存
`img_path` VARCHAR(256) NOT NULL ## 照片路径
);-- 初始化家居数据
INSERT INTO furn(`id` , `name` , `maker` , `price` , `sales` , `stock` , `img_path`)
VALUES(NULL , ' 北 欧 风 格 小 桌 子 ' , ' 熊 猫 家 居 ' , 180 , 666 , 7 ,
'assets/images/product-image/1.jpg');
INSERT INTO furn(`id` , `name` , `maker` , `price` , `sales` , `stock` , `img_path`)
VALUES(NULL , ' 简 约 风 格 小 椅 子 ' , ' 熊 猫 家 居 ' , 180 , 666 , 7 ,
'assets/images/product-image/2.jpg');
INSERT INTO furn(`id` , `name` , `maker` , `price` , `sales` , `stock` , `img_path`)
VALUES(NULL , ' 典 雅 风 格 小 台 灯 ' , ' 蚂 蚁 家 居 ' , 180 , 666 , 7 ,
'assets/images/product-image/3.jpg');
INSERT INTO furn(`id` , `name` , `maker` , `price` , `sales` , `stock` , `img_path`)
VALUES(NULL , ' 温 馨 风 格 盆 景 架 ' , ' 蚂 蚁 家 居 ' , 180 , 666 , 7 ,
'assets/images/product-image/4.jpg');
SELECT * FROM furn

SpringBoot学习笔记--数据库操作_第1张图片

第二步、在pom文件中导入依赖需要的依赖

 
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-data-jdbcartifactId>
        dependency>

        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>5.1.49version>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
        dependency>

第三步、在 application.yml 配置操作数据源的信息

  # 数据库配置
  datasource:
    # 说明 : 如果没有使用 useSSL=true, 会报红警告
    url: jdbc:mysql://localhost:3308/spring_boot?useUnicode=true&characterEncoding=utf-8&useSSL=true
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

第四步、创建实体类 Furn.java

public class Furn {
    
    private Integer id;
    
    private String name;
    
    private String maker;
    
    private BigDecimal price;
    
    private Integer sales;
    
    private Integer stock;
    
    private String imgPath = "assets/images/product-image/1.jpg";
 	//此处省略无参、有参构造、getter、setter、toString方法   
}

第五步、去test目录下创建测试类

@SpringBootTest
public class ApplicationTests {

    //Resource和Autowired 注解的区别在上一篇文章有解释~
    @Resource
    private JdbcTemplate jdbcTemplate;

    @Test
    public void contextLoads(){
        BeanPropertyRowMapper<Furn> rowMapper =
                new BeanPropertyRowMapper<>(Furn.class);
        List<Furn> furns = jdbcTemplate.query("select * from furn", rowMapper);
        for (Furn furn : furns) {
            System.out.println(furn);
        }
        System.out.println(jdbcTemplate.getDataSource().getClass());
    }
}

@Resource和@Autowired有啥区别?_xjz_2002的博客-CSDN博客

第六步、运行结果

SpringBoot学习笔记--数据库操作_第2张图片

7.2 整合 Druid 到 Spring-Boot

  1. 官方文档

使用手册: https://github.com/alibaba/druid

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

  1. 基本介绍
  • HiKariCP: 目前市面上非常优秀的数据源, 是 springboot2 默认数据源
  • Druid: 性能优秀,Druid 提供性能卓越的连接池功能外【Java 基础】,还集成了 SQL 监控,黑名单拦截等功能,强大的监控特性,通过 Druid 提供的监控功能,可以清楚知道连接池和 SQL 的工作情况,所以根据项目需要,我们也要掌握 Druid 和 SpringBoot 整合
  1. 整合 Druid 到 Spring-Boot 方式
  • 自定义方式
  • 引入 starter 方式
  1. 代码实现

第一步、修改pom.xml,引入 druid 依赖


<dependency>
    <groupId>com.alibabagroupId>
    <artifactId>druidartifactId>
    <version>1.1.17version>
dependency>

第二步、创建配置类 DruidDataSourceConfig.java

@Configuration
public class DruidDataSourceConfig {
    //默认的自动装配:是判断容器中没有才会配@ConditionalOnMissingBean(DataSource.class)
    /**
     * 1. 默认的数据源配置是 @ConditionalOnMissingBean(DataSource.class)
     * 2. 也就是当容器中没有 DataSource 组件时,才会注入,如果我们这里配置了
          DataSource, 就会使用我们配置的数据源
     * 3. "spring.datasource" 会将 druid 数据源的配置绑定到 application.yml,
          就不需要 setXxx
     */

    @ConfigurationProperties("spring.datasource")
    @Bean
    public DataSource dataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        //"spring.datasource" 会将 druid 数据源的配置绑定到 application.yml, 就不需要setXxx
        //druidDataSource.setUrl();
        //druidDataSource.setUsername();
        //druidDataSource.setPassword();
        //druidDataSource.setDriverClassName();
        return druidDataSource;
    }
}

第三步、完成测试,运行ApplicationTests.java,观察数据源的运行类型

SpringBoot学习笔记--数据库操作_第3张图片

第四步、debug看一下我们的ioc容器

SpringBoot学习笔记--数据库操作_第4张图片

你可能感兴趣的:(#,SpringBoot学习,spring,boot,数据库,学习)