論壇首頁 Java企業應用論壇

SSI框架基礎整合搭建圖文教程

瀏覽 190 次
精華帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隱藏帖 (0)
作者 正文
   發表時間:2019-06-03   最后修改:2019-06-03

文章轉載自:https://www.jiweichengzhu.com/article/4a6486e6d3f141f58da69404e82a79a6

如果還有問題,加群交流:686430774

案例代碼下載,請移步原文鏈接!

三大框架,除了SSH之外,還有一個版本是SSI,struts + spring + ibatis,數據庫映射的框架不再是hibernate了,而是ibatis,它對比hibernate相對靈活一些,而且上手更快,它作為mybatis的前身,也在市面上流行了很久,現在幾乎不怎么用它了,當年也是做了詳細筆記的,本文中整理分享給大家。

記得最開始使用它的時候,還鬧了許多笑話,當時maven還沒有流行起來,每次都還是需要在項目中單獨引包,對于小白的我來說,對jar包都做了很多筆記和備份,深怕哪一天自己做項目找不到ibatis的jar包了。呵呵,廢話不多說了,由于前面對ssh框架做了還算詳細的講解,這里也同樣不再贅述了,只挑選一些關鍵點和不同點來講解。

對于struts還是采用注解的方式,spring框架版本保持不變:

Struts:2.3.24

Spring:3.1.4.RELEASE

Ibatis:2.3.0

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
 	http://www.springframework.org/schema/beans/spring-beans-4.1.xsd 
 	http://www.springframework.org/schema/tx 
 	http://www.springframework.org/schema/tx/spring-tx-4.1.xsd 
 	http://www.springframework.org/schema/context
 	http://www.springframework.org/schema/context/spring-context-4.1.xsd">

    <!-- 開啟注解掃描,并指定路徑 -->
    <context:component-scan base-package="com.ssi"/>

    <!--
    加載配置文件,也可以使用下面的方式,更加簡潔
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:jdbc.properties</value>
            </list>
        </property>
    </bean>
    -->

    <!-- 加載配置文件 -->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!-- 數據源配置 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="driverClass" value="${jdbc.driverClass}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <!--連接池中保留的最大連接數。Default: 15 -->
        <property name="maxPoolSize" value="100"/>
        <!--連接池中保留的最小連接數。 -->
        <property name="minPoolSize" value="1"/>
        <!--初始化時獲取的連接數,取值應在minPoolSize與maxPoolSize之間。Default: 3 -->
        <property name="initialPoolSize" value="10"/>
        <!--最大空閑時間,60秒內未使用則連接被丟棄。若為0則永不丟棄。Default: 0 -->
        <property name="maxIdleTime" value="30"/>
        <!--當連接池中的連接耗盡的時候c3p0一次同時獲取的連接數。Default: 3 -->
        <property name="acquireIncrement" value="5"/>
        <!-- JDBC的標準參數,用以控制數據源內加載的PreparedStatements數量。Default: 0 -->
        <!-- 但由于預緩存的statements 屬于單個connection而不是整個連接池。 -->
        <!-- 所以設置這個參數需要考慮到多方面的因素。 如果maxStatements與maxStatementsPerConnection均為0,則緩存被關閉。 -->
        <property name="maxStatements" value="0"/>
        <!--每60秒檢查所有連接池中的空閑連接。Default: 0 -->
        <property name="idleConnectionTestPeriod" value="60"/>
        <!--定義在從數據庫獲取新連接失敗后重復嘗試的次數。Default: 30 -->
        <property name="acquireRetryAttempts" value="30"/>
        <!-- 獲取連接失敗將會引起所有等待連接池來獲取連接的線程拋出異常。 -->
        <!-- 但是數據源仍有效 保留,并在下次調用getConnection()的時候繼續嘗試獲取連接。 -->
        <!-- 如果設為true,那么在嘗試獲取連接失敗后該數據源將申明已斷開并永久關閉。Default: false -->
        <property name="breakAfterAcquireFailure" value="true"/>
        <!-- 因性能消耗大請只在需要的時候使用它。如果設為true那么在每個connection提交的 時候都將校驗其有效性。 -->
        <!-- 建議使用idleConnectionTestPeriod或automaticTestTable,等方法來提升連接測試的性能。Default: false -->
        <property name="testConnectionOnCheckout" value="false"/>
    </bean>

    <!-- Tips:Spring從3.2.0版本開始就不再支持SqlMapClientFactoryBean了 -->
    <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        <!--<property name="configLocation" value="/WEB-INF/sqlMapConfig.xml"/>-->
        <property name="configLocation" value="classpath:sqlMapConfig.xml"/>
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- 需要用這個模板來對數據庫進行操作 -->
    <bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate">
        <property name="sqlMapClient" ref="sqlMapClient"/>
    </bean>

    <!-- 配置事務管理 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- 支持@Transactional注解(聲明式注解) -->
    <tx:annotation-driven transaction-manager="transactionManager"/>

</beans>

?

跟hibernate的配置相比,還是有很大變化的,不過最終的目的也是為了配置一個sql模板,用來和數據庫做交互。

在當時的筆記中,估計那會兒在看連接池的知識點,所以沒有再使用spring的數據源,而是嘗試使用了c3p0。

sqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig
        PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
        "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>

    <!-- 統一設置別名,這樣可以全局使用 -->
    <typeAlias alias="Book" type="com.ssi.entity.Book"/>
    <typeAlias alias="School" type="com.ssi.entity.School"/>
    <typeAlias alias="Student" type="com.ssi.entity.Student"/>

    <!-- 這里要注意,sqlMap標簽必須放到typeAlias下面,ibatis的dtd文件是這樣定義順序的 -->
    <!-- 統一引入映射文件 -->
    <sqlMap resource="sqlmap/Book.xml"/>
    <sqlMap resource="sqlmap/School.xml"/>
    <sqlMap resource="sqlmap/Student.xml"/>

</sqlMapConfig>

?

在ibatis的配置中,跟hibernate一樣,也需要引入映射文件,指定alias這個并非是必須的,只是為了在mapper文件中可以少寫幾個單詞,意義不大。

其他的配置跟ssh的注解版差不多,這里就不再貼出來了,大家可以去之前的文章中查看,也可以看代碼中的注釋。

沒多少東西可說,再給大家看一下目錄結構:

SSI框架基礎整合搭建圖文教程?

論壇首頁 Java企業應用版

跳轉論壇:
Global site tag (gtag.js) - Google Analytics 全天上海快3计划网 洛南县| 定南县| 金溪县| 临江市| 澄城县| 台北县| 昆山市| 宁明县| 临洮县| 商河县| 会同县| 含山县| 张家口市| 杭锦旗| 全椒县| 石屏县| 义马市| 崇仁县| 美姑县| 上思县| 金寨县| 广汉市| 遂平县| 铅山县| 清徐县| 新巴尔虎左旗| 汉寿县| 余干县| 瑞丽市| 韩城市| 永寿县| 平定县| 日照市| 嘉义市| 江陵县| 海原县| 丰原市| 和龙市|