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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值