`
wanglu271991027
  • 浏览: 88756 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

struts2+ibatis+spring 安例

 
阅读更多
1.applicationContext

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xmlns:aop="http://www.springframework.org/schema/aop"
		xmlns:context="http://www.springframework.org/schema/context"
		xmlns:tx="http://www.springframework.org/schema/tx"
		xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
			http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
			http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
			http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

    <!-- 启用注解 -->
    <context:annotation-config />
    <context:component-scan base-package="com.*" />
    <!-- 自动AOP切面 -->
    <aop:aspectj-autoproxy />

	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="org.logicalcobwebs.proxool.ProxoolDriver"/>
		<property name="url" value="proxool.mydata"/>
	</bean>
	<!-- 配置事务管理器 -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
	</bean>
	<!-- AOP 
	<bean id="personimport" class="com.sdjt.service.base.PersonImport"></bean>  
    <aop:config>  
        <aop:pointcut expression="execution(public * com.sdjt.service.customer.LPersonService.add*(..))||execution(public * com.sdjt.service.customer.LPersonService.delete*(..))||execution(public * com.sdjt.service.customer.LPersonService.edit*(..))" id="servicePointCut"/>  
        <aop:aspect id="importAspect" ref="personimport">  
            <aop:after method="afterReturning" pointcut-ref="servicePointCut"/>  
        </aop:aspect>  
    </aop:config>  
    -->
	
	<!-- 事务注解 proxy-target-class="true" -->
	<tx:annotation-driven transaction-manager="transactionManager"/> 
	
	<!-- SqlMap setup for iBATIS Database Layer -->
	<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
		<property name="configLocation" value="WEB-INF/sql-map-config.xml"/>
		<property name="dataSource" ref="dataSource"/>
	</bean>
	 <bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate">
        <property name="sqlMapClient" ref="sqlMapClient" />
    </bean>
	<bean id="springContext" class="com.sdjt.util.SpringDAOUtil"></bean>
	
	<bean id="roleMenuUtil" class="com.sdjt.util.RoleMenuUtil">
		<property name="roleServiceImp" ref="roleServiceImpl"></property>
		<property name="userServiceImp" ref="userServiceImpl"></property>
	</bean>
	<!-- 模板管理 -->
	<!-- import resource="spring_template.xml"-->
	<!--import resource="classpath:com/springxml/member_bean.xml"-->
</beans>

2.web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
	version="2.4">
	<display-name>icrm</display-name>
	<context-param>
		<description>!logpath !log4j.properties</description>
		<param-name>webAppRootKey</param-name>
		<param-value>icrm.root</param-value>
	</context-param>
		 <!-- 加载输出界面的表格 -->
	<context-param>
		<param-name>jmesaPreferencesLocation</param-name>
		<param-value>WEB-INF/jmesa/jmesa.properties</param-value>
	</context-param>
		
	<context-param>
		<param-name>jmesaMessagesLocation</param-name>
		<param-value>org/jmesa/core/message/resource/jmesaResourceBundle</param-value>
	</context-param>
	<!-- 字符编码格式 -->
	<filter>  
     <filter-name>CharacterEncodingFilter</filter-name>  
     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
 	<init-param>  
	     <param-name>encoding</param-name>  
	    <param-value>utf-8</param-value>  
	  </init-param>  
	 <init-param>  
	   <param-name>forceEncoding</param-name>  
	   <param-value>true</param-value>  
	 </init-param>  
	</filter>  
	  <filter-mapping>  
     <filter-name>CharacterEncodingFilter</filter-name>  
	 <url-pattern>/*</url-pattern>  
	</filter-mapping>  
	
	<!-- 配置登录filter -->
	<filter>
		<filter-name>loginFilter</filter-name>
		<filter-class>com.sdjt.security.LoginFilter</filter-class>
		<init-param>
			<param-name>passUrl</param-name>
			<param-value>/ckeditor,/css,/images,/img,/jmesaimages,/js,/login.jsp,/login.jsp,/userManager,/desktopManager,/Charts,/struts-tags,/wapsystem
			</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>loginFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	
	<!-- 文件上传的清理过滤器 -->
	<filter>
		<filter-name>struts-cleanup</filter-name>
		<filter-class>
			org.apache.struts2.dispatcher.ActionContextCleanUp
		</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts-cleanup</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	
	<!-- 配置struts  -->
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<!--  加载spring配置文件-->        
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/applicationContext/applicationContext.xml</param-value>
	</context-param>
 <!-- 配置spring下的log4j -->
	<context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value>/WEB-INF/classes/log4j.properties</param-value>
	</context-param>


	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>
    
    <listener>
		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
	</listener> 
	<listener>
		<listener-class>com.sdjt.security.ListenerReq</listener-class>
	</listener>
	<listener>
		<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
	</listener>
	<!-- 
	<filter>
		<filter-name>filter_sms</filter-name>
		<filter-class>jtml.request.Filter_sms</filter-class>
	</filter>
	
	<filter-mapping>
		<filter-name>filter_sms</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	 -->
	<!-- 配置proxool数据源 -->
	<servlet>
		<servlet-name>ServletConfigurator</servlet-name>
		<servlet-class>org.logicalcobwebs.proxool.configuration.ServletConfigurator</servlet-class>
		<init-param>
			<param-name>xmlFile</param-name>
			<param-value>WEB-INF/proxool.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet>
		<servlet-name>InitContextServlet</servlet-name>
		<servlet-class>com.sdjt.security.InitContextServlet</servlet-class>
		<load-on-startup>5</load-on-startup>
	</servlet>
	<servlet>
		<servlet-name>proxool</servlet-name>
		<servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>proxool</servlet-name>
		<url-pattern>/proxool</url-pattern>
	</servlet-mapping>
	
	<!-- 
	<servlet>
		<servlet-name>context</servlet-name>
		<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
		<load-on-startup>2</load-on-startup>
	</servlet>
	 -->
	<welcome-file-list>
		<welcome-file>login.jsp</welcome-file>
	</welcome-file-list>
</web-app>

3.数据库配制文件
<?xml version="1.0" encoding="UTF-8"?>
<proxool>

	<alias>mydata</alias>
	<driver-url>jdbc:mysql://localhost:3306/smsdemotest?zeroDateTimeBehavior=convertToNull</driver-url>
	<driver-class>org.gjt.mm.mysql.Driver</driver-class>
	<statistics>1m,15m,1d</statistics>
	<driver-properties>
		<property name="user" value="root"/>
		<property name="password" value="admin"/>
	</driver-properties>  
	<prototype-count>5</prototype-count>
	<maximum-connection-count>20</maximum-connection-count>
	<minimum-connection-count>5</minimum-connection-count>
	<maximum-active-time>600000</maximum-active-time>
	<house-keeping-sleep-time>90000</house-keeping-sleep-time>
	<house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
	
</proxool>


4.dao
package com.sdjt.dao.base;

import java.util.List;

import com.sdjt.util.page.PageData;
import com.sdjt.wap.base.WapPage;


/**
 * 业务实体操作接口
 * 
 * @author oliver
 * @date 2010.10.26
 * @email wangxiaojun0618@163.com
 * @param str
 *            字符串、obj object 对象
 */
public interface DAO {
	/**
	 * 保存对象
	 * 
	 * @param str
	 *            字符串、obj object 对象
	 */
	public Object save(String s, Object obj) throws Exception;
	
	/**
	 * 批量添加
	 * @param s
	 * @param obj
	 * @return
	 * @throws Exception
	 */
	public Object saveBatch(String s, List list) throws Exception;
	/**
	 * 修改对象
	 * 
	 * @param str
	 *            字符串、obj object 对象
	 */
	public Object update(String s, Object obj) throws Exception;

	
	/**
	 * 批量更新
	 * @param s
	 * @param obj
	 * @return
	 * @throws Exception
	 */
	public Object updateBatch(String s,List list)throws Exception;
	
	/**
	 * 批量更新
	 * @param s
	 * @param obj
	 * @return
	 * @throws Exception
	 */
	public Object updateBatch(String s ,Object obj[])throws Exception;
	
	/**
	 * 删除对象
	 * 
	 * @param str
	 *            字符串、obj object 对象
	 */
	public Object delete(String str, Object obj) throws Exception;
	
	/**
	 * 批量删除
	 * @param str
	 * @param obj
	 * @return
	 * @throws Exception
	 */
	public Object deleteBatch(String str, Object obj [])  throws Exception;
	
	/**
	 * 批量删除
	 * @param str
	 * @param obj
	 * @return
	 * @throws Exception
	 */
	public Object deleteBatch(String str, List list)  throws Exception;
	

	/**
	 * 查找对象
	 * 
	 * @param Str
	 *            字符串、obj object 对象
	 * @return object
	 */
	public Object findForObject(String s, Object obj) throws Exception;

	/**
	 * 查找对象
	 * 
	 * @param Str
	 *            字符串、obj object 对象
	 * @return objectList
	 */
	public Object findForList(String s, Object obj) throws Exception;
	
	/**
	 * 查找对象封装成Map
	 * @param s
	 * @param obj
	 * @return
	 * @throws Exception
	 */
	public Object findForMap(String sql, Object obj, String key , String value) throws Exception;
	
	/**
	 * 得到总记录
	 * 
	 * @param str
	 *            字符串、obj object 对象
	 * @return 总记录数
	 */
	public long getcount(String s, Object obj) throws Exception;
	
	
	/**
	 * wap分页公用方法
	 * @param page
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public WapPage findWapPage(WapPage page ,PageData pd) throws Exception;

}


5.dao实现类

package com.sdjt.dao.base;

import java.sql.SQLException;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.orm.ibatis.SqlMapClientCallback;
import org.springframework.orm.ibatis.SqlMapClientTemplate;

import com.ibatis.sqlmap.client.SqlMapExecutor;
import com.sdjt.util.page.PageData;
import com.sdjt.wap.base.WapPage;

/**
 * @autor oliver
 * @email wangxiaojun0618@163.com
 * @data 2010.10.26
 * @description dao包基类
 * 
 */
public abstract class DaoSupport implements DAO {
	// sqlmapclient
	@Resource(name = "sqlMapClientTemplate")
	protected SqlMapClientTemplate sqlMapClientTemplate;

	/**
	 * 添加
	 * 
	 * @param String
	 *            statement 的id标识
	 * @param paramObj
	 *            业务bean
	 */
	public Object save(String str, Object paramObj) throws Exception {
		Object obj = sqlMapClientTemplate.insert(str, paramObj);
		return obj;
	}

	/**
	 * 修改
	 * 
	 * @param String
	 *            statement 的id标识
	 * @param paramObj
	 *            业务bean
	 */
	public Object update(String str, Object paramObj) throws Exception {
		Object obj = sqlMapClientTemplate.update(str, paramObj);
		return obj;

	}

	/**
	 * 删除
	 * 
	 * @param String
	 *            statement 的id标识
	 * @param paramObj
	 *            业务bean
	 */
	public Object delete(String str, Object paramObj) throws Exception {
		Object obj = sqlMapClientTemplate.delete(str, paramObj);
		return obj;
	}

	/**
	 * @查询对象
	 * @param String
	 *            statement 的id标识
	 * @param paramObj
	 *            业务bean
	 * @return 返回一个对象
	 * 
	 */
	public Object findForObject(String str, Object paramObj) throws Exception {
		Object obj = (Object) sqlMapClientTemplate
				.queryForObject(str, paramObj);
		return obj;
	}

	/**
	 * @查询对象List
	 * @param String
	 *            statement 的id标识
	 * @param paramObj
	 *            业务bean
	 * @return 返回一个对象list
	 * 
	 */
	public Object findForList(String str, Object paramObj) throws Exception {
		Object obj = (Object) sqlMapClientTemplate.queryForList(str, paramObj);
		return obj;
	}

	/**
	 * 得到对象的个数
	 */
	public long getcount(String str, Object paramObj) throws Exception {
		return 1;
	}

	/** 得到运行的实体类 */
	public String getSubClass() throws Exception {
		System.out.println("this" + this.getSubClass().getClass());
		return "";
	}

	/**
	 * 批量删除
	 */
	public Object deleteBatch(final String str, final Object obj[])
			throws Exception {
		return sqlMapClientTemplate.execute(new SqlMapClientCallback() {
			public Object doInSqlMapClient(SqlMapExecutor executor)
					throws SQLException {
				executor.startBatch();
				for (Object id : obj) {
					executor.delete(str, id);
				}
				return executor.executeBatch();
			}
		});
	}

	/**
	 * 批量删除
	 */
	public Object deleteBatch(final String str, final List list)
			throws Exception {
		return sqlMapClientTemplate.execute(new SqlMapClientCallback() {
			public Object doInSqlMapClient(SqlMapExecutor executor)
					throws SQLException {
				executor.startBatch();
				for (Object id : list) {
					executor.delete(str, id);
				}
				return executor.executeBatch();
			}
		});
	}

	public Object saveBatch(final String sql, final List list) throws Exception {
		return sqlMapClientTemplate.execute(new SqlMapClientCallback() {
			public Object doInSqlMapClient(SqlMapExecutor executor)
					throws SQLException {
				executor.startBatch();
				for (Object obj : list) {
					executor.insert(sql, obj);
				}
				return executor.executeBatch();
			}
		});
	}

	public Object updateBatch(final String sql, final Object[] obj)
			throws Exception {
		return sqlMapClientTemplate.execute(new SqlMapClientCallback() {
			public Object doInSqlMapClient(SqlMapExecutor executor)
					throws SQLException {
				executor.startBatch();
				for (Object o : obj) {
					executor.update(sql, o);
				}
				return executor.executeBatch();
			}
		});
	}

	public Object updateBatch(final String sql, final List list)
			throws Exception {
		return sqlMapClientTemplate.execute(new SqlMapClientCallback() {
			public Object doInSqlMapClient(SqlMapExecutor executor)
					throws SQLException {
				executor.startBatch();
				for (Object id : list) {
					executor.delete(sql, id);
				}
				return executor.executeBatch();
			}
		});
	}

	/**
	 * wap分页公用方法
	 * 
	 * @param page
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	public WapPage findWapPage(WapPage page, PageData pd) throws Exception {
		String sqlId = page.getSqlId();
		Object count = sqlMapClientTemplate.queryForObject(sqlId + "Count", pd); // 查询总条数
		int totol = (count == null ? 0 : (Integer) count);
		page.setTotalRowCount(totol);
		if(totol != 0) {
			pd.put("curentNum", (page.getCurrentPage() - 1) * page.getRowOfpage());
			pd.put("pageSize", page.getRowOfpage());
			List<PageData> lists = (List<PageData>) sqlMapClientTemplate
					.queryForList(sqlId,pd);
			page.setObjectList(lists);
		}
		return page;
	}

	
	public Object findForMap(String sql, Object obj, String key , String value) throws Exception {
		return  sqlMapClientTemplate.queryForMap(sql, obj, key, value);
		
	}
	
	
}



6.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
<sqlMap namespace="wxjuser">
	<!-- 类起别名 -->
	<typeAlias alias="pd" type="com.sdjt.util.page.PageData" />
	<insert id="add" parameterClass="pd">
		INSERT INTO testuser(
		username,
		password,
		email,
		birthday,
		address,
		createtime,
		modtime,
		sign,
		bak)
		VALUES(
		#username#,
		#password#,
		#email#,
		#birthday#,
		#address#,
		now(),
		now(),
		0,
		#bak#)
	</insert>
</sqlMap>

  • src.rar (530 KB)
  • 下载次数: 104
  • 1.rar (7.9 MB)
  • 下载次数: 65
  • 2.rar (8.6 MB)
  • 下载次数: 66
  • 4.rar (8.8 MB)
  • 下载次数: 78
  • 3.rar (8.5 MB)
  • 下载次数: 72
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics