SpringBoot 数据访问

SpringBoot 数据访问

文章目录

  • SpringBoot 数据访问
    • 1. 引入数据源
      • 1.1 引入JDBC场景
      • 1.2 引入MySQL场景
      • 1.3 修改MySQL版本的两种方式
      • 1.4 修改配置项
      • 1.5 测试启动
    • 2. 整合Druid数据源
      • 2.1 自定义方式整合
      • 2.2 通过Stater的方式整合
    • 3. 整合MyBatis
      • 3.1 MyBatis配置
      • 3.2 整合注解进行配置
    • 4. 整合MyBatisPlus
    • 5. 整合Redis

1. 引入数据源

SpringBoot要连接数据库进行数据访问需要做以下步骤:(以连接MySQL为例)

  • 引入相关依赖
    • 引入MySQL依赖(注意MySQL版本)
    • 引入JDBC依赖
  • 配置连接的 url、username、password、驱动

1.1 引入JDBC场景

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

引入依赖后刷新,可以看到:

SpringBoot 数据访问_第1张图片

SpringBoot同时引入了:

  • jdbc
  • HikariDataSource(SpringBoot的默认数据源)
  • spring-tx 事务相关依赖

但是没有引入相关驱动,这是因为SpringBoot无法确定我们需要连接那种数据库。

1.2 引入MySQL场景

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

1.3 修改MySQL版本的两种方式

方式一:

直接依赖引入具体版本(maven的就近依赖原则)

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

方式二:

重新声明版本(maven的属性的就近优先原则)

<properties>
    <java.version>1.8java.version>
    <mysql.version>5.1.49mysql.version>
properties>

1.4 修改配置项

数据源相关的配置前缀是 spring.datasource

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/springboot_db
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

1.5 测试启动

如果相关依赖都已经导入,并且配置项正确,可以看到SpringBoot正常启动,并且默认的数据源是 HikariDataSource

SpringBoot 数据访问_第2张图片

2. 整合Druid数据源

官方Github地址

2.1 自定义方式整合

在xml中可以进行配置注入,同时也可以使用注解的方式。

@Configuration
public class MyDataSourceConfig  {

    @ConfigurationProperties("spring.datasource")
    @Bean
    public DataSource druidDataSource() {

        DruidDataSource druid = new DruidDataSource();

        return druid;
    }
}

同时可以修改配置文件修改Druid的配置。

但是这种方式较为麻烦,不建议使用。

2.2 通过Stater的方式整合

<dependency>
    <groupId>com.alibabagroupId>
    <artifactId>druid-spring-boot-starterartifactId>
    <version>1.1.17version>
dependency>

配置示例:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/springboot_db
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

    druid:
      aop-patterns: com.atguigu.admin.*  #监控SpringBean
      filters: stat,wall     # 底层开启功能,stat(sql监控),wall(防火墙)

      stat-view-servlet:   # 配置监控页功能
        enabled: true
        login-username: admin
        login-password: admin
        resetEnable: false

      web-stat-filter:  # 监控web
        enabled: true
        urlPattern: /*
        exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'

      filter:
        stat:    # 对上面filters里面的stat的详细配置
          slow-sql-millis: 1000
          logSlowSql: true
          enabled: true
        wall:
          enabled: true
          config:
            drop-table-allow: false

3. 整合MyBatis

MyBatisGitHub仓库

MyBatis官方文档

引入依赖:

<dependency>
    <groupId>org.mybatis.spring.bootgroupId>
    <artifactId>mybatis-spring-boot-starterartifactId>
    <version>2.1.3version>
dependency>

MybatisProperties

3.1 MyBatis配置

SpringBoot整合MyBatis与其它跨屏就爱一样是自动配置。

  • 可以查看MybatisAutoConfiguration
@org.springframework.context.annotation.Configuration
@ConditionalOnClass({ SqlSessionFactory.class, SqlSessionFactoryBean.class })
@ConditionalOnSingleCandidate(DataSource.class)
@EnableConfigurationProperties(MybatisProperties.class)
@AutoConfigureAfter({ DataSourceAutoConfiguration.class, MybatisLanguageDriverAutoConfiguration.class })
public class MybatisAutoConfiguration implements InitializingBean {
  • MybatisProperties中可以看到配置前缀都是以mybatis开头的:
@ConfigurationProperties(prefix = MybatisProperties.MYBATIS_PREFIX)
public class MybatisProperties {

  public static final String MYBATIS_PREFIX = "mybatis";
  • 修改配置项
mybatis:
#  config-location: classpath:mybatis/config/mybatis-config.xml
  mapper-locations: classpath:mybatis/mapper/*.xml
  configuration:
    map-underscore-to-camel-case: true

注意:config-location不可以与configuration 一起使用,configuration是用于指定MyBatis配置文件的位置,如果一起使用就会出现冲突导致SpringBoot程序无法启动。

3.2 整合注解进行配置

  • 使用@MapperScan注解可以指定mapper接口所在的位置
    • 但是注意要标记在配置类上
@SpringBootApplication
@MapperScan("com.jc.admin.mapper")
public class AdminApplication {

    public static void main(String[] args) {
        SpringApplication.run(AdminApplication.class, args);
    }
}
  • MyBatis提供了一些注解来简化开发,可以在通过注解编写一些简单的SQL语句。例如:
@Mapper
public interface UserMapper {
    
    @Insert("insert into t_user (username, password) values(#{username}, #{password})")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    void save(User user);
    
    @Select("select * from t_user where id = #{id}")
    User getUserById(Long id);
}

但是要注意,不可以一个方法既标记了上面所示的注解,又在mapper.xml文件中编写了查询配置。

4. 整合MyBatisPlus

官方文档

引入Stater

<dependency>
    <groupId>com.baomidougroupId>
    <artifactId>mybatis-plus-boot-starterartifactId>
    <version>最新版本version>
dependency>

配置:

配置mapper扫描

@SpringBootApplication
@MapperScan("com.baomidou.mybatisplus.samples.quickstart.mapper")
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

参考配置类:

所有配置都是以mybatis-plus开头

@Data
@Accessors(chain = true)
@ConfigurationProperties(prefix = Constants.MYBATIS_PLUS) // mybatis-plus
public class MybatisPlusProperties {

5. 整合Redis

引入依赖:

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

SpringBoot默认使用的是lettuce

<dependency>
  <groupId>io.lettucegroupId>
  <artifactId>lettuce-coreartifactId>
  <version>${lettuce.version}version>
dependency>

可以切换为Jedis,只需引入依赖:

<dependency>
    <groupId>redis.clientsgroupId>
    <artifactId>jedisartifactId>
dependency>

配置示例:

spring:
  redis:
    url: redis://[email protected]:6379

你可能感兴趣的:(#,SpringBoot,spring,boot,java,spring)