在spring,mybatis整合配置中走的弯路(1)

在接触一个新东西,总免不了走一些弯路,也正是在这些弯路中,我们不断的成长。

从git上把之前写的代码扒下来,看看我在当初使用spring与mybatis中所走的弯路,路过的君子也可引以为戒。

<!-- 事务管理器 -->
    <bean id="txManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
    <!-- 事务支持 -->
    <tx:annotation-driven transaction-manager="txManager" />
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />         <!--引入mybatis的表映射配置文件-->
        <property name="mapperLocations" value="classpath*:mappers/*.xml" />

<!--mybatis的一个配置文件,在这个文件里加了一个分页拦截扩展,以下贴出这个文件内容-->
        <property name="configLocation" value="classpath:mybatisConfig.xml"></property>
    </bean>
    <bean id="sqlSession" class="com.oa.bo.MySqlSessionFactory">
        <property name="sessionFactory" ref="sqlSessionFactory"></property>  这里把sqlSessionFactory注入,后面把这部代码贴出来,看一下神一样的实现^_^
    </bean>
mybatisConfig.xml
<configuration>
    <properties>
        <property name="dialect" value="MYSQL" />
    </properties>
    <plugins>
        <plugin interceptor="com.oa.utils.pager.PaginationInterceptor">  这里做一个拦截器,来处理分页的查询
        </plugin>
    </plugins>
</configuration>
MySqlSessionFactory的实现代码,不要太崇拜哟。
public class MySqlSessionFactory {
    static Logger log = Logger.getRootLogger();
    final static String CACHENAME = ConstVar.FEREVER_CACHE;
    final static String CACHEKEY = "SqlSessionFactory";
    private SqlSessionFactory sqlSessionFactory;

    public SqlSessionFactory getSessionFactory() {
        Object object = EhCacheUtil.getInstance().get(CACHENAME, CACHEKEY);
        if (object != null) {
            log.info("从缓存区取值");
            sqlSessionFactory = (SqlSessionFactory) object;
        } else {
            log.info("没有缓存~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!");
        }
        return sqlSessionFactory;
    }

    public void setSessionFactory(SqlSessionFactory sqlSessionFactory) {
        this.sqlSessionFactory = sqlSessionFactory;
        log.info("对象的值:" + sqlSessionFactory);
        EhCacheUtil.getInstance().put(CACHENAME, CACHEKEY, sqlSessionFactory);
    }

    public SqlSession getSqlSession() {
        return getSessionFactory().openSession();
    }
}

这里把session存在ehcache永久缓存里了,明眼人一看这就有问题。但具体的问题,没有实测,没有具体数据,也就不便乱说了。

下面在每个业务逻辑上这样使用

public abstract class BaseBoImp extends MySqlSessionFactory implements BaseBo {
......

}

public class SysRoleBo extends BaseBoImp {

    Logger log = Logger.getRootLogger();

    /**
     * 批量删除数据
     */
    public ReturnResult delByIds(String ids) {
        SqlSession session = getSqlSession();
......
}
.......
}

所有使用的都共用上面缓存里的session。

每次自己手动关闭,事务也是手动进行管理。

这些是开始实现的一个配置,后面会进行第二阶段的弯路之行。

时间: 2024-12-17 14:19:43

在spring,mybatis整合配置中走的弯路(1)的相关文章

SpringMVC+Spring+Mybatis整合配置

1.Maven依赖文件:pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&g

springMVC+spring+mybatis整合过程中遇到的问题

今天在配置SSM整合的过程中遇到了几个错误,折腾了好久,具体如下 1.java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for 在网上找了好久,最后发现是namespace没写对: <!-- namespace必须为UserMapper的全称:包名+Mapper接口的名称 --><mapper namespace="edu.fjnu.hyf.mapper

SpringMVC+Spring+Mybatis整合,使用druid连接池,声明式事务,maven配置

一直对springmvc和mybatis挺怀念的,最近想自己再搭建下框架,然后写点什么. 暂时没有整合缓存,druid也没有做ip地址的过滤.Spring的AOP简单配置了下,也还没具体弄,不知道能不能用,log也不知道能不能用,`(*∩_∩*)′哈哈,有点不负责任...... 直接上代码: 使用的eclipse和eclipse自带的maven,参考了网上的资料,有些代码是拷贝的,不过都自己测试过了.嗯,可以跑起来... 先上项目结构: 新建maven项目,选择web,然后配置pom: <pro

springmvc+spring+mybatis 整合

1.其实我也是菜鸟一枚,以前ssm不会,所以花了一段时间,学习了mybatis spring又进行了整合,后来又学习springmvc算是都看了看,今天就把整个搭建好的框架整理一下,和大家分享,如果错误希望指正…… 2.整个项目的目录结构: 3.有了整体结构之后我们一步一步整合来实现,整合步骤: (1).配置前端控制器,web.xml配置 (2).创建处理映射器 springmvc-server.xml 配置 (3).创建控制层 (4).业务逻辑层 (5).dao层 (6).sqlmapper

SSM(springmvc+spring+mybatis)整合过程

问题?SSM(springmvc+spring+mybatis)整合过程 一.SSM框架比较S2SH框架的优缺点比较 站在个人使用这两个框架的观点儿上来说的话,我觉得这个不能定死的说,常用的S2SH,SpringMVC等,还可以考虑jFinal. 首先说S2SH,这个是用的比较多的,特别是在中小型项目中,针对大型项目就不行了,是Struts和hibernate过于庞大,过于重量级,项目大了之后配置文件多的也是麻烦事,配置文件多了之后一方面不好操作,另外比较蛋疼的是没法断点调试,特别是对底层数据库

Spring+Hibernate整合配置 --- 比较完整的spring、hibernate 配置

Spring+Hibernate整合配置 分类: J2EE2010-11-25 17:21 16667人阅读 评论(1) 收藏 举报 springhibernateclassactionservletmysql 在公司一直没有什么机会直接折腾SSH“原生态”的SSH当今比较流行的轻量级的框架,用着公司的框架也是郁闷异常,今天没事整整原来用过的一个项目的配置,发现就算是自己曾经用过的东西,如果较长时间不返过去重新学习,许多你半熟不熟的知识就是异常陌生.下面贴上我的一些配置,暂且权当备份吧. web

Hibernate+Spring+Struts2整合开发中的一个分页显示方案(转载)

分页显示一直是web开发中一大烦琐的难题,传统的网页设计只在一个JSP或者ASP页面中书写所有关于数据库操作的代码,那样做分页可能简单一点,但当把网站分层开发后,分页就比较困难了,下面是我做Spring+Hibernate+Struts2项目时设计的分页代码,与大家分享交流. 1.DAO层接口的设计,在MemberDao接口中定义了如下两个方法: public interface MemberDao{        //省略了其他的代码        /**     * 分页查询     * @

Spring Hibernate4 整合配置文档

1 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:context="http:/

spring+mybatis整合,org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class &#39;${jdbc.driverClassName}

在使用spring+mybatis时会出现Cannot load JDBC driver class ${jdbc.driverClassName}之类的出错. 原因是在spring里使用org.mybatis.spring.mapper.MapperScannerConfigurer 进行自动扫描的时候,设置了sqlSessionFactory 的话,可能会导致PropertyPlaceholderConfigurer失效,也就是用${jdbc.username}这样之类的表达式,将无法获取到