`

Spring+Ibatis框架整合学习

阅读更多
      最近温习了一下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);
    }
}
 
     
分享到:
评论
2 楼 hw_imxy 2014-10-22  
~
1 楼 asxinyu 2013-06-21  
非常感谢!

相关推荐

    struts2+spring+Ibatis框架包

    这个“struts2+spring+iBatis框架包”集成了这三个框架,使得开发者能够快速构建基于MVC(Model-View-Controller)模式的Web应用。 Struts2作为MVC框架,负责处理应用程序的控制逻辑。它通过Action类和配置文件定义...

    Struts+Spring+Ibatis整合框架搭建配置文档

    通过以上步骤,我们成功地集成了Struts、Spring以及Ibatis框架,为构建复杂的企业级应用奠定了坚实的基础。这种整合不仅提高了代码的复用性与维护性,还增强了应用的性能与安全性。对于开发者而言,熟练掌握这一技术...

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis是两种常见的Java Web应用程序集成框架,它们分别基于ORM框架Hibernate和轻量级数据访问框架Ibatis。这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于...

    struts+spring+ibatis框架

    Struts、Spring和iBatis是Java开发中常用的三大开源框架,它们各自负责应用程序的不同层面,共同构建了一个灵活且强大的企业级应用开发解决方案。这里,我们深入探讨这三个框架以及它们如何协同工作。 **Struts框架...

    spring+struts2+ibatis整合的jar包

    在提供的"spring+struts2+ibatis整合的jar包"中,lib1可能包含了这三个框架以及它们的依赖库。这些jar文件是运行整合应用必不可少的组件,它们包含了框架的API、实现和一些工具类,帮助开发者快速搭建和运行整合项目...

    Struts2+spring+ibatis三大框架整合实例

    Struts2、Spring和iBatis是Java Web开发中常用的三大框架,它们分别负责MVC模式中的Action层、业务逻辑层和服务数据访问层。本文将详细介绍这三个框架如何整合,以及在实际项目中如何运用。 首先,Struts2作为表现...

    struts+spring+ibatis做的一个增删改查例子

    Struts、Spring 和 iBATIS 是Java开发领域中三大经典的开源框架,它们组合起来可以构建出高效、可维护的企业级Web应用。这个例子是利用这三个框架实现了一个基础的增删改查(CRUD)功能,涵盖了数据库操作、业务逻辑...

    struts2 + spring + ibatis 整合例子

    将这三个框架整合在一起,可以构建出高效、灵活且易于维护的Web应用程序。下面我们将详细介绍这三个框架以及它们的整合过程。 **Struts2框架**: Struts2是一个基于MVC设计模式的Web应用框架,它提供了丰富的控制器...

    struts2+spring+ibatis整合项目实例

    `Struts+Spring+Ibatis整合框架搭建配置文档.doc`应该详细阐述了如何配置Spring以管理Struts2的Action和iBatis的数据源及SqlSession。 3. **iBatis**:iBatis是一个SQL映射框架,它将SQL语句与Java代码分离,使得...

    struts2+spring3+ibatis项目整合案例

    在这个“struts2+spring3+ibatis项目整合案例”中,我们将深入探讨这三个框架如何相互配合,实现项目的集成。 Struts2作为MVC(Model-View-Controller)架构的实现,主要负责处理用户请求,控制应用的流程。它提供...

    struts2+spring+ibatis+oracle+分页搜索+上传附件实例

    综上所述,这个实例展示了如何整合Struts2、Spring、iBatis和Oracle来构建一个完整的Web应用,实现了动态分页搜索和附件上传功能。这种架构具有良好的可扩展性和可维护性,适用于各种中大型企业级项目。开发者可以...

    struts2+spring+ibatis框架整合

    Struts2、Spring和iBatis是Java Web开发中常用的三大框架,它们的整合使用能够构建出高效、灵活的企业级应用。Struts2是一个MVC(Model-View-Controller)框架,负责处理用户请求和控制应用程序流程;Spring则是一个...

    webwork+spring+ibatis很适合初学者的实例

    WebWork、Spring 和 iBATIS 是三个非常重要的Java Web开发框架,它们的组合为初学者提供了丰富的学习资源。WebWork 是一个MVC(Model-View-Controller)框架,Spring 是一个全面的后端开发框架,而 iBATIS 是一个...

    spring+velocity+ibatis

    标题 "spring+velocity+ibatis" 暗示了这个项目是基于Spring框架,结合Velocity模板引擎和iBATIS持久层框架构建的一个Web应用程序。这三个技术的整合为开发者提供了高效、灵活的后端架构。 Spring框架是Java企业级...

    Spring+Struts2+Ibatis整合例子

    **Spring、Struts2 和 iBatis 整合详解** 在Java Web开发中,Spring、Struts2 和 iBatis 是三个非常重要的框架。它们分别负责不同层面的任务:Spring 提供了全面的依赖注入(DI)和面向切面编程(AOP),用于管理...

    Struts+Spring+Ibatis整合的Jar包

    这个"SSI"整合的Jar包,为开发者提供了一个快速搭建基于Struts2、Spring和Ibatis的开发环境,节省了手动下载和配置各个框架的时间,便于项目初始化和快速启动。开发者只需关注业务逻辑的实现,无需过多关注底层框架...

    struts+spring+ibatis框架集合教程

    3. iBatis框架:iBatis是一个SQL映射框架,它将SQL语句与Java代码分离,提供了一种灵活的方式来执行数据库操作。通过XML或注解方式定义SQL语句,iBatis可以动态地生成和执行SQL,避免了传统的JDBC代码繁琐的模板式...

    Spring+Struts+ibatis讲解

    在Spring+Struts+ibatis这种经典的Java Web开发框架组合中,主要涉及到三层架构:表现层(Action)、业务逻辑层(Service)和数据访问层(DAO)。这些组件协同工作,实现了应用程序的功能。以下是对各部分的详细解释...

    struts2+spring+ibatis框架搭建手册

    Struts2+Spring+Ibatis框架的整合是Java Web开发中常见的技术栈,它提供了强大的MVC(模型-视图-控制器)架构支持,以及服务层和数据访问层的高效管理。下面我们将详细探讨这三个框架如何协同工作以及搭建过程中涉及...

Global site tag (gtag.js) - Google Analytics