- 浏览: 2652327 次
- 来自: 杭州
文章分类
- 全部博客 (1188)
- webwork (4)
- 网摘 (18)
- java (103)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (14)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (7)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介 -
107x:
不错,谢谢!
Python机器学习库
spring 对ibatis的封装通过SqlMapClientTemplate实现。
通常如果我们直接使用ibatis的sqlMapClient进行insert操作或者queryForObject都会抛出sqlSQLException:
处理这种错误很没意思,通过spring的sqlMapClientTemplate只需一行代码:
sqlMapClientTemplate.insert("MS-INSERT-UNREADCOUNT", unreadCount);
看看spring如何帮我们封装的:
最后所有的insert,update,delete,query都通过execute被执行。
通常如果我们直接使用ibatis的sqlMapClient进行insert操作或者queryForObject都会抛出sqlSQLException:
try { cli.insert("MS-INSERT-UNREADCOUNT", unreadCount); } catch (SQLException e) { logger.error("create UnReadCount: ", e); }
处理这种错误很没意思,通过spring的sqlMapClientTemplate只需一行代码:
sqlMapClientTemplate.insert("MS-INSERT-UNREADCOUNT", unreadCount);
看看spring如何帮我们封装的:
public <T> T execute(SqlMapClientCallback<T> action) throws DataAccessException { Assert.notNull(action, "Callback object must not be null"); Assert.notNull(this.sqlMapClient, "No SqlMapClient specified"); // We always need to use a SqlMapSession, as we need to pass a Spring-managed // Connection (potentially transactional) in. This shouldn't be necessary if // we run against a TransactionAwareDataSourceProxy underneath, but unfortunately // we still need it to make iBATIS batch execution work properly: If iBATIS // doesn't recognize an existing transaction, it automatically executes the // batch for every single statement... SqlMapSession session = this.sqlMapClient.openSession(); if (logger.isDebugEnabled()) { logger.debug("Opened SqlMapSession [" + session + "] for iBATIS operation"); } Connection ibatisCon = null; try { Connection springCon = null; DataSource dataSource = getDataSource(); boolean transactionAware = (dataSource instanceof TransactionAwareDataSourceProxy); // Obtain JDBC Connection to operate on... try { ibatisCon = session.getCurrentConnection(); if (ibatisCon == null) { springCon = (transactionAware ? dataSource.getConnection() : DataSourceUtils.doGetConnection(dataSource)); session.setUserConnection(springCon); if (logger.isDebugEnabled()) { logger.debug("Obtained JDBC Connection [" + springCon + "] for iBATIS operation"); } } else { if (logger.isDebugEnabled()) { logger.debug("Reusing JDBC Connection [" + ibatisCon + "] for iBATIS operation"); } } } catch (SQLException ex) { throw new CannotGetJdbcConnectionException("Could not get JDBC Connection", ex); } // Execute given callback... try { return action.doInSqlMapClient(session); } catch (SQLException ex) { throw getExceptionTranslator().translate("SqlMapClient operation", null, ex); } finally { try { if (springCon != null) { if (transactionAware) { springCon.close(); } else { DataSourceUtils.doReleaseConnection(springCon, dataSource); } } } catch (Throwable ex) { logger.debug("Could not close JDBC Connection", ex); } } // Processing finished - potentially session still to be closed. } finally { // Only close SqlMapSession if we know we've actually opened it // at the present level. if (ibatisCon == null) { session.close(); } } }
最后所有的insert,update,delete,query都通过execute被执行。
发表评论
-
Spring JdbcTemplate执行过程分析
2013-07-08 16:38 1657调用入口 调用JdbcTemplate提供的API都会委 ... -
servlet 整合freemarkder
2013-04-18 15:51 1866Servlet与FreeMarker整合 ht ... -
spring schema文档
2013-03-15 17:26 790spring schema 扩展 基于Spri ... -
Spring Resource接口总结
2013-01-17 11:52 809Spring 通过Resource接口对资源进行抽象,资源可 ... -
spring mvc 快速启动
2012-12-30 00:33 1060依赖: <dependency> ... -
JBDC和ibatis的选型总结
2012-12-19 12:30 972最近做搜索,觉得ibatis过于笨重,本想简单的使用JDBC, ... -
spring 框架快速启动
2012-12-18 18:36 11021. 通过maven新建工程 2. 添加依赖包 &l ... -
spring mvc异常吃掉的问题
2012-11-21 16:21 21646今天发现spring mvc把一个view参数匹配异常(org ... -
spring的FactoryBean机制
2012-11-20 16:18 1221spring可以通过的FactoryBean的形式把一个Fac ... -
spring 3.0.5.RELEASE版本的bug
2012-10-26 11:05 1154启动报错: org.springframework.be ... -
Spring 创建bean的过程
2012-10-11 09:42 1067BeanFacotry ApplicationConte ... -
Spring中ref local与ref bean区别:
2012-10-08 11:34 725Spring中ref local与ref bean区别 ... -
spring的类型转换机制(BeanWrapper)
2012-10-02 18:42 2159spring作为一个beanFactory,免不了要做类型转化 ... -
ibatis 配置
2012-08-16 16:34 891<result property="id& ... -
Spring Security授权 AccessDecisionManager
2012-08-13 18:35 8780在前面那篇博客有一段配置: <http aut ... -
Spring Security入门
2012-08-13 15:52 1203参考官方文档(http://www.mossle.com/do ... -
三个类实现通过spring启动web容器
2012-02-27 17:29 2308对于struts2这样的web框架,需要整合spring来管理 ... -
PathMatchingResourcePatternResolver
2012-02-27 16:40 9163PathMatchingResourcePatternReso ... -
Spring 记录
2012-02-27 16:12 1220MethodParameter BeansWrappe ...
相关推荐
Ibatis更适合那些需要对SQL有高度定制需求的项目。 在`stm-ssh`和`SSHdemo`中,可能包含的是Struts2+Spring+Hibernate的整合示例。开发者通常会创建Action类来处理请求,定义Service层来封装业务逻辑,并使用...
4. **Service接口和实现类**:封装业务逻辑,通过iBatis执行SQL。 5. **Action类**:处理HTTP请求,调用Service,返回结果。 6. **JSP页面**:展示数据或接收用户输入。 通过研究这个Demo,开发者可以学习到如何在...
在iBATIS中,SQL语句被封装在映射文件中,与Java代码分离,使得SQL可以独立优化。它支持动态SQL,允许开发者在运行时构建SQL语句,提供了强大的查询能力和灵活性。iBATIS与Spring的整合允许通过Spring的DAO和Service...
iBatis将数据访问逻辑封装在XML配置文件或注解中,通过SQL映射文件来定义SQL语句,然后通过Java接口或Mapper来执行这些SQL。这种方式既避免了JDBC的繁琐,又比ORM框架如Hibernate更为轻便,适合对SQL有高度定制需求...
Spring还提供了数据访问支持,包括JDBC抽象、ORM集成(如Hibernate、MyBatis)以及对各种数据库的支持。 3. iBatis框架:iBatis是一个SQL映射框架,它将SQL语句与Java代码分离,提供了一种灵活的方式来执行数据库...
### Spring+Ibatis Demo搭建详解 #### 一、项目背景与目标 在现代软件开发过程中,集成多种技术栈来构建高效稳定的应用系统是常见的做法。本文档将详细介绍如何使用Spring和Ibatis这两种流行的技术框架搭建一个...
- **DAO (Data Access Object)**: 通过iBatis实现,封装数据库操作。 - **SQL Mapping**: iBatis中的SQL配置,定义了如何与数据库交互。 - **事务管理**: Spring提供的事务边界,确保数据一致性。 这个小demo提供了...
Struts1、Spring和iBatis是Java Web开发中经典的三大框架,它们分别负责MVC模式中的控制器、业务逻辑管理和服务层数据访问。这个"Struts1+Spring+iBatis-jar包"集合了这三个框架的核心组件,为开发者提供了一个快速...
Struts2、Spring和iBatis是Java Web开发中常用的三大框架,它们分别负责MVC模式中的动作控制、依赖注入及持久层操作。本项目整合了这三个框架,并使用MySQL作为数据库,实现了一个基础的用户登录注册查询删除的功能...
在IT行业中,Spring和iBatis的整合是常见的企业级应用开发模式,它结合了Spring的强大功能和iBatis的灵活数据库操作。本资源“spring+ibatis整合web所需ibatis包”提供的是用于实现这一整合的关键iBatis库,解决在...
Struts2、Spring和iBatis是Java Web开发中三个非常重要的开源框架,它们的整合应用可以构建出高效、灵活的MVC(Model-View-Controller)架构。在这个"Struts2+Spring+iBatis"的项目中,我们看到的是一个用户登录功能...
同时,Spring的事务管理能力确保了对数据库操作的原子性和一致性,通过声明式事务管理,可以在XML配置文件中轻松设置事务边界,如开启、提交、回滚等操作。 Ibatis是轻量级的持久层框架,它简化了JDBC的繁琐工作,...
在构建Java Web应用程序时,Spring MVC、Spring和iBatis是三个非常重要的框架。Spring MVC作为Spring框架的一部分,主要用于处理Web请求,Spring则提供全面的依赖注入和面向切面编程功能,而iBatis则是一个优秀的...
文件"Spring 2.5 Reference.pdf"是Spring 2.5版本的官方参考文档,包含了Spring框架的详细介绍和使用指南,对理解Spring的核心概念和技术细节非常有帮助。"Thinking.In.Java.3rd.Edition.Chinese.eBook.pdf"是...
【标题】"spring\ibatis样例工程"揭示了这个压缩包内容是一个基于Spring和iBatis框架的示例Web MVC项目。这个项目是为学习和理解如何在实际开发环境中集成和使用这两个流行的技术而创建的。Spring是一个全面的Java...
Spring还提供了Spring MVC模块,与Struts2类似,用于构建Web应用的控制层,同时Spring还包含对JDBC的封装,以及对iBatis的集成支持。 3. iBatis:iBatis是一个优秀的持久层框架,它允许开发者将SQL语句写在XML配置...
1. SqlSessionTemplate:它是MyBatis-Spring的核心组件,封装了SqlSession的生命周期管理,遵循Spring的模板方法模式。开发者可以在自定义的DAO层方法中使用它,执行SQL语句,无需关心SqlSession的开启、关闭和异常...
在本项目中,自动生成的Service层代码可以包含对业务逻辑的封装,使得业务处理更加模块化,便于维护和测试。 iBatis,作为一个轻量级的持久层框架,它将SQL语句与Java代码分离,提供了一种灵活的映射机制。通过XML...
Spring 和 iBATIS 是两个非常重要的 Java 开发框架,它们在企业级应用开发中被广泛使用。本示例工程是将这两个框架集成到 Eclipse IDE 中的一个实例,旨在帮助开发者理解和学习如何在实际项目中结合使用 Spring 和 ...