在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。
每次自己手动关闭,事务也是手动进行管理。
这些是开始实现的一个配置,后面会进行第二阶段的弯路之行。
在spring,mybatis整合配置中走的弯路(1)的更多相关文章
- Spring+Mybatis整合过程中找不到.properties文件
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' ...
- springMVC+spring+mybatis整合过程中遇到的问题
今天在配置SSM整合的过程中遇到了几个错误,折腾了好久,具体如下 1.java.lang.IllegalArgumentException: Mapped Statements collection ...
- struts2 spring mybatis 整合(test)
这几天搭了个spring+struts2+mybatis的架子,练练手,顺便熟悉熟悉struts2. 环境:myEclipse10+tomcat7+jdk1.6(1.8的jre报错,所以换成了1.6) ...
- 3.springMVC+spring+Mybatis整合Demo(单表的增删该查,这里主要是贴代码,不多解释了)
前面给大家讲了整合的思路和整合的过程,在这里就不在提了,直接把springMVC+spring+Mybatis整合的实例代码(单表的增删改查)贴给大家: 首先是目录结构: 仔细看看这个目录结构:我不详 ...
- Spring + mybatis整合方案总结 结合实例应用
Spring + mybatis整合实例应用 项目结构图 (Spring3.0.2 +mybatis3.0.4) 方案一: 通过配置文件整合Spring和mybatis 应用数据库 -- --数据库 ...
- Spring+MyBatis整合过程
步骤: 1.引入Spring+MyBatis开发包 >spring(ioc aop dao)开发包 >mybatis开发包,dbcp,驱动包 >mybatis-spring.jar整 ...
- [教程] Spring+Mybatis环境配置多数据源
一.简要概述 在做项目的时候遇到需要从两个数据源获取数据,项目使用的Spring + Mybatis环境,看到网上有一些关于多数据源的配置,自己也整理学习一下,然后自动切换实现从不同的数据源获取数据功 ...
- SpringMVC+Spring+mybatis项目从零开始--Spring mybatis mysql配置实现
上一章我们把SSM项目结构已搭建(SSM框架web项目从零开始--分布式项目结构搭建)完毕,本章将实现Spring,mybatis,mysql等相关配置. 1. 外部架包依赖引入 外部依赖包引入 ...
- Springmvc+Spring+Mybatis整合开发(架构搭建)
Springmvc+Spring+Mybatis整合开发(架构搭建) 0.项目结构 Springmvc:web层 Spring:对象的容器 Mybatis:数据库持久化操作 1.导入所有需要的jar包 ...
随机推荐
- ORA-30004 错误处理
一.问题情景: 原SQL: select c.CATEGORY_ID, c.CATEGORY_NAME, SYS_CONNECT_BY_PATH(c.CATEGORY_NAME ...
- SQLSERVER执行性能统计工具SQLQueryStress
SQLSERVER执行时间统计工具SQLQueryStress 有时候需要检测一下SQL语句的执行时间,相信大家都会用SET STATISTICS TIME ON开关打开SQLSERVER内置的时间统 ...
- MySQL5.6 报错1067
http://www.cnblogs.com/lixiaolun/p/5303687.html
- Flex开发一周年感悟
优点: 1.Flex上手简单,与html和js很像,是一种web前端语言,对于简单的界面.图表.交互都有不错的封装.它能够让新手在短时间内开发出比较有模样的项目. 2.有很多第三方api可以使用,如a ...
- RegexKit: A Regular Expression Toolbox Based On NW.js(Node-Webkit) And Other Greate Open Source Projects.
RegexKit RegexKit: A Regular Expression Toolbox Based On NW.js(Node-Webkit) And Other Greate Open So ...
- NBIbatis web/winform框架
Web框架 调用Bussiness和DataAccess可参考微信框架的后台. Pages/Meeting/MeetingList.aspx Pages/Meeting/MeetingEdit.asp ...
- C#课外实践——校园二手平台(技术篇1)
前面分享了这次的课外实践的心得,这次,就分享一下从这次的课外实践的过程中学到的知识技能吧.虽然有句话说的好,不要做没有准备的战争,但是,我想说的是,生活中有很多的事情是不允许我们有准备的.遇到事情必须 ...
- Qt之Dialog\widget\ mainwindow的区别和布局管理器 & 分裂器的区别
1.Dialog\widget\ mainwindow的区别 注意mainwindow和widget的区别,mainwindow都工具栏和菜单栏 Dialog and mainwinodws 都是继承 ...
- CentOS 7 service systemnctl
在之前的版本中关闭防火墙等服务的命令是 service iptables stop /etc/init.d/iptables stop 在RHEL7中,其实没有这个服务 [root@rhel7 ~]# ...
- 减小Chrome的内存占用的参数
步骤: 1.右击chrome浏览器快捷方式 属性 目标 后面添加 --purge-memory-button 2. 按 shift+esc 查看进程