Spring+Ibatis框架整合学习 博客分类: J2EE框架学习 springibatis框架daojava
程序员文章站
2024-03-21 08:46:04
...
最近温习了一下J2EE框架里面的Spring+Ibatis的结合,写了一个DEMO,支持多数据源,主要用于以后学习第三方的分布式事务框架以及Spring本身支持的一些特性。这里只贴出主要代码供大家参考,具体代码请下载附件。
1. 对象 User、Role User.java Role.java
2. Dao层 接口UserRoleBindingDao 实现UserRoleBindingDaoImpl
UserRoleBindingDaoImpl.java
3. Service层 接口UserRoleBindingService 实现UserRoleBindingServiceImpl
UserRoleBindingServiceImpl.java
4. 配置文件
SQL映射文件 userRoleBinding.xml
所有SQL存取文件 sql-map-config.xml
数据源配置文件 jdbc.properties
Bean配置文件 applicationContext-database.xml
applicationContext-dao.xml
applicationContext-service.xml
applicationContext-beans.xml
5. 日志输出组件log4j log4j.xml
6. 测试类,Service层进行调用测试 ServiceTest.java
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); } }
上一篇: ant的build.xml模板 博客分类: 工作记录 ant build javac junit javadoc
下一篇: Informatica同步数据到ORACLE库需要注意的几个问题 博客分类: ETL Informaticasql serveroracleetl高精度
推荐阅读
-
Spring+Ibatis框架整合学习 博客分类: J2EE框架学习 springibatis框架daojava
-
框架学习总结-----MyBatis--- 映射文件配置(简述) 博客分类: 项目经验总结 MyBatis
-
框架学习总结-----MyBatis---核心配置文件 博客分类: 项目经验总结 框架 MyBatis
-
框架学习总结-----MyBatis---核心配置文件 博客分类: 项目经验总结 框架 MyBatis
-
学习android开源游戏引擎AndEngine----初之感 博客分类: android开源游戏引擎AndEngine androidAndEngine游戏引擎开源框架
-
mahout脚本调用流程分析 博客分类: 开源框架mahouthadoop工作中问题总结 mahouthadoop推荐系统机器学习数据发掘
-
canvas学习 博客分类: web框架 web进度条js
-
选择器学习 博客分类: web框架 cssjshtml
-
canvas学习 博客分类: web框架 web进度条js
-
html+css学习 博客分类: web框架 css firbox