一:问题

最近发现了我们自己的项目的事务的处理根本就是行不通的,也因此我自己又去看了下有关事务的处理,算是有了个大致的了解吧,先说说我们最初的配置吧。

二:内容

(1):使用iBatis的事务管理

  1. SqlMapClient client = this.getSqlMap();
  2. try {
  3. client.startTransaction();
  4. client.insert("addUser", user);
  5. client.getCurrentConnection().commit();;
  6. int i = 3/0;
  7. } catch (Exception e) {
  8. throw new RuntimeException();
  9. }

  这种形式下的事务根本就没有用处的,最后搜索了下,又看了相应的说明,发现如下:

所以,这里的事务写法就必须如下了

  1. SqlMapClient client = this.getSqlMap();
  2. try {
  3. client.startTransaction();
  4. //必须设置
  5. client.getCurrentConnection().setAutoCommit(false);
  6. client.insert("addUser", user);
  7. client.getCurrentConnection().commit();;
  8. int i = 3/0;
  9. } catch (Exception e) {
  10. throw new RuntimeException();
  11. }

加上这段事务之后,经过测试后的确是可以回滚了。

(2):使用spring来管理事务

在使用spring来管理事务的同时,也有两种形式:

(一):使用注解

(二):不使用注解,直接指定特定方法拦截,比如delete*,update*,save*等方法。

但是我们用的是spring4.1.11的jar文件,在使用注解的时候一直包错误

可以看看这个链接的说明http://zapone.org/bernadine/2015/01/07/nosuchmethoderror-aopnamespaceutils-registerautoproxycreatorifnecessarylorgspringframeworkbeansfactoryxmlparsercontextljavalangobjectv/

  1. org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from file [D:\MyEclipse\wh\.metadata\.me_tcat7\webapps\graduate\WEB-INF\classes\applicationContext-bean.xml]; nested exception is java.lang.NoSuchMethodError: org.springframework.aop.config.AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(Lorg/springframework/beans/factory/xml/ParserContext;Ljava/lang/Object;)V
  2. at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:414)
  3. at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)
  4. at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
  5. at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
  6. at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:216)
  7. at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:187)
  8. at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)
  9. at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
  10. at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
  11. at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)
  12. at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:452)
  13. at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
  14. at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
  15. at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
  16. at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4791)
  17. at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5285)
  18. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
  19. at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
  20. at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
  21. at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:618)
  22. at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1100)
  23. at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1618)
  24. at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
  25. at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
  26. at java.util.concurrent.FutureTask.run(FutureTask.java:166)
  27. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
  28. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
  29. at java.lang.Thread.run(Thread.java:724)
  30. Caused by: java.lang.NoSuchMethodError: org.springframework.aop.config.AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(Lorg/springframework/beans/factory/xml/ParserContext;Ljava/lang/Object;)V
  31. at org.springframework.transaction.config.AnnotationDrivenBeanDefinitionParser.parseInternal(AnnotationDrivenBeanDefinitionParser.java:54)
  32. at org.springframework.beans.factory.xml.AbstractBeanDefinitionParser.parse(AbstractBeanDefinitionParser.java:60)
  33. at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:74)
  34. at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1427)
  35. at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1417)
  36. at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:174)
  37. at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:144)
  38. at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:100)
  39. at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:510)
  40. at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:392)
  41. ... 27 more
  42. 五月 07, 2015 2:01:05 下午 org.apache.catalina.core.StandardContext listenerStart
  43. SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
  44. org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from file [D:\MyEclipse\wh\.metadata\.me_tcat7\webapps\graduate\WEB-INF\classes\applicationContext-bean.xml]; nested exception is java.lang.NoSuchMethodError: org.springframework.aop.config.AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(Lorg/springframework/beans/factory/xml/ParserContext;Ljava/lang/Object;)V
  45. at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:414)
  46. at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)
  47. at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
  48. at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
  49. at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:216)
  50. at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:187)
  51. at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)
  52. at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
  53. at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
  54. at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)
  55. at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:452)
  56. at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
  57. at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
  58. at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
  59. at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4791)
  60. at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5285)
  61. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
  62. at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
  63. at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
  64. at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:618)
  65. at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1100)
  66. at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1618)
  67. at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
  68. at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
  69. at java.util.concurrent.FutureTask.run(FutureTask.java:166)
  70. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
  71. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
  72. at java.lang.Thread.run(Thread.java:724)
  73. Caused by: java.lang.NoSuchMethodError: org.springframework.aop.config.AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(Lorg/springframework/beans/factory/xml/ParserContext;Ljava/lang/Object;)V
  74. at org.springframework.transaction.config.AnnotationDrivenBeanDefinitionParser.parseInternal(AnnotationDrivenBeanDefinitionParser.java:54)
  75. at org.springframework.beans.factory.xml.AbstractBeanDefinitionParser.parse(AbstractBeanDefinitionParser.java:60)
  76. at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:74)
  77. at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1427)
  78. at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1417)
  79. at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:174)
  80. at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:144)
  81. at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:100)
  82. at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:510)
  83. at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:392)
  84. ... 27 more
  85. 五月 07, 2015 2:01:05 下午 org.apache.catalina.core.StandardContext startInternal
  86. SEVERE: Error listenerStart
  87. 五月 07, 2015 2:01:05 下午 org.apache.catalina.core.StandardContext startInternal
  88. SEVERE: Context [/graduate] startup failed due to previous errors
  89. 五月 07, 2015 2:01:05 下午 org.apache.catalina.core.ApplicationContext log
  90. INFO: Closing Spring root WebApplicationContext
  91. 2015-05-07 14:01:05 INFO org.springframework.context.support.AbstractApplicationContext.doClose(862) | Closing Root WebApplicationContext: startup date [Thu May 07 14:01:05 CST 2015]; root of context hierarchy
  92. 2015-05-07 14:01:05 WARN org.springframework.context.support.AbstractApplicationContext.doClose(872) | Exception thrown from ApplicationListener handling ContextClosedEvent
  93. java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: Root WebApplicationContext: startup date [Thu May 07 14:01:05 CST 2015]; root of context hierarchy
  94. at org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:344)
  95. at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:331)
  96. at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:869)
  97. at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:836)
  98. at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:579)
  99. at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:115)
  100. at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4831)
  101. at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5478)
  102. at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
  103. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160)
  104. at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
  105. at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
  106. at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:618)
  107. at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1100)
  108. at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1618)
  109. at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
  110. at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
  111. at java.util.concurrent.FutureTask.run(FutureTask.java:166)
  112. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
  113. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
  114. at java.lang.Thread.run(Thread.java:724)
  115. 2015-05-07 14:01:05 WARN org.springframework.context.support.AbstractApplicationContext.doClose(880) | Exception thrown from LifecycleProcessor on context close
  116. java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via the context: Root WebApplicationContext: startup date [Thu May 07 14:01:05 CST 2015]; root of context hierarchy
  117. at org.springframework.context.support.AbstractApplicationContext.getLifecycleProcessor(AbstractApplicationContext.java:357)
  118. at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:877)
  119. at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:836)
  120. at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:579)
  121. at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:115)
  122. at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4831)
  123. at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5478)
  124. at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
  125. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160)
  126. at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
  127. at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
  128. at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:618)
  129. at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1100)
  130. at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1618)
  131. at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
  132. at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
  133. at java.util.concurrent.FutureTask.run(FutureTask.java:166)
  134. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
  135. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
  136. at java.lang.Thread.run(Thread.java:724)
  137. 五月 07, 2015 2:01:05 下午 org.apache.catalina.core.StandardContext listenerStop
  138. SEVERE: Exception sending context destroyed event to listener instance of class org.springframework.web.context.ContextLoaderListener
  139. java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
  140. at org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:170)
  141. at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:908)
  142. at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:884)
  143. at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:836)
  144. at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:579)
  145. at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:115)
  146. at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4831)
  147. at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5478)
  148. at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
  149. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160)
  150. at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
  151. at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
  152. at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:618)
  153. at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1100)
  154. at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1618)
  155. at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
  156. at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
  157. at java.util.concurrent.FutureTask.run(FutureTask.java:166)
  158. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
  159. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
  160. at java.lang.Thread.run(Thread.java:724)

所以我只能不使用注解了。

事务一般是加到service层,这样可以统一管理。

  1. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  2. <property name="dataSource" ref="dataSource"></property>
  3. </bean>
  4.  
  5. <aop:config>
  6. <aop:pointcut expression="execution(* com.wh.graduate.service.*.*(..))" id="serviceMethod" />
  7. <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethod"/>
  8. </aop:config>
  9.  
  10. <tx:advice id="txAdvice" transaction-manager="transactionManager">
  11. <tx:attributes>
  12. <tx:method name="*" propagation="REQUIRED"/></tx:attributes>
  13. </tx:advice>
  14. </beans>

(3):有关事务的try{}catch(Exception e){}的注意点

如果你的dao层或者service进行了异常的捕获,那么你一定是需要抛出异常的。下面说明

A:如果你在dao层进行了异常的捕获,那么你需要把异常抛出,如下

  1. try{
  2. getSqlMapClientTemplate().insert("addOrder", Order);
  3. }catch(Exception e){
  4. throw new RuntimeException();
  5. }

所以在这里有选择,要么别try,这样系统会自动捕;要try就需要抛出异常。对于service同理。

在调用处进行try,之后捕获到错误,返回相应的错误提醒

(4):总结

快毕业了,我也出来一年了啊,2015年的5月4号,我出来整整一年啊,一年我变了很多,一年我也成长了很多,在这一年里面我学习到了很多东西,知识都是一点点积累的啊,但是因此,我越做越觉得自己是个码农,所以现在不知道是何去何从啊。我真的不想去做一个“为了敲代码而敲代码的人”。但是我现在就是码农,为了完成任务而完成任务,我想学的更多,更多底层的东西,但是框架的源码我自己看着好吃力啊,不过还是得坚持啊。最近准备学学c语言了,虽然以前学习过,但是那是四年前了,重新在学习一遍吧。知识永不止境啊。

iBATIS事务处理的更多相关文章

  1. IBATIS事务处理 - - 博客频道 - CSDN.NET

    body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...

  2. iBatis框架batch处理优化 (转)

    为什么要做batch处理        这个问题我就不解释了,因为我想你们肯定能比我解释的更好!如果你真的不知道,那就到Google上去搜索一下吧☻Oracle回滚段    这个问题偶也不很明白,只是 ...

  3. Ibatis学习总结6--使用 SQL Map API 编程

    SQL Map API 力求简洁.它为程序员提供 4 种功能:配置一个 SQL Map,执行 SQL update操作,执行查询语句以取得一个对象,以及执行查询语句以取得一个对象的 List. 配置  ...

  4. JAVA开发:分享一些SpringMvc+Ibatis+spring的框架使用心得

    近期不在做.net的项目,而是使用java作为开发语言,就想着要用springmvc开发了,由于前些年也用过struts1/2+hibernate/ibatis+spring开发过项目,因此是有些底子 ...

  5. MyBatis的事务处理

    先来假设这样一个问题:如果数据库里面有一个用户表和一个作家表,那么当要添加一条数据到作家表中时,作家表的id必须是用户表中的其中一个id,因为作家一定也要是一个用户.这时就涉及到事务处理. 在上一篇博 ...

  6. ibatis使用--SqlMapClient对象

    SqlMapClient对象 这个对象是iBatis操作数据库的接口(执行CRUD等操作),它也可以执行事务管理等操作.这个类是我们使用iBATIS的最主要的类.它是线程安全的.通常,将它定义为单例. ...

  7. Struts2+Spring+Ibatis集成合并

    上一篇博客讲述了Struts2+Spring的集成合并,主要是利用了一个中间jar包,这篇博客在加上Ibatis持久层框架,三个框架进行合并.其中Struts2和Spring部分和前边的一样,主要是讲 ...

  8. ibatis 参数和结果的映射处理

    SqlMapClient对象 这个对象是iBatis操作数据库的接口(执行CRUD等操作),它也可以执行事务管理等操作.这个类是我们使用iBATIS的最主要的类.它是线程安全的.通常,将它定义为单例. ...

  9. iBatis第三章:iBatis的基本用法

    iBatis 在DAO层的用法很基础,和一般 JDBC 用法没太多的不同之处,主要是实现数据的持久化.它的优势是用法比较灵活,可以根据业务需要,写出适应需要的sql,其使用简单,只要会使用sql,就能 ...

随机推荐

  1. eos开发指南

    十分钟教你开发EOS智能合约 在CSDN.柏链道捷(PDJ Education).HelloEOS.中关村区块链产业联盟主办的「EOS入门及最新技术解读」专场沙龙上,柏链道捷(PDJ Educatio ...

  2. nordic mesh中的消息缓存实现

    nordic mesh中的消息缓存实现 代码文件msg_cache.h.msg_cache.c. 接口定义 头文件中定义了四个接口,供mesh协议栈调用,四个接口如下所示,接口的实现代码在msg_ca ...

  3. Python—文件

    def fileCopy(src, dst, srcEncoding, dstEncoding): with open(src, 'r', encoding=srcEncoding) as srcfp ...

  4. “Hello world!”团队—选题展示

    本次选题展示内容: 一.视频展示 链接:http://v.youku.com/v_show/id_XMzA5Mzk5NjYwOA==.html?sharefrom=iphone 视频截图链接:http ...

  5. 第八次作业——项目UML设计

    分工及贡献分评定 成员 参与 贡献比例 朱跃安(031602348) 类图 13% 后敬甲(031602409) 实体关系图+博客整理 14.5% 林志华(031602128) 用例图+活动图 14. ...

  6. Windows Server 2012四大版本介绍

    今天刚好要尝试安装Windows Server 2012,在网上百度了下发现有4个版本,分别是: Datacenter数据中心版. Standard标准版. Essentials版. Foundati ...

  7. ping traceroute原理

    ping命令工作原理 ping命令主要是用于检测网络的连通性. Ping命令发送一个ICMP请求报文给目的IP,然后目的IP回复一个ICMP报文. 原理:网络上的机器都有唯一确定的IP地址,我们给目标 ...

  8. Spring MVC架构浅析

    阅读目录 Spring MVC概述 Spring MVC框架的特点 Spring MVC工作原理 Spring MVC概述 Spring的web框架围绕DispatcherServlet设计,Disp ...

  9. HTML5+ API 学习

    HTML5+ API 模块整理 API Reference 模块 中文 模块介绍 Accelerometer 加速计 管理设备加速度传感器,用于获取设备加速度信息,包括x(屏幕水平方向).y(垂直屏幕 ...

  10. jzoj3865[JSOI2014]士兵部署

    ‘ 数据范围:n,m<=10^5,传送门:https://jzoj.net/senior/#main/show/3865 感觉jzoj好高明啊,就是访问不太稳定. 首先题意中被n个点控制的区域相 ...