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

从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。

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

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

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

  1. Spring+Mybatis整合过程中找不到.properties文件

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' ...

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

    今天在配置SSM整合的过程中遇到了几个错误,折腾了好久,具体如下 1.java.lang.IllegalArgumentException: Mapped Statements collection ...

  3. struts2 spring mybatis 整合(test)

    这几天搭了个spring+struts2+mybatis的架子,练练手,顺便熟悉熟悉struts2. 环境:myEclipse10+tomcat7+jdk1.6(1.8的jre报错,所以换成了1.6) ...

  4. 3.springMVC+spring+Mybatis整合Demo(单表的增删该查,这里主要是贴代码,不多解释了)

    前面给大家讲了整合的思路和整合的过程,在这里就不在提了,直接把springMVC+spring+Mybatis整合的实例代码(单表的增删改查)贴给大家: 首先是目录结构: 仔细看看这个目录结构:我不详 ...

  5. Spring + mybatis整合方案总结 结合实例应用

    Spring + mybatis整合实例应用 项目结构图 (Spring3.0.2 +mybatis3.0.4) 方案一: 通过配置文件整合Spring和mybatis 应用数据库 -- --数据库 ...

  6. Spring+MyBatis整合过程

    步骤: 1.引入Spring+MyBatis开发包 >spring(ioc aop dao)开发包 >mybatis开发包,dbcp,驱动包 >mybatis-spring.jar整 ...

  7. [教程] Spring+Mybatis环境配置多数据源

    一.简要概述 在做项目的时候遇到需要从两个数据源获取数据,项目使用的Spring + Mybatis环境,看到网上有一些关于多数据源的配置,自己也整理学习一下,然后自动切换实现从不同的数据源获取数据功 ...

  8. SpringMVC+Spring+mybatis项目从零开始--Spring mybatis mysql配置实现

    上一章我们把SSM项目结构已搭建(SSM框架web项目从零开始--分布式项目结构搭建)完毕,本章将实现Spring,mybatis,mysql等相关配置. 1.    外部架包依赖引入 外部依赖包引入 ...

  9. Springmvc+Spring+Mybatis整合开发(架构搭建)

    Springmvc+Spring+Mybatis整合开发(架构搭建) 0.项目结构 Springmvc:web层 Spring:对象的容器 Mybatis:数据库持久化操作 1.导入所有需要的jar包 ...

随机推荐

  1. 大熊君说说JS与设计模式之------状态模式State

    一,总体概要 1,笔者浅谈 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式. 状态模式主要解决的是当控制一个对象状态的条件表达式过于 ...

  2. T4 模板 : 一种提升ASP.NET MVC开发速度方法

    最近由于需要在框架中提供一些自定义模板的功能,找到了一篇博客,可惜似乎是翻译工具直接翻的,读不通顺,就试着自己翻译下,我不会完全翻译原文的句子,可能会对原文进行小范围的我认为更合适的句子并添加些注释, ...

  3. 修改注册表来修改IE的设置---资料汇总

    原文链接: http://blog.csdn.net/wangqiulin123456/article/details/17068649 附带批处理执行脚本: @echo off &title ...

  4. Spec 网上选课

    角色定义 管理员 管理员负责向系统中添加学生和教师的个人信息以及课程信息,实现对教师.学生和课程信息的修改.删除.查询操作,并对管理员个人密码进行修改. 学生 学生具有查看待选课程信息和任课教师信息. ...

  5. NABCD需求分析

    1. N 需求    如今的社会,每个公司每个人都有大量的信息需要处理.保管和查询,这就难免会有些信息在个人电脑中保存的位置被遗忘,需要一款简单并且实用的搜索引擎来搜索个人 所需求的信息. 2. A ...

  6. SQLServer DBA 三十问(加强版)

    距离最初发布SQLServer DBA 三十问 已有一年多了,大家对其中的某些问题讨论比较激烈,要回答出来这些问题需要比较扎实的SQLServer 基础和一定的实际操作经验,如果你试着去回答其中的问题 ...

  7. [BTS] System.Xml.Schema.XmlSchemaException: The complexType has already been declared when generate IDoc schema.

    I use wcf-sap adapter for generate the schema of IDoc that named "YHREMPMASTER". but throw ...

  8. How to install ZeroMQ on Ubuntu14.04

    Prepare: sudo apt-get install libtool autoconf automake uuid-dev sudo apt-get install python-dev sud ...

  9. Merge Into

    Merge Into [dbo].[Student] S using [10.58.8.224\TEST].[TestDb].[dbo].[Student] T on S.ID=T.ID WHEN M ...

  10. (笔记)VC6插件安装(VC6LineNumberAddin)

    VC6插件安装步骤如下: 1.下载VC6LineNumberAddin插件及注册文件.(以下是参考链接:) http://files.cnblogs.com/files/tdyizhen1314/VC ...