1. 程式人生 > >阿里druid資料來源及JdbcTemplate配置使用

阿里druid資料來源及JdbcTemplate配置使用

接近年底了在外地出差格外想家呀,尤其這種到處都洋溢著節日喜慶的時節。忙裡偷閒把之前有關資料來源的疑惑整理了下。分別是資料來源和對資料庫的操作。

阿里巴巴的資料來源druid作為後起之秀,各種優點百科都有,這裡就不贅述了。今天主要說下相關配置。

druid配置及使用

新增相關jar包(我是maven專案,因此在pom.xml中新增如下依賴):

<!-- druid資料來源 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>
druid</artifactId> <version>1.0.28</version> </dependency>

專案是springMVC的,主要在spring-servlet.xml中新增如下程式碼:

<!-- 資料來源配置 -->
    <context:property-placeholder location="classpath:jdbc.properties"/>
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
>
<property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> <!-- 初始化連線大小 --> <property name="initialSize" value="${jdbc.initialSize}"/> <!-- 連線池最大使用連線數量 -->
<property name="maxActive" value="${jdbc.maxActive}"/> <!-- 連線池最小空閒 --> <property name="minIdle" value="${jdbc.minPoolSize}"/> <!-- 獲取連線最大等待時間 --> <property name="maxWait" value="${jdbc.maxIdleTime}"/> <!-- 配置監控統計攔截的filters,去掉後監控介面sql無法統計 --> <property name="filters" value="stat" /> <!--監控SQL語句--> <property name="proxyFilters"> <list> <ref bean="stat-filter"/> </list> </property> </bean> <!--SQL監控--> <bean id="stat-filter" class="com.alibaba.druid.filter.stat.StatFilter"> <!--慢SQL記錄 預設值為3000,也就是3秒--> <property name="slowSqlMillis" value="5000"/> <property name="logSlowSql" value="true"/> <!--SQL合併配置--> <property name="mergeSql" value="true"/> </bean>

在web.xml中新增如下程式碼:

<!-- 監控SQL情況 -->
  <servlet>
    <servlet-name>DruidStatView</servlet-name>
    <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
    <!--允許使用者清統計資料-->
    <init-param>
      <param-name>resetEnable</param-name>
      <param-value>true</param-value>
    </init-param>
    <!--使用者名稱-->
    <init-param>
      <param-name>loginUsername</param-name>
      <param-value>helloworld</param-value>
    </init-param>
    <!--密碼-->
    <init-param>
      <param-name>loginPassword</param-name>
      <param-value>helloworld</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>DruidStatView</servlet-name>
    <url-pattern>/druid/*</url-pattern>
  </servlet-mapping>

  <!--連線池啟用Web監控統計功能start -->
  <filter>
    <filter-name>DruidWebStatFilter</filter-name>
    <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
    <init-param>
      <param-name>exclusions</param-name>
      <param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>DruidWebStatFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <!--連線池啟用Web監控統計功能end-->

雖然資料來源配置完成了,但是要操作資料庫(增刪改查)還需要通過配置JdbcTemplate來實現(這裡只說這一種,還有其他方式)。

JdbcTemplate有關:

 Spring對資料庫的操作在jdbc上面做了深層次的封裝,使用spring的注入功能,可以把DataSource註冊到JdbcTemplate之中。

JdbcTemplate主要提供以下五類方法:

execute方法:可以用於執行任何SQL語句,一般用於執行DDL語句;

update方法及batchUpdate方法:update方法用於執行新增、修改、刪除等語句;batchUpdate方法用於執行批處理相關語句;

query方法及queryForXXX方法:用於執行查詢相關語句;

call方法:用於執行儲存過程、函式相關語句。

JdbcTemplate是Spring下的,因此無需加入相關jar包(spring配套jar包要加入)

在spring-servlet.xml中新增如下配置:

<!--注入 spring 的 jdbcTemplate-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="defaultSource"/>
    </bean>

這樣在專案其中之後可以在實現層通過註解的方式來呼叫實現操作資料庫

@Repository
public class WebDaoImpl implements WebDao {

    @Autowired
    JdbcTemplate jdbcTemplate;

    public List queryUserInfo()
    {
        String SQL = " SELECT * FROM H_USER";
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        try {
            list = jdbcTemplate.queryForList(SQL);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;
    }
}