`

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  
非常感谢!

相关推荐

Global site tag (gtag.js) - Google Analytics