Spring框架爲鏈接數據庫提供了許多的幫助,從JDBC鏈接到使用JdbcTemplate完成元素之間的映射技術。例如Hibernate、Spring Data提供了更高級別的功能,建立Repository的實現,用接口中的方法和xml文件具體SQL的映射,使得用java調用Sql更加簡便。java
Java的javax.sql.DataSource
一個接口,能夠獲取數據庫的Connection。是標準化的,取得鏈接的一種方式。固然在配置DataSource以前須要咱們導入所須要的jar包mysql
compile('org.springframework.boot:spring-boot-starter-jdbc')
compile 'mysql:mysql-connector-java:8.0.11'
複製代碼
這個方法很是的簡單,只須要在application.yml中配置一些元素便可spring
spring:
datasource:
url: jdbc:mysql://localhost:3306/xmall
username: root
password: *******
driver-class-name: com.mysql.jdbc.Driver
複製代碼
在SpringBoot中能夠不用詳細的指定driver-class-name,由於SpringBoot可以在所寫的url中推斷出來所用的sql
而後在測試方法類中查看是否已經配置完成,只要打印出來了配置信息,那麼既表示已經將配置文件中的元素配置到了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());
}
}
複製代碼
在application.yml中配置以下bash
buxuewushu:
datasource:
url: jdbc:mysql://localhost:3306/xmall
username: root
password: *******
driver-class-name: com.mysql.jdbc.Driver
複製代碼
而後在配置文件中寫以下信息app
/**
* @program: FirstSpringBoot
* @description:
* @author: hu_pf@suixingpay.com
* @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數據庫中的信息,即配置的數據源已經生效。spring-boot
若是須要配置多數據源的話,那麼能夠在使用上一小節的自定義配置來進行配置兩個數據源。可是在配置文件中配置兩個數據源的時候要配置一個主數據源,即在主數據源上加上@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();
}
複製代碼
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
複製代碼