最近温习了一下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);
}
}
分享到:
相关推荐
Struts+Spring+Ibatis整合框架搭建配置文档
有关Struts2+Spring+Hibernate和Struts2+Spring+Ibatis的整合实例demo 原创,完全基于eclipse开发
已经架好struts2+spring+ibatis的整合框架,随时都可以拿着开发新的软件系统。
项目需要,可直接拿来用。本人花了一个礼拜心血搞的。有点,如果是发布到tomcat55上面可能要删掉验证xml的jar包才能正确运行
Spring+ibatis+struts框架整合+springmvc数据接口封装含数据表可直接运行
Struts+Spring+Ibatis框架的整合,很好的提供了帮助。
Spring MVC+ibatis+Oracle资源整合,实现简单的增删改查
Struts+spring+ibatsi框架整合实例
struts2+ibatis+spring框架整合
SSI即Struts+Spring+Ibatis整合开发框架
Struts2+Spring+Ibatis ,里面实现了登录功能, 可供初学者学习,代码很详细, 注释很多, 还可以用于做项目
struts2 + spring2.5 + ibatis2.3.4整合包文件,包括了SSI框架整合开发所需的全部文件
struts2+spring+ibatis框架整合案例,增删改查功能,包含所需jar包,找了好久,免费提供给大家,希望有所帮助
这个框架主要struts2+hibernate+spring+ibatis+ext整合,不要说hibernate和ibatis整合是多此一举哦,当你想用hibernate时把ibatis取了,用ibatis时把hibernate取了就可以了,这样很方便的!
一个完整的Spring+ Struts+Ibatis 应用框架整合的小例子,项目中使用的数据库为MySQL,表结构在文档贴出,可以自己照着例子做一下。
SpringMVC+ibatis+velocity整合例子,虽然比较简单。可以为没有配置好的同学作为参考。
axis2+spring+ibatis整合的一个项目,含webservice文件传输
struts2整合sprint+ibatis 框架的简单例子 原创!
springmvc+spring+ibatis框架搭建步骤(注解方式)