最近温习了一下J2EE框架里面的Spring+Ibatis的结合,写了一个DEMO,支持多数据源,主要用于以后学习第三方的分布式事务框架以及Spring本身支持的一些特性。这里只贴出主要代码供大家参考,具体代码请下载附件。
1. 对象 User、Role User.java Role.java
2. Dao层 接口UserRoleBindingDao 实现UserRoleBindingDaoImpl
UserRoleBindingDaoImpl.java
public class UserRoleBindingDaoImpl extends SqlMapClientDaoSupport implements UserRoleBindingDao{
public void bindUserRole(User user, Role role) {
long nextId = (Long)this.getSqlMapClientTemplate().queryForObject("selectId");
Map map = new HashMap();
map.put("id", nextId);
map.put("userId", user.getUserId());
map.put("roleId", role.getRoleId());
this.getSqlMapClientTemplate().insert("bindUserRole", map);
}
}
3. Service层 接口UserRoleBindingService 实现UserRoleBindingServiceImpl
UserRoleBindingServiceImpl.java
public class UserRoleBindingServiceImpl implements UserRoleBindingService{
private UserService userService;
private RoleService roleService;
private UserRoleBindingDao userRoleBindingDao;
public void setUserService(UserService userService) {
this.userService = userService;
}
public void setRoleService(RoleService roleService) {
this.roleService = roleService;
}
public void setUserRoleBindingDao(UserRoleBindingDao userRoleBindingDao) {
this.userRoleBindingDao = userRoleBindingDao;
}
public void bindUserRole(User user, Role role) {
this.userService.saveUser(user);
this.roleService.saveRole(role);
this.userRoleBindingDao.bindUserRole(user, role);
}
}
4. 配置文件
SQL映射文件 userRoleBinding.xml
<sqlMap namespace="role">
<select id="selectId" resultClass="java.lang.Long">
select seq_t_user_role.NEXTVAL FROM DUAL
</select>
<insert id="bindUserRole" parameterClass="map">
insert into t_user_role values (#id#,#userId#,#roleId#)
</insert>
</sqlMap>
所有SQL存取文件 sql-map-config.xml
<sqlMapConfig>
<settings enhancementEnabled="true" maxTransactions="10"
maxRequests="10" maxSessions="20" />
<sqlMap resource="dao/user.xml"/>
<sqlMap resource="dao/role.xml"/>
<sqlMap resource="dao/userRole.xml"/>
</sqlMapConfig>
数据源配置文件 jdbc.properties
jdbc1.driverClassName=oracle.jdbc.xa.client.OracleXADataSource
jdbc1.url=jdbc:oracle:thin:@localhost:1521:mgodb
jdbc1.username=user
jdbc1.password=user
jdbc2.driverClassName=oracle.jdbc.xa.client.OracleXADataSource
jdbc2.url=jdbc:oracle:thin:@localhost:1521:mgodb
jdbc2.username=role
jdbc2.password=role
Bean配置文件 applicationContext-database.xml
<bean id="dataSource1" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName">
<value>${jdbc1.driverClassName}</value>
</property>
<property name="url">
<value>${jdbc1.url}</value>
</property>
<property name="username">
<value>${jdbc1.username}</value>
</property>
<property name="password">
<value>${jdbc1.password}</value>
</property>
</bean>
<bean id="dataSource2" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName">
<value>${jdbc2.driverClassName}</value>
</property>
<property name="url">
<value>${jdbc2.url}</value>
</property>
<property name="username">
<value>${jdbc2.username}</value>
</property>
<property name="password">
<value>${jdbc2.password}</value>
</property>
</bean>
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocations">
<list>
<value>classpath:/dao/sql-map-config.xml</value>
</list>
</property>
</bean>
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath*:jdbc/jdbc.properties</value>
</list>
</property>
</bean>
applicationContext-dao.xml
<bean id="userDao" class="com.mangocity.spring.dao.impl.UserDaoImpl">
<property name="dataSource"><ref bean="dataSource1"/></property>
<property name="sqlMapClient"><ref bean="sqlMapClient"/></property>
</bean>
<bean id="roleDao" class="com.mangocity.spring.dao.impl.RoleDaoImpl">
<property name="dataSource"><ref bean="dataSource2"/></property>
<property name="sqlMapClient"><ref bean="sqlMapClient"/></property>
</bean>
<bean id="userRoleBindingDao" class="com.mangocity.spring.dao.impl.UserRoleBindingDaoImpl">
<property name="dataSource"><ref bean="dataSource1"/></property>
<property name="sqlMapClient"><ref bean="sqlMapClient"/></property>
</bean>
applicationContext-service.xml
<bean id="userService"
class="com.mangocity.spring.service.impl.UserServiceImpl">
<property name="userDao">
<ref bean="userDao" />
</property>
</bean>
<bean id="roleService"
class="com.mangocity.spring.service.impl.RoleServiceImpl">
<property name="roleDao">
<ref bean="roleDao" />
</property>
</bean>
<bean id="userRoleBindingService"
class="com.mangocity.spring.service.impl.UserRoleBindingServiceImpl">
<property name="userService">
<ref bean="userService" />
</property>
<property name="roleService">
<ref bean="roleService" />
</property>
<property name="userRoleBindingDao">
<ref bean="userRoleBindingDao" />
</property>
</bean>
applicationContext-beans.xml
<import resource="applicationContext-service.xml"/>
<import resource="applicationContext-dao.xml"/>
<import resource="applicationContext-database.xml"/>
5. 日志输出组件log4j log4j.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="[%-d{HH:mm:ss}] %p [%t] %c{10}.%M(%L) | %m%n"/>
</layout>
</appender>
<appender name="FILE"
class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="/logs/orderstatusServer.log" />
<param name="Append" value="true" />
<!--param name="Threshold" value="info" /-->
<!-- Rollover at midnight each day -->
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="[%-d{HH:mm:ss}] %p [%t] %c{5}.%M(%L) | %m%n" />
</layout>
</appender>
<appender name="FILE_Server"
class="org.apache.log4j.DailyRollingFileAppender">
<param name="encoding" value="UTF-8" />
<param name="File" value="logs/orderstatusServer.log" />
<param name="Append" value="true" />
<!--param name="Threshold" value="info" /-->
<!-- Rollover at midnight each day -->
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="[%-d{HH:mm:ss}] | %m%n" />
</layout>
</appender>
<!-- Suppress success logging from InteractiveAuthenticationSuccessEvent -->
<logger name="org.acegisecurity">
<level value="ERROR"/>
</logger>
<logger name="com.ibatis">
<level value="ERROR"/>
</logger>
<logger name="org.apache.log4j">
<level value="DEBUG"/>
</logger>
<logger name="org.springframework">
<level value="INFO"/>
</logger>
<logger name="java.sql">
<level value="ERROR"/>
</logger>
<logger name="java.sql.ResultSet">
<level value="ERROR"/>
</logger>
<root>
<level value="INFO"/>
<appender-ref ref="FILE"/>
<appender-ref ref="CONSOLE"/>
</root>
</log4j:configuration>
6. 测试类,Service层进行调用测试 ServiceTest.java
public class ServiceTest extends TestCase{
public UserRoleBindingService service ;
public void setUp(){
ApplicationContext ac = new ClassPathXmlApplicationContext("spring/applicationContext-beans.xml");
this.service = (UserRoleBindingService)ac.getBean("userRoleBindingService");
}
public void testBindingUserRole(){
User user = new User();
user.setUserId(7);
user.setUserName("zwustudy");
Role role = new Role();
role.setRoleId(7);
role.setRoleName("vip1");
service.bindUserRole(user, role);
}
}
分享到:
相关推荐
这个“struts2+spring+iBatis框架包”集成了这三个框架,使得开发者能够快速构建基于MVC(Model-View-Controller)模式的Web应用。 Struts2作为MVC框架,负责处理应用程序的控制逻辑。它通过Action类和配置文件定义...
通过以上步骤,我们成功地集成了Struts、Spring以及Ibatis框架,为构建复杂的企业级应用奠定了坚实的基础。这种整合不仅提高了代码的复用性与维护性,还增强了应用的性能与安全性。对于开发者而言,熟练掌握这一技术...
Struts2+Spring+Hibernate和Struts2+Spring+Ibatis是两种常见的Java Web应用程序集成框架,它们分别基于ORM框架Hibernate和轻量级数据访问框架Ibatis。这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于...
Struts、Spring和iBatis是Java开发中常用的三大开源框架,它们各自负责应用程序的不同层面,共同构建了一个灵活且强大的企业级应用开发解决方案。这里,我们深入探讨这三个框架以及它们如何协同工作。 **Struts框架...
在提供的"spring+struts2+ibatis整合的jar包"中,lib1可能包含了这三个框架以及它们的依赖库。这些jar文件是运行整合应用必不可少的组件,它们包含了框架的API、实现和一些工具类,帮助开发者快速搭建和运行整合项目...
Struts2、Spring和iBatis是Java Web开发中常用的三大框架,它们分别负责MVC模式中的Action层、业务逻辑层和服务数据访问层。本文将详细介绍这三个框架如何整合,以及在实际项目中如何运用。 首先,Struts2作为表现...
Struts、Spring 和 iBATIS 是Java开发领域中三大经典的开源框架,它们组合起来可以构建出高效、可维护的企业级Web应用。这个例子是利用这三个框架实现了一个基础的增删改查(CRUD)功能,涵盖了数据库操作、业务逻辑...
将这三个框架整合在一起,可以构建出高效、灵活且易于维护的Web应用程序。下面我们将详细介绍这三个框架以及它们的整合过程。 **Struts2框架**: Struts2是一个基于MVC设计模式的Web应用框架,它提供了丰富的控制器...
`Struts+Spring+Ibatis整合框架搭建配置文档.doc`应该详细阐述了如何配置Spring以管理Struts2的Action和iBatis的数据源及SqlSession。 3. **iBatis**:iBatis是一个SQL映射框架,它将SQL语句与Java代码分离,使得...
在这个“struts2+spring3+ibatis项目整合案例”中,我们将深入探讨这三个框架如何相互配合,实现项目的集成。 Struts2作为MVC(Model-View-Controller)架构的实现,主要负责处理用户请求,控制应用的流程。它提供...
综上所述,这个实例展示了如何整合Struts2、Spring、iBatis和Oracle来构建一个完整的Web应用,实现了动态分页搜索和附件上传功能。这种架构具有良好的可扩展性和可维护性,适用于各种中大型企业级项目。开发者可以...
Struts2、Spring和iBatis是Java Web开发中常用的三大框架,它们的整合使用能够构建出高效、灵活的企业级应用。Struts2是一个MVC(Model-View-Controller)框架,负责处理用户请求和控制应用程序流程;Spring则是一个...
WebWork、Spring 和 iBATIS 是三个非常重要的Java Web开发框架,它们的组合为初学者提供了丰富的学习资源。WebWork 是一个MVC(Model-View-Controller)框架,Spring 是一个全面的后端开发框架,而 iBATIS 是一个...
标题 "spring+velocity+ibatis" 暗示了这个项目是基于Spring框架,结合Velocity模板引擎和iBATIS持久层框架构建的一个Web应用程序。这三个技术的整合为开发者提供了高效、灵活的后端架构。 Spring框架是Java企业级...
**Spring、Struts2 和 iBatis 整合详解** 在Java Web开发中,Spring、Struts2 和 iBatis 是三个非常重要的框架。它们分别负责不同层面的任务:Spring 提供了全面的依赖注入(DI)和面向切面编程(AOP),用于管理...
这个"SSI"整合的Jar包,为开发者提供了一个快速搭建基于Struts2、Spring和Ibatis的开发环境,节省了手动下载和配置各个框架的时间,便于项目初始化和快速启动。开发者只需关注业务逻辑的实现,无需过多关注底层框架...
3. iBatis框架:iBatis是一个SQL映射框架,它将SQL语句与Java代码分离,提供了一种灵活的方式来执行数据库操作。通过XML或注解方式定义SQL语句,iBatis可以动态地生成和执行SQL,避免了传统的JDBC代码繁琐的模板式...
在Spring+Struts+ibatis这种经典的Java Web开发框架组合中,主要涉及到三层架构:表现层(Action)、业务逻辑层(Service)和数据访问层(DAO)。这些组件协同工作,实现了应用程序的功能。以下是对各部分的详细解释...
Struts2+Spring+Ibatis框架的整合是Java Web开发中常见的技术栈,它提供了强大的MVC(模型-视图-控制器)架构支持,以及服务层和数据访问层的高效管理。下面我们将详细探讨这三个框架如何协同工作以及搭建过程中涉及...