不學無數——SpringBoot入門VI
SpringBoot
1 連線資料庫
Spring框架為連線資料庫提供了許多的幫助,從JDBC連線到使用JdbcTemplate完成元素之間的對映技術。例如Hibernate、Spring Data提供了更高級別的功能,建立Repository的實現,用介面中的方法和xml檔案具體SQL的對映,使得用java呼叫Sql更加簡便。
1.1 配置DataSource
Java的javax.sql.DataSource
一個介面,可以獲取資料庫的Connection。是標準化的,取得連線的一種方式。當然在配置DataSource之前需要我們匯入所需要的jar包
compile('org.springframework.boot:spring-boot-starter-jdbc') compile 'mysql:mysql-connector-java:8.0.11'
1.1.1 預設配置
這個方法非常的簡單,只需要在application.yml中配置一些元素即可
spring:
datasource:
url: jdbc:mysql://localhost:3306/xmall
username: root
password: *******
driver-class-name: com.mysql.jdbc.Driver
在SpringBoot中可以不用詳細的指定driver-class-name,因為SpringBoot能夠在所寫的url中推斷出來所用的
然後在測試方法類中檢視是否已經配置完成,只要打印出來了配置資訊,那麼既表示已經將配置檔案中的元素配置到了DataSource中。
@RunWith(SpringRunner.class) @SpringBootTest public class FirstSpringBootApplicationTests { @Autowired private DataSourceProperties dataSourceProperties; @Autowired ApplicationContext applicationContext; @Test public void contextLoads() { // 獲取配置的資料來源 DataSource dataSource = applicationContext.getBean(DataSource.class); // 檢視配置資料來源資訊 System.out.println(dataSource); System.out.println(dataSource.getClass().getName()); System.out.println(dataSourceProperties.getUsername()); } }
1.1.2 自定義配置資料來源
在application.yml中配置如下
buxuewushu:
datasource:
url: jdbc:mysql://localhost:3306/xmall
username: root
password: *******
driver-class-name: com.mysql.jdbc.Driver
然後在配置檔案中寫如下資訊
/**
* @program: FirstSpringBoot
* @description:
* @author: [email protected]
* @create: 2018-07-30 16:37
**/
@Configuration
public class DataConfigure {
@Bean(name = "myDataSource")
@Qualifier("myDataSource")
@ConfigurationProperties("buxuewushu.datasource")
public DataSource dateSource(){
return DataSourceBuilder.create().build();
}
}
然後在測試類中測試如下
@Resource(name = "myDataSource")
private DataSource myDataSource;
@Autowired
ApplicationContext applicationContext;
@Test
public void contextLoads() {
//執行SQL,輸出查到的資料
JdbcTemplate jdbcTemplate = new JdbcTemplate(myDataSource);
List<?> resultList = jdbcTemplate.queryForList("select * from tb_address");
System.out.println("===>>>>>>>>>>>" + resultList);
}
發現能夠打印出來Mysql資料庫中的資訊,即配置的資料來源已經生效。
1.1.3 配置多資料來源
如果需要配置多資料來源的話,那麼可以在使用上一小節的自定義配置來進行配置兩個資料來源。但是在配置檔案中配置兩個資料來源的時候要配置一個主資料來源,即在主資料來源上加上@Primary註解。因為SpringBoot的自動配置功能需要有一個指定的資料來源進行載入。
只需要在資原始檔中配置不同的資料來源,用名字進行區分開來,例如如下:
buxuewushu:
datasource:
first:
url: jdbc:mysql://localhost:3306/first
username: root
password: hpy911213
driver-class-name: com.mysql.jdbc.Driver
buxuewushu:
datasource:
secend:
url: jdbc:mysql://localhost:3306/secend
username: root
password: hpy911213
driver-class-name: com.mysql.jdbc.Driver
然後在java的配置檔案中,載入配置時如下寫即可:
@Bean
@ConfigurationProperties("buxuewushu.datasource.first")
@Primary
public DataSource dateSourceFirst(){
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties("buxuewushu.datasource.secend")
public DataSource dateSourceSecend(){
return DataSourceBuilder.create().build();
}
1.1.4 使用JdbcTemplate
Spring的JdbcTemplate
和NamedParameterJdbcTemplate
這兩個類是自動配置的。可以直接在類中@Autowired進行使用。例子如下所示:
@Component
public class MyBean {
private final JdbcTemplate jdbcTemplate;
@Autowired
public MyBean(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
// ...
}
如果想配置一些關於template的引數的話,可以使用spring.jdbc.template.*
進行配置。
spring.jdbc.template.max-rows=500