欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 后台管理


新闻资讯

MENU

软件开发知识

试想一个用户在login.jsp中填入相关 图纸加密 的登录信息后点一下login按钮跳转到了login.do

点击: 次  来源:劳务派遣管理系统 时间:2018-03-14

原文出处: 袁鸣凯

一、媒介

上次讲了Struts团结Spring并利用Spring的JdbcTemplate来搭建工程框架后我们面对着jar库无法打点,工程宣布不利便,jar包在工程内太占空间,jar包斗嘴,打点,甚至漏包都问题。于是我们在讲“万能框架spring(二)”前,教授了一篇番外篇,即讲操作maven来打点我们的jar库。

从本日开始我们将团结“万能框架spring(一)”与番外篇maven来更进一步富厚我们的ssx框架,那么本日讲的是利用iBatis3团结SS来构建我们的ssi框架,我们把这个框架定名为beta吧。

二、SSI框架

试想一个用户在login.jsp中填入相关 图纸加密 的登录信息后点一下login按钮跳转到了login.do

还记得我们在第十八天中讲到的我们的框架的架构图吗?上面这张是我们本日的架构图,除了Struts,昆山软件公司,Spring层,我们需要调动的是DAO层即把本来的SQL这部门换成iBatis,我们在次利用的是iBatis版本3。

由于我们在第十八天中已经说了这样的一个框架的长处个中就有:

层中相关技能的替换不影响到其它层面

所以对付我们来说我们需要窜改的代码只有datasource.xml与dao层的2个接口两个类,那我们就一起来看看这个基于全注解的SSi框架是怎么样搭起来的吧。

三、搭建SSI框架

3.1成立工程

我们照旧利用maven来成立我们的工程

试想一个用户在login.jsp中填入相关 图纸加密 的登录信息后点一下login按钮跳转到了login.do

建完后照着翻外篇《第十九天》中的“四、如何让Maven构建的工程在eclipse里跑起来”对工程举办配置。

试想一个用户在login.jsp中填入相关 图纸加密 的登录信息后点一下login按钮跳转到了login.do 试想一个用户在login.jsp中填入相关 图纸加密 的登录信息后点一下login按钮跳转到了login.do 试想一个用户在login.jsp中填入相关 图纸加密 的登录信息后点一下login按钮跳转到了login.do

3.2 增加iBatis3的jar相关包

打开pom.xml

第一步

找到“slf4j”,将它在pom中的描写改成如下内容:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.5.10</version>
</dependency>

第二步

增加两个jar包

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.5.10</version>
</dependency>

<dependency>
    <groupId>org.apache.ibatis</groupId>
    <artifactId>ibatis-core</artifactId>
    <version>3.0</version>
</dependency>

3.3 开始设置ibatis与spring团结

打开/src/main/resources/spring/datasource下的datasource.xml,增加如下几行

<bean id="iBatisSessionFactory" class="org.sky.ssi.ibatis.IBatis3SQLSessionFactoryBean" scope="singleton">

    <property name="configLocation" value="sqlmap.xml"></property>

    <property name="dataSource" ref="dataSource"></property>

</bean>

<bean id="iBatisDAOSupport" class="org.sky.ssi.ibatis.IBatisDAOSupport">

</bean>

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

    <property name="dataSource" ref="dataSource" />

</bean>

此处,我们需要4个类,它们是:

org.sky.ssi.ibatis.IBatis3SQLSessionFactoryBean类

package org.sky.ssi.ibatis;
 
import java.io.IOException;
import java.io.Reader;
import javax.sql.DataSource;
import org.apache.ibatis.builder.xml.XMLConfigBuilder;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.defaults.DefaultSqlSessionFactory;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy;


/**

 *

 * IBatis3SQLSessionFactoryBean is responsible for integrating iBatis 3 <p>

 * with spring 3. Since all environment configurations have been moved to <p>

 * spring, this class takes the responsibility to get environment information<p>

 *  from spring configuration to generate SqlSessionFactory.

 * @author lifetragedy

 *

 */

public class IBatis3SQLSessionFactoryBean implements FactoryBean<SqlSessionFactory>, InitializingBean{

    rivate String configLocation;   

    private DataSource dataSource;   

    private SqlSessionFactory sqlSessionFactory;   

    private boolean useTransactionAwareDataSource = true;   

    private String environmentId = "development";

    public String getConfigLocation() {

        return configLocation;

    }

    public void setConfigLocation(String configLocation) {

        this.configLocation = configLocation;

    }

    public DataSource getDataSource() {

        return dataSource;

    }

    public void setDataSource(DataSource dataSource) {

        this.dataSource = dataSource;

    }

    public SqlSessionFactory getSqlSessionFactory() {

        return sqlSessionFactory;

    }

    public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {

        this.sqlSessionFactory = sqlSessionFactory;

    }

    public boolean isUseTransactionAwareDataSource() {

        return useTransactionAwareDataSource;

    }

    public void setUseTransactionAwareDataSource(

        boolean useTransactionAwareDataSource) {

            this.useTransactionAwareDataSource = useTransactionAwareDataSource;

    }

    public String getEnvironmentId() {

        return environmentId;

    }

    public void setEnvironmentId(String environmentId) {

        this.environmentId = environmentId;

    }

   

    public SqlSessionFactory getObject() throws Exception {   

        return this.sqlSessionFactory;   

    }   


    public Class<SqlSessionFactory> getObjectType() {   

        return  SqlSessionFactory.class;   

    }

   

    public boolean isSingleton() {   

        return true;   

    }   


    public void afterPropertiesSet() throws Exception {   

        this.sqlSessionFactory = this.buildSqlSessionFactory(configLocation);   

    }

  
    protected SqlSessionFactory buildSqlSessionFactory(String configLocation)   

    throws IOException {   

    if (configLocation == null) {   

        throw new IllegalArgumentException(   

        "configLocation entry is required");   

    }   

    DataSource dataSourceToUse = this.dataSource;   

    if (this.useTransactionAwareDataSource  && !(this.dataSource instanceof TransactionAwareDataSourceProxy)) {   

        dataSourceToUse = new TransactionAwareDataSourceProxy(this.dataSource);   

    }   


    Environment environment = new Environment(environmentId, new IBatisTransactionFactory(dataSourceToUse), dataSourceToUse);   

    Reader reader = Resources.getResourceAsReader(configLocation);   

    XMLConfigBuilder parser = new XMLConfigBuilder(reader, null, null);   

    Configuration config = parser.parse();   

    config.setEnvironment(environment);   

    return new DefaultSqlSessionFactory(config);   

    }

}