论坛首页 Java企业应用论坛

SSI框架基础整合搭建图文教程

浏览 1374 次
精华帖 (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