最近在家里整理书籍,看到一本《Spring in Action》,基于手头上的项目都不是很大,基本上都没有使用Spring,都快忘差不多了,所以写了个Spring与ibatis整合的小例子,权当练手之作,废话少说
DAO类
-
publicinterfaceUserDao{
-
publicvoidaddUser(StringuserName);
-
publicvoiddelUser(StringuserName);
-
publicvoideditUser(StringuserName);
-
publicListgetUser(StringuserName);
-
}
DAOImpl 实现接口类
-
publicclassUserImplextendsSqlMapClientDaoSupportimplementsUserDao{
-
@Override
-
publicvoidaddUser(StringuserName){
-
-
System.out.println("=======添加用户"+userName);
-
-
UserModeluserModel=newUserModel();
-
userModel.setLoginName("spring");
-
userModel.setPasswd("123");
-
userModel.setUserName(userName);
-
getSqlMapClientTemplate().insert("insertObject",userModel);
-
-
-
UserModeluserModel2=newUserModel();
-
userModel2.setLoginName("spring");
-
userModel2.setPasswd("123");
-
userModel2.setUserName(userName+"这是一个测试用户,用来测试spring的事务回滚,如果该数据不能插入进去,那么上面的插入也不会执行成功");
-
getSqlMapClientTemplate().insert("insertObject",userModel2);
-
}
-
@Override
-
publicvoiddelUser(StringuserName){
-
-
System.out.println("=======删除用户");
-
}
-
@Override
-
publicvoideditUser(StringuserName){
-
-
System.out.println("=======编辑用户");
-
}
-
@Override
-
publicListgetUser(StringuserName){
-
-
System.out.println("=======查询用户");
-
returngetSqlMapClientTemplate().queryForList("getAllUser");
-
}
-
}
注意public class UserImplextends SqlMapClientDaoSupport implements UserDao
大家应该在这个类中的addUser方法中可以看到//第二条测试数据 这段代码,其中我在serModel2.setUserName()方法中传了一个很长的用户名参数,这参数的长度已经大于数据库中字段给定的大小,这里就是为了测试事务回滚的。当然,这只是个测试程序,实际应用中,这段代码应该是放到Service层中的
Service层
-
publicclassUserServices{
-
-
-
publicUserDaouserDao;
-
-
publicvoidsetUserDao(UserDaouserDao){
-
this.userDao=userDao;
-
}
-
-
-
-
-
-
-
publicvoidaddUser(){
-
try{
-
userDao.addUser("张三");
-
}catch(RuntimeExceptione){
-
System.out.println("出错");
-
}
-
}
-
-
publicListgetUser(){
-
returnuserDao.getUser("张三");
-
}
-
}
若没有action 则在services里面抛异常,在Dao里面设置事务,有action 则在services里面设置事务,在Action抛异常。不然Spring不会实现事务的回滚
userSql.xml ibatis的配置文件,非常简单
-
-
-
<insertid="insertObject"parameterClass="user">
-
INSERTINTOsys_user(
-
loginName,
-
userName,
-
passwd)
-
VALUES(
-
#loginName#,
-
#userName#,
-
#passwd#)
-
</insert>
SqlMapConfig.xml ibatis的配置文件
-
<?xmlversion="1.0"encoding="UTF-8"?>
-
<!DOCTYPEsqlMapConfig
-
PUBLIC"-//ibatis.apache.org//DTDSQLMapConfig2.0//EN"
-
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
-
<sqlMapConfig>
-
<sqlMapresource="user/sql/UserSql.xml"/>
-
</sqlMapConfig>
因为使用了Spring对Ibatis进行管理,所以这里的配置很简单,至于数据库地址的配置这一块,将在下面列出
ServiceFactory 类,这个文件主要是用于测试程序的
-
packageutil;
-
importorg.springframework.beans.factory.BeanFactory;
-
importorg.springframework.context.support.ClassPathXmlApplicationContext;
-
importuser.services.UserServices;
-
publicclassServiceFactory{
-
privatestaticBeanFactoryfactory=null;
-
static{
-
ClassPathXmlApplicationContextcontext=newClassPathXmlApplicationContext(
-
newString[]{"applicationContext.xml"});
-
-
-
factory=(BeanFactory)context;
-
}
-
-
-
-
-
-
publicstaticUserServicesgetUserInfoDAO(){
-
return(UserServices)factory.getBean("userServices");
-
}
-
-
-
-
-
-
publicstaticUserServicesgetUserInfoDAO1(){
-
return(UserServices)factory.getBean("userServices1");
-
}
-
-
-
}
因为applicationContext.xml文件是放在src的根目录下,所以这边只用填写applicationContext.xml即可
applicationContext.xml Spring的配置文件,也是整合的关键地方,这里添加了多个数据库的支持,数据库分别是MySql和SQLite
这里使用了自动事务处理的方法,配置1为MySql的,配置2为SQLite的
整体来说,Spring和ibatis的整合还是很简单的,只要了解了Spring的基本使用,理解了上面的几个需要注意的地方,整合工作就会很简单了,上面的代码中有很多不规范的地方,大家在做整合的过程中一定要严格注意Service层和DAO层的区别,比如说我这里在做对数据库添加用户信息的时候,这一段代码严格意义上来讲,应该放到Service层的。
还有需要说明的是
若没有action 则在services里面抛异常,在Dao里面设置事务,有action 则在services里面设置事务,在Action抛异常。不然Spring不会实现事务的回滚
分享到:
相关推荐
struts spring ibatis mysql 整合 实例 数据库 源码
整合ibatis和spring,通过spring的ioc框架调用ibatis进行数据库访问,并向数据库中插入数据
springmvc+spring+ibatis 整合 内含 数据库初始化 显示用了DHTMLX
为了开发方便,打算换一个架构,自己整合了s2sibatis框架,采用spring事务管理数据库,喜欢的可以看看,有什么问题请多多指教!
spring+ibatis+ehcache整合完整例子,数据库MySQL
ibatis和Spring整合的详细例子,数据库用的是mysql,开发环境是Eclipse3.2: 1.首先把用到的包导入进来,此例用的是spring-framework-1.2.7,iBATIS_DBL-2.1.7.597,mysql的数 据库连接包用的是mysql-connector-java-5.0.3...
struts spring2 ibatis整合代码实例 已经配置好的。数据库也配置好了。 可以适合mysql主从配置多个数据源的。
此案例是学习struts2 spring3 ibatis整合的极品案例,里面涉及到了增删改查,数据库使用oracle数据库。页面请求全部使用ajax请求,数据传输以JSON格式传输,并且使用的是struts2 的JSON技术。页面js使用Jquery1.6 ,...
使用Ibatis,Spring,Structs整合做的一个小例子,可以根据不同类型数据库和数据源进行数据表建立和修改,测试无问题。
Spring和ibatis Ext整合完整实例,里面包含了源代码和整合实例文档并包含数据库表信息。希望对想学习的朋友有所帮助。
Struts2+Spring+iBatis整合的一个小例子。 包括了对MySQL数据库的增删改查,只适用于新手,使用时请先把ssi.sql文件导入数据库。 压缩包内有源码和所需jar包
ssi_struts2_spring_ibatis oracle数据库.增删改查分页 示例.有简单页面.好资料.!
spring struts2 ibatis整合,sha1加密,oracle数据库。myeclipse直接导入即可。
strusts2+spring+ibatis 整合做的用户登录功能 用的是oracle数据库
自己做的一个小例子,struts1+spring2.0+ibatis整合实例,希望大家指教。 数据库用的是mysql5,其中用到一个表emp,字段为id,name。
Struts spring ibatis json整合实例(附完整jar包,无数据库文件),前台使用jquery。附带用jquery.ajax请求后台返回json格式数据!
整合了spring,ibatis,easyui的一个后台管理系统,实现了数据的增删改功能,界面采用easyui,可针对用户表进行添加,删除,修改操作,使用log4j可以输出sql及查询结果日志,控制台显示sql与查询结果,数据库采用...
iBatis和Spring整合的详细例子,数据库用的是mysql,开发环境是Eclipse3.2。
spring+springmvc+ibatis的整合例子,适合新手入门,简单明了
springMVC+spring+ibatis 整合,包含初始化sql 为myeclipse项目,数据库配置见properites文件