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中配置以下app
buxuewushu: datasource: url: jdbc:mysql://localhost:3306/xmall username: root password: ******* driver-class-name: com.mysql.jdbc.Driver
而後在配置文件中寫以下信息框架
/** * @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(); } }
而後在測試類中測試以下spring-boot
@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數據庫中的信息,即配置的數據源已經生效。測試
若是須要配置多數據源的話,那麼能夠在使用上一小節的自定義配置來進行配置兩個數據源。可是在配置文件中配置兩個數據源的時候要配置一個主數據源,即在主數據源上加上@Primary註解。由於SpringBoot的自動配置功能須要有一個指定的數據源進行加載。ui
只須要在資源文件中配置不一樣的數據源,用名字進行區分開來,例如以下:
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