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.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency>
引入依赖后刷新,可以看到:
SpringBoot同时引入了:
- jdbc
- HikariDataSource(SpringBoot的默认数据源)
- spring-tx 事务相关依赖
但是没有引入相关驱动,这是因为SpringBoot无法确定我们需要连接那种数据库。
1.2 引入MySQL场景
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.29</version></dependency>
1.3 修改MySQL版本的两种方式
方式一:
直接依赖引入具体版本(maven的就近依赖原则)
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.29</version></dependency>
方式二:
重新声明版本(maven的属性的就近优先原则)
<properties><java.version>1.8</java.version><mysql.version>5.1.49</mysql.version></properties>
1.4 修改配置项
数据源相关的配置前缀是 spring.datasource
spring:datasource:url: jdbc:mysql://localhost:3306/springboot_dbusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver
1.5 测试启动
如果相关依赖都已经导入,并且配置项正确,可以看到SpringBoot正常启动,并且默认的数据源是 HikariDataSource
2. 整合Druid数据源
官方Github地址
2.1 自定义方式整合
在xml中可以进行配置注入,同时也可以使用注解的方式。
@Configurationpublic class MyDataSourceConfig{@ConfigurationProperties("spring.datasource")@Beanpublic DataSource druidDataSource() {DruidDataSource druid = new DruidDataSource();return druid;}}
同时可以修改配置文件修改Druid的配置。
但是这种方式较为麻烦,不建议使用。
2.2 通过Stater的方式整合
<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.17</version></dependency>
配置示例:
spring:datasource:url: jdbc:mysql://localhost:3306/springboot_dbusername: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driverdruid:aop-patterns: com.atguigu.admin.*#监控SpringBeanfilters: stat,wall # 底层开启功能,stat(sql监控),wall(防火墙)stat-view-servlet: # 配置监控页功能enabled: truelogin-username: adminlogin-password: adminresetEnable: falseweb-stat-filter:# 监控webenabled: trueurlPattern: /*exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'filter:stat:# 对上面filters里面的stat的详细配置slow-sql-millis: 1000logSlowSql: trueenabled: truewall:enabled: trueconfig:drop-table-allow: false
3. 整合MyBatis
MyBatisGitHub仓库
MyBatis官方文档
引入依赖:
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.3</version></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.xmlmapper-locations: classpath:mybatis/mapper/*.xmlconfiguration: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语句。例如:
@Mapperpublic 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.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><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-pluspublic class MybatisPlusProperties {
5. 整合Redis
引入依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
SpringBoot默认使用的是lettuce
<dependency><groupId>io.lettuce</groupId><artifactId>lettuce-core</artifactId><version>${lettuce.version}</version></dependency>
可以切换为Jedis
,只需引入依赖:
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId></dependency>
配置示例:
spring:redis:url: redis://password@examlp.com:6379