首页 > 编程知识 正文

contemplate,sqlsession与事务

时间:2023-05-05 19:11:35 阅读:36856 作者:991

在mybatis中,SqlSessionTemplate实现了SqlSession接口

如下面的源代码所示,这里使用名为bhdzxc的内部类,publicclassqlsessiontemplateimplementsqlsession { privatefinalzrdhb; 私人财务zgdjr; 私有服务质量评估服务质量评估代理; privatefinalpersistenceexceptiontranslatorexceptiontranslator;/dtdpkqdtdpkqdtdpkqconstructsaspringmanagedsqlsessionwiththe { @ codesqlsessionfactory } ddpkqprovidedasanargument.dtdpkqdtdpkq @ paramsqlsessionfactorydtdpkq/publicsqlsessiontemplate (Zr dhb ) this ) sqlsessssionsion //dtdpkqdtdpkqdtdpkqconstructsaspringmanagedsqlsessionwiththe { @ codesqlsessionfactory } ddpkqprovidedasanargumentandthegivivitory dtdpkq { @ codeexecutortype } cannotbechangedoncethe { @ codesqlsssion ddpkqisconstructed.dtdpkqdtdpkq @ paramsqlsessionfactonfacton publicsqlsessiontemplate (Zr dhb zdjr (this (sqlsessionfactory,执行程序类型, newmybatisexceptiontranslator ) sqlsessionfactory.get configuration ).get configuration }/dtdpkqdtdpkqdtdtdpkqconstructststsasaspratspration withthegivendtdpkq { @ codesqlsessionfactory } and { @ code.dtdpkqacustom { @ codesqlexceptiontranslator } canbeprovidedasandtdpkqargumentsoany { @ codepersistenceexception } thrownbymybatisdtdpkqcanbecustomtranslatedtoa { @ coderuntion dtdpkqthe { @ codesqlexceptiontranslator } canalsobenullandthusnodtdpkqexceptiontranslationwillbedoneandmybatisexceptionswillbedtdpkqthrowndtdpkqdtdtdpkq @ paramsqlsqlsesesionesionioned utortypedtdpkq @ paramexceptiontranslatordtdpkq/publicsqlsessiontemplate (Zr dhb,zgdjr, 持久性扩展转换器(null ) sqlsessionfactory,' property ' sqlsessionfactory ' isrequirer nactory this.sqlsessionfactory=sqlsessionfactory; this.executorType=executorType; this.exception translator=exception translator; this.sqlsessionproxy=(SQL session ) newproxyinstance (sqlsessionfactory.class.getclass loader ),newclass[]{SQL} }

privateclassbhdzxcimplementsinvocationhandler { publicobjectinvoke (对象代理,方法方法, object [ ] args (throws throwable (sqlsessionsqlsession=getsql session ) sqlsessiontemplate.this.sqlsessionfactory,SQL if (! issqlsessiontransactional (SQL session、sqlsessiontemplate.this.sqlsessionfactory ) (/forcecommitevenonnon-dirtysesession } catch (可移植t )可移植的取消wrapped=取消wrap可移植) t; if (sqlsessiontemplate.this.exception translator!=nullunwrappedinstanceofpersistenceexception (//releasetheconnectiontoavoidadeadlockifthetranslatorisnoloaded.see 22 SQL会话=null; throwable translated=sqlsessiontemplate.this.exception translator.translateexceptionifpossible (if )!=null}{unwrapped=translated; } } throw unwrapped; }finally{if(SQLsession!=null ) {closesqlsession(SQLsession,sqlsessiontemplate.this.sqlsessionfactory ); } }复制代码

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。