1. 程式人生 > >spring boot整合使用JdbcTemplate之詳解!!

spring boot整合使用JdbcTemplate之詳解!!

spring boot 對資料庫操作在jdbc上做了進一步的封裝,jdbcTemplate提供了基於註解的事務管理功能,spring可以通過註解的形式,把DataSouce資料來源直接注入到jdbcTemplate中。

1,加入Maven依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

主要作用:

  • tomcat-jdbc-{version}.jar為我們自動配置DataSource.

  • 如果你沒有定義任何DataSource,SpringBoot將會自動配置一個記憶體的資料庫資源設定

  • 如果你沒有定義任何DataSource,SpringBoot將會自動配置一個記憶體的資料庫資源設定

  • 如果沒有設定任一個beans,SpringBoot會自動註冊它:

spring boot 在啟動的時候會去自動載入資料操作配置資訊,根據配置,spring-boot會去載入calasspath下的schema.sql和data.sql檔案,同時也會載入一些classpath下存在的預設配置(比如:schema-platform.sqldataplatform.sql和data−{platform}.sql)。

#可以定義你的建庫檔案
spring.datasource.schema=test.sql
#可以定義你的資料檔案
spring.datasource.data=xxxx-data.sql
#可以決定是不是要初始化這些資料庫檔案
spring.datasource.initialize=false
#有了錯誤是否繼續執行
spring.datasource.continueOnError=false
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/sb_jdbc
spring.datasource.username=root
spring.datasource.password=××××
  • ps:在spring boot中,提供了兩種配置檔案(application.properties和application.yml檔案),這兩種檔案基本上用法一樣,後面會具體講到。這裡需要注意的是如果加了schemal配置,在classpath下沒有test.sql就會報錯。

2,自定義資料來源

與之前我們使用spring框架一樣,這裡我們可以根據專案配置不同的資料,使用@Bean的方式注入: 
先排除tomcat-jdbc的預設配置dataSource

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jdbc</artifactId>
        </exclusion>
    </exclusions>
</dependency>

定義自己的資料資源 這裡使用了阿里巴巴的資料池管理,你也可以使用BasicDataSource

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.0.26</version>
</dependency>
  • 通過bena的方式使用: 

@Bean

public DataSource dataSource() {
    DruidDataSource dataSource = new DruidDataSource();
    dataSource.setUrl(env.getProperty("spring.datasource.url"));
        //使用者名稱
            dataSource.setUsername(env.getProperty("spring.datasource.username"));
            dataSource.setPassword(env.getProperty("spring.datasource.password"));//密碼
            dataSource.setInitialSize(2);
            dataSource.setMaxActive(20);
            dataSource.setMinIdle(0);
            dataSource.setMaxWait(60000);
            dataSource.setValidationQuery("SELECT 1");
            dataSource.setTestOnBorrow(false);
            dataSource.setTestWhileIdle(true);
            dataSource.setPoolPreparedStatements(false);
            return dataSource;
    }

當然如果你不想用上述java程式碼的方式,你也可以通過配置的方式去生成dataSource Bean,只需要在application.properties中加入配置:

    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

3,定義實體類(略)這個沒有意思

4,建立持久層

通過配置了資料,就可以通過jedbcTemplate與資料庫進行互動。

@Repository
public class UserDao {
    private Logger logger = LoggerFactory.getLogger(UserDao.class) ;
    @Autowired
    private JdbcTemplate jdbcTemplate ;
    public List<User> findAll(){
        if(jdbcTemplate.getDataSource() instanceof DruidDataSource){
            logger.info("驗證確實通過@Bean注入了DruiDataSource資料來源");
        }
        String sql = "select * from user" ;
        List<User> list = jdbcTemplate.query(sql,new BeanPropertyRowMapper(User.class)) ;
        return list ;
    }
}
.....