首页 > 代码库 > 在spring,mybatis整合配置中走的弯路(1)
在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)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。