SpringBoot学习系列(⼗⼀)------SpringBoot访问数据库
SpringBoot学习系列(⼗⼀)------SpringBoot访问数据库
前⾔
在项⽬开发中,数据库的访问是必不可少的,对于数据访问层,⽆论是SQL还是NoSql,SpringBoot默认采⽤整合Spring Data的⽅式进⾏统⼀处理,添加了⼤量的⾃动配置,屏蔽了很多设置.引⼊各种Template或Repository来简化我们对数据访问层的操作,对我们来说只需要进⾏简单的设置即可.
正⽂
1.使⽤IDEA构建⼀个简单的SpringBoot应⽤
我们先⽤IDEA创建⼀个SringBoot应⽤,引⼊web组件,jdbc组件
2.使⽤jdbc
在SpringBoot的配置⽂件中配置好数据源,我们就可以查看默认的数据库连接:
spring.datasource.url = jdbc:mysql://127.0.0.1:3306/tale?uUnicode=true&characterEncoding=utf-8&rverTimezone=GMT%2B8 spring.datasource.urname = root
spring.datasource.password = 123456
spring.datasource.driverClassName = sql.jdbc.Driver
在测试类中测试连接:
@Autowired
DataSource dataSource;
@Test
public void contextLoads()throws SQLException {
System.out.Class());
Connection connection = Connection();
System.out.println(connection);
connection.clo();
}
可以看到控制台打印:
可以看到,SpringBoot2.0+使⽤的默认数据源是:com.zaxxer.hikari.HikariDataSource
它还⽀持以下数据源:dbcp2,tomcat
我们查看DataSourceConfiguration这个类,可以看到它还⽀持⾃定义数据源:
abstract class DataSourceConfiguration {
DataSourceConfiguration(){
}
protected static<T> T createDataSource(DataSourceProperties properties, Class<?extends DataSource> type){ return properties.initializeDataSourceBuilder().type(type).build();
}
@ConditionalOnMissingBean({DataSource.class})
@ConditionalOnProperty(
name ={"pe"}
)
static class Generic {
Generic(){
}
@Bean
public DataSource dataSource(DataSourceProperties properties){
return properties.initializeDataSourceBuilder().build();
}
}
@ConditionalOnClass({BasicDataSource.class})
@ConditionalOnMissingBean({DataSource.class})
@ConditionalOnProperty(
name ={"pe"},
havingValue ="s.dbcp2.BasicDataSource",
年终奖扣税计算
matchIfMissing =true
)
static class Dbcp2 {
Dbcp2(){
}
@Bean
@ConfigurationProperties(
prefix ="spring.datasource.dbcp2"
)
public BasicDataSource dataSource(DataSourceProperties properties){
return(ateDataSource(properties, BasicDataSource.class);
}
}
@ConditionalOnClass({HikariDataSource.class})
@ConditionalOnClass({HikariDataSource.class})
@ConditionalOnMissingBean({DataSource.class})
@ConditionalOnProperty(
name ={"pe"},
havingValue ="com.zaxxer.hikari.HikariDataSource",
matchIfMissing =true
)
static class Hikari {
Hikari(){
}
@Bean
@ConfigurationProperties(
prefix ="spring.datasource.hikari"
)
public HikariDataSource dataSource(DataSourceProperties properties){
HikariDataSource dataSource =(ateDataSource(properties, HikariDataSource.class);
if(StringUtils.Name())){
dataSource.Name());
}
return dataSource;
}
}
@ConditionalOnClass({at.jdbc.pool.DataSource.class})
@ConditionalOnMissingBean({DataSource.class})
@ConditionalOnProperty(
name ={"pe"},
havingValue ="at.jdbc.pool.DataSource",
matchIfMissing =true
)
static class Tomcat {
Tomcat(){
}
@Bean
@ConfigurationProperties(
prefix ="at"
)
public at.jdbc.pool.DataSource dataSource(DataSourceProperties properties){
at.jdbc.pool.DataSource dataSource =(at.jdbc.pool.ateDataSource(pro perties, at.jdbc.pool.DataSource.class);
DatabaDriver databaDriver = DatabaDriver.fromJdbcUrl(properties.determineUrl());
String validationQuery = ValidationQuery();
if(validationQuery != null){
怎样做冰糖葫芦dataSource.tTestOnBorrow(true);
dataSource.tValidationQuery(validationQuery);
}
return dataSource;
}
}
}
它的⾃定义数据源是这样定义的:
@ConditionalOnMissingBean({DataSource.class})
@ConditionalOnProperty(
name ={"pe"}
)
白灼菜心怎么做static class Generic {
Generic(){
关于陶渊明的作文
律所实习日记}
丁火喜忌@Bean
public DataSource dataSource(DataSourceProperties properties){
return properties.initializeDataSourceBuilder().build();
}
}
其次,我们可以将建表以及插⼊数据的sql脚本放在指定的⽬录,这样项⽬在启动的时候会⾃动建表:
默认情况下,将脚本命名为schema.sql或者schema-all.sql,并放在resource⽬录下就可以如果要⾃⼰指定⽂件名,需要在配置⽂件中配置⼀个属性来指定⽂件名:
spring:
datasource:
schema:
‐ classpath:department.sql
//该属性的值是个列表,我们可以指定多个⽂件
//在SPringBoot2.0以后,如果要运⾏sql脚本还需要加⼊下⾯这个配置
initialization-mode: always
SpringBoot默认整合了JdbcTemplate操作数据库,我们可以直接使⽤:
@Controller
public class HelloController {
@Autowired
private JdbcTemplate jdbcTemplate;
@ResponBody
@RequestMapping("/map")
public Map<String, Object>map(){
List<Map<String, Object>> maps = jdbcTemplate.queryForList("lect * from t_contents");
for(Map<String, Object> map : maps
){
System.out.println(map);
}
双卡单待(0);
}
}
页⾯访问:小园赋
3.整合Druid数据源