SpringBoot要连接数据库进行数据访问需要做以下步骤:(以连接MySQL为例)
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-data-jdbcartifactId>
dependency>
引入依赖后刷新,可以看到:
SpringBoot同时引入了:
但是没有引入相关驱动,这是因为SpringBoot无法确定我们需要连接那种数据库。
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>8.0.29version>
dependency>
方式一:
直接依赖引入具体版本(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>
数据源相关的配置前缀是 spring.datasource
spring:
datasource:
url: jdbc:mysql://localhost:3306/springboot_db
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
如果相关依赖都已经导入,并且配置项正确,可以看到SpringBoot正常启动,并且默认的数据源是 HikariDataSource
官方Github地址
在xml中可以进行配置注入,同时也可以使用注解的方式。
@Configuration
public class MyDataSourceConfig {
@ConfigurationProperties("spring.datasource")
@Bean
public DataSource druidDataSource() {
DruidDataSource druid = new DruidDataSource();
return druid;
}
}
同时可以修改配置文件修改Druid的配置。
但是这种方式较为麻烦,不建议使用。
<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
MyBatisGitHub仓库
MyBatis官方文档
引入依赖:
<dependency>
<groupId>org.mybatis.spring.bootgroupId>
<artifactId>mybatis-spring-boot-starterartifactId>
<version>2.1.3version>
dependency>
MybatisProperties
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程序无法启动。
@MapperScan
注解可以指定mapper接口所在的位置
@SpringBootApplication
@MapperScan("com.jc.admin.mapper")
public class AdminApplication {
public static void main(String[] args) {
SpringApplication.run(AdminApplication.class, args);
}
}
@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
文件中编写了查询配置。
官方文档
引入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 {
引入依赖:
<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