- 浏览: 1098478 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
skyesx:
这是2PC实现,更常用的是一个柔性事务的实现,可以参考http ...
Spring分布式事务实现 -
ddbird:
这第一句就不严谨“分布式事务是指操作多个数据库之间的事务”,显 ...
Spring分布式事务实现 -
呵呵6666:
基于互联网支付系统的微服务架构分布式事务解决方案http:// ...
Spring分布式事务实现 -
小黄牛:
写得不错,交流群:472213887
Spring分布式事务实现 -
jiaoqf321456:
这明明是用的apache的压缩,给ant.jar有半毛钱关系吗 ...
使用ant.jar进行文件zip压缩
一、applicationContext.xml
二、sqlMapConfig.xml
三、User.java
四、User.xml
五、UserDao.java
六、UserDaoImpl.java
七、测试
八、iBatis 控制台输出 sql:log4j.properties
九、运行期从iBatis中取出sql
1.通过SqlMapClientDaoSupport,SqlMapClientImpl,MappedStatement,Sql,RequestScope等ibatis提供的类
2.通过SqlMapExecutorDelegate,MappedStatement,Sql,RequestScope等ibatis提供的类
关于RequestScope
说明:
在websphere中,要注意DocType部分写法:
Spring+ibatis编程rollback
<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd" default-lazy-init="true"> <!-- 配置事务特性 --> <tx:advice id="txAdvice" transaction-manager="TrasanctionMagnager"> <tx:attributes> <tx:method name="add*" propagation="REQUIRED"/> <tx:method name="del*" propagation="REQUIRED"/> <tx:method name="update*" propagation="REQUIRED"/> <tx:method name="*" read-only="true"/> </tx:attributes> </tx:advice> <!-- 配置哪些类的方法需要进行事务管理 --> <aop:config> <aop:pointcut id="allManagerMethod" expression="execution(* com.ibatis.manager.*.*(..))"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod"/> </aop:config> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://127.0.0.1/springapp"/> <property name="username" value="root"/> <property name="password" value="root"/> </bean> <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="configLocation"> <value>classpath:sqlMapConfig.xml</value> </property> <property name="dataSource" ref="dataSource"/> </bean> <bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate"> <constructor-arg> <ref bean="sqlMapClient"></ref> </constructor-arg> </bean> <bean id="userDAO" class="com.ibatis.dao.impl.UserDAOImpl"> <property name="sqlMapClient" ref="sqlMapClient"/> </bean> </beans>
二、sqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <settings cacheModelsEnabled="true" enhancementEnabled="true" errorTracingEnabled="true" lazyLoadingEnabled="true" maxRequests="32" maxSessions="10" maxTransactions="5" useStatementNamespaces="false"/> <!-- 使用spring之后,数据源的配置移植到了spring上,所以iBATIS本身的配置可以取消 --> <sqlMap resource="com/ibatis/dao/impl/User.xml"/> </sqlMapConfig>
三、User.java
package com.ibatis.model; import java.io.Serializable; public class User implements Serializable{ private static final long serialVersionUID = 1L; private Integer id; private String username; private String password; public User() { } public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } }
四、User.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="User"> <!-- Use type aliases to avoid typing the full classname every time. --> <typeAlias alias="user" type="com.ibatis.model.User"/> <select id="selectAllUsers" resultClass="user"> <![CDATA[ select * from t_user ]]> </select> <select id="selectUser" resultClass="user" parameterClass="int"> <![CDATA[ select * from t_user where id=#id# ]]> </select> <insert id="insertUser" parameterClass="user"> <![CDATA[ insert into t_user values ( null,#username#,#password# ) ]]> </insert> <update id="updateUser" parameterClass="user"> <![CDATA[ update t_user set username = #username#,password=#password# where id=#id# ]]> </update> <delete id="deleteUser" parameterClass="int"> <![CDATA[ delete from t_user where id=#id# ]]> </delete> </sqlMap>
五、UserDao.java
package com.ibatis.dao; import java.util.List; import com.ibatis.model.User; public interface UserDao { public void select(User user); public List findAll(); public void delete(User user); public void save(User user); public void update(User user); }
六、UserDaoImpl.java
package com.ibatis.dao.impl; import java.util.List; import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; import com.ibatis.dao.UserDAO; import com.ibatis.model.User; public class UserDAOImpl extends SqlMapClientDaoSupport implements UserDAO { public void select(User user) { getSqlMapClientTemplate().delete("selectUser ", user.getId()); } public List findAll() { return getSqlMapClientTemplate().queryForList("selectAllUsers",null); } public void delete(User user) { getSqlMapClientTemplate().delete("deleteUser", user.getId()); } public void save(User user) { getSqlMapClientTemplate().insert("insertUser", user); } public void update(User user) { getSqlMapClientTemplate().update("updateUser", user); } }
七、测试
package com.logcd.test; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.ibatis.dao.UserDAO; import com.ibatis.model.User; import junit.framework.TestCase; public class IbatisTest extends TestCase { private UserDAO userDAO; protected void setUp() throws Exception { super.setUp(); ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); userDAO = (UserDAO)context.getBean("userDAO"); } protected void tearDown() throws Exception { super.tearDown(); } @SuppressWarnings("unchecked") public void testUserService(){ User usr = new User(); usr.setUsername("User" + Math.round(Math.random()*1000)); usr.setPassword("654321"); userDAO.save(usr); List<User> list = userDAO.findAll(); for(User user : list){ System.out.println("UserName:" + user.getUsername()); } } }
八、iBatis 控制台输出 sql:log4j.properties
log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n log4j.logger.com.ibatis=debug log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug log4j.logger.java.sql.Connection=debug log4j.logger.java.sql.Statement=debug log4j.logger.java.sql.PreparedStatement=debug,stdout
九、运行期从iBatis中取出sql
1.通过SqlMapClientDaoSupport,SqlMapClientImpl,MappedStatement,Sql,RequestScope等ibatis提供的类
String sql = null; SqlMapClientImpl sqlmap = (SqlMapClientImpl) this.getSqlMapClient(); MappedStatement stmt = sqlmap.getMappedStatement("getUserInfoList"); Sql stmtSql = stmt.getSql(); RequestScope requestScope = new RequestScope(); requestScope.setStatement(stmt); sql = stmtSql.getSql(requestScope, companyId); System.out.println(sql);
2.通过SqlMapExecutorDelegate,MappedStatement,Sql,RequestScope等ibatis提供的类
SqlMapExecutorDelegate delegate=((ExtendedSqlMapClient) (getSqlMapClientTemplate().getSqlMapClient())).getDelegate(); MappedStatement ms = delegate.getMappedStatement("getUserInfoList"); Sql sql=ms.getSql(); RequestScope requestScope = new RequestScope(); requestScope.setStatement(ms); String sqlStr = sql.getSql(requestScope,companyId); System.out.println(sqlStr);
关于RequestScope
说明:
在websphere中,要注意DocType部分写法:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"> <sqlMap namespace="Employee"> <select id="getEmployees" resultClass="java.util.HashMap"> SELECT * FROM EMPLOYEE </select> </sqlMap>
Spring+ibatis编程rollback
//设置一个回滚的点 Object create = TransactionAspectSupport.currentTransactionStatus().createSavepoint(); //在要回滚的地方调用下面的方法就可以了 TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(create); //设置这个则是这个方法里的数据库操作全部回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- ibatis-common-2.jar (83 KB)
- 下载次数: 65
- ibatis-sqlmap-2.jar (297.5 KB)
- 下载次数: 48
- ibatis-dao-2.jar (58.5 KB)
- 下载次数: 35
发表评论
-
SpringBoot开发WebService之Axis
2019-07-14 23:56 4893一、服务器端发布WebService服务 1、POM.xml文 ... -
SpringBoot开发WebService之CXF
2019-07-14 23:56 1353一、在服务器端的WebSerivce服务发布 1、POM.xm ... -
SpringBoot项目非web方式启动
2019-07-03 17:02 48171、springboot 1.x中以非web方式启动 @S ... -
SpringBoot使用Druid数据库密码加密
2019-03-06 23:28 15281、生成公钥、私钥和密码加密串 java -cp drui ... -
Spring Annotation
2010-12-02 17:14 0Spring2.x引入了组件自动扫描机制,可以在类路径底 ... -
Spring分布式事务实现
2010-11-10 14:28 83207分布式事务是指操作多个数据库之间的事务,spring的 ... -
Spring3 Annotation + Hibernate3-jpa2.0 + CGLIB + 多数据源
2010-08-19 09:30 10527一、定义一个测试用Entity。 @Entity pub ... -
使用iBatis2.0
2010-05-26 10:20 0一、NULL问题 ibatis操作oracle数据库时, ... -
使用AspectJ LTW(Load Time Weaving)
2010-01-04 14:25 10791在Java 语言中,从 ... -
Spring2.0 AOP AspectJ 注释实现
2010-01-04 14:24 5594一、AOP基本概念 切面(Aspect): 一个关注点的模块 ... -
Spring + JPA + Hibernate配置
2010-01-04 14:24 34747<1>persistence.xml放到类路径下的 ... -
配置spring数据源
2009-11-06 16:47 1248配置一个数据源 Spring在第三方依赖包中包含了两 ... -
hibernate的dialect
2009-07-23 10:04 5462一、hibernate的dialect RDBM ... -
Hibernate缓存配置/批量处理
2009-03-25 21:50 10973Hibernate除了自动对Se ... -
Hibernate的一级与二级缓存
2009-03-25 21:24 1716缓存是介于应用程序和物理数据源之间,其作用是为了降低应用 ... -
spring jdbcTemplate使用
2008-07-15 17:17 78225一、使用示例 (1)springJdbcContext.xml ... -
Spring2.X以AspectJ 式AOP 配置事务
2008-07-10 13:23 2100(1)配置: Spring的事务管理是通过AOP代理实 ... -
spring 事务管理
2008-07-08 16:35 12014声明式的事务管理(Declarative transactio ... -
Hibernate中one-to-many/many-to-one和many-to-many
2008-06-28 17:03 3977<1>one-to-many/many-to-on ... -
Hibernate中的对象one-to-one关系
2008-06-26 22:55 2494(1) 通过主健参考,限制2个数据表中的主健使用相同的值 c ...
相关推荐
Struts2、Spring和iBatis是Java Web开发中经典的三大框架,它们组合起来可以构建出高效、可维护的企业级应用程序。本项目旨在为初学者提供一个基础的入门指南,帮助理解并掌握这三个框架的集成与使用,实现CRUD...
《Ibatis 入门经典 实例》 Ibatis 是一款著名的轻量级 Java 持久层框架,它提供了一种映射 SQL 和 Java 对象的简单方式,从而减轻了开发人员在数据库操作中的工作负担。这篇实例教程将带你深入理解 Ibatis 的核心...
在本教程中,我们将通过一个简单的Ibatis入门例子,带你逐步了解并掌握这个强大的框架。 首先,我们需要在项目中引入Ibatis的依赖。通常,我们会在Maven的pom.xml文件中添加以下依赖: ```xml <groupId>org....
- 易于集成:Ibatis 可以轻松地与其他框架(如 Spring)集成,实现更强大的功能。 通过这个入门教程,你将掌握 Ibatis 的基础用法,从而能够进行基本的数据库操作。在实际项目中,随着对 Ibatis 的深入理解和应用...
本教程将带你一步步走进iBatis的世界,通过一个最简单的入门例子来了解其基本概念和使用方法。 一、iBatis简介 iBatis(现在称为MyBatis)是由Apache软件基金会维护的一个开源项目,它解决了Java应用程序直接操作...
提供的"cairngorm简单入门实例.doc"文档应该详细介绍了如何设置项目、配置Cairngorm框架、整合Spring和iBatis,以及创建和运行一个基本的交互流程。`cairngormDemo`可能是一个包含所有源代码和配置文件的项目,包括...
Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得...通过学习这个Ibatis入门教程,你可以了解并掌握如何在Java应用中使用Ibatis进行数据操作,为后续的进阶学习和项目开发打下坚实的基础。
在IT行业中,SSI(Spring、Struts1、iBatis)是经典的Java Web开发框架组合,它们各自负责应用的不同层面,协同工作以构建高效、可维护的系统。在这个"Spring+struts1+ibatis案例"中,我们将深入探讨这三个框架如何...
iBatis,现已被更名为MyBatis,是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。...通过这个简单的"iBatis入门Helloworld"项目,你可以快速掌握iBatis的基础操作,并为进一步学习和应用打下坚实基础。
在iBATIS入门讲解中,你会了解到如何设置项目环境,包括添加iBATIS库依赖、配置数据源以及创建SqlSessionFactory。SqlSessionFactory是iBATIS的核心组件,它负责创建SqlSession对象,SqlSession是执行SQL语句的接口...
- 首先,阅读《IBatis入门手册》了解基本概念和安装步骤。 - 掌握XML配置和注解方式的Mapper接口定义。 - 学习如何进行参数映射和结果映射。 - 实践JPetStore-5.0源码,理解其架构和数据库交互逻辑。 - 最后,...
**ibatis入门教程与开发指南** Ibatis,全称MyBatis-iBATIS,是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。Ibatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。Ibatis可以使用简单...
《IbatisDemo入门源码详解》 IbatisDemo是一个典型的基于Ibatis框架的入门示例,它为我们展示了如何在Java项目中使用Ibatis进行数据库操作。Ibatis,一个优秀的持久层框架,它允许开发者将SQL语句直接写在配置文件...
Struts2、iBatis和Spring是Java Web开发中三个非常重要的框架,它们结合使用能够构建出高效、灵活的企业级应用程序。以下是对这三个框架及其整合使用的详细解释。 **Struts2** 是一个基于MVC(Model-View-...
对于Spring整合Ibatis,还需要配置SqlSessionFactoryBean,它会根据配置文件生成SqlSessionFactory,它是SqlSession的工厂。 四、动态SQL Ibatis的动态SQL功能非常强大,允许我们在映射文件中直接写条件语句,如if...
在这个“webwork增删改简单入门例子(+spring+ibatis)”中,我们将探讨如何结合Spring和iBatis这两个流行的技术来构建一个基础的CRUD(创建、读取、更新、删除)应用。 1. WebWork基础知识: - 控制器:WebWork的...
"Spring Guide.pdf"很可能是Spring框架的入门教程,涵盖了Spring的基本概念、配置、Bean管理、AOP、事务管理等内容,可能还会介绍Spring MVC用于构建Web应用的部分。 "Hibernate_DEV_GUIDE.rar"应包含Hibernate的...