很久没有做struts2 + spring 2.5 + ibatis这种组合,现在学习了一下,我把我的写的小例子共享给大家一起分享一下
svn 下载地扯是:http://programming-ssi.unfuddle.com/svn/programming-ssi_ssi
用户名是 ssi 密码是: ssi
我的开发环境是:jdk1.5 tomcat5.5 eclispe jee集成 版本 mysql 数据库 里面有建表语句
共同学习 共同进步
还是把关键代码贴出来一下,要跑起来的就用svn下,只是看看,那就看以下的代码吧
web.xml 的主要内容
Java代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
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">
<display-name>firstssh</display-name>
<description>this is a simple example</description>
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>ssi.root</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext*.xml</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<!-- 用于初始化Spring容器的Listener -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 定义Struts2的FilterDispathcer的Filter -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<!-- FilterDispatcher用来初始化struts2并且处理所有的WEB请求。 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>encodingFilter</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>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<session-config>
<session-timeout>10</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
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">
<display-name>firstssh</display-name>
<description>this is a simple example</description>
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>ssi.root</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext*.xml</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<!-- 用于初始化Spring容器的Listener -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 定义Struts2的FilterDispathcer的Filter -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<!-- FilterDispatcher用来初始化struts2并且处理所有的WEB请求。 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>encodingFilter</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>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<session-config>
<session-timeout>10</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
applicationContext.xml 的主要内容
Java代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<!-- <value>WEB-INF/mail.properties</value>-->
<value>classpath:jdbc.properties</value>
<!-- <value>WEB-INF/oscache.properties</value>-->
</list>
</property>
</bean>
<!-- MailSender used by EmailAdvice -->
<!--
<bean id="mailSender"
class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.host}"/> </bean>
-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close" dependency-check="none">
<property name="driverClass">
<value>${datasource.driverClassName}</value>
</property>
<property name="jdbcUrl">
<value>${datasource.url}</value>
</property>
<property name="user">
<value>${datasource.username}</value>
</property>
<property name="password">
<value>${datasource.password}</value>
</property>
<property name="acquireIncrement">
<value>${c3p0.acquireIncrement}</value>
</property>
<property name="initialPoolSize">
<value>${c3p0.initialPoolSize}</value>
</property>
<property name="minPoolSize">
<value>${c3p0.minPoolSize}</value>
</property>
<property name="maxPoolSize">
<value>${c3p0.maxPoolSize}</value>
</property>
<property name="maxIdleTime">
<value>${c3p0.maxIdleTime}</value>
</property>
<property name="idleConnectionTestPeriod">
<value>${c3p0.idleConnectionTestPeriod}</value>
</property>
<property name="maxStatements">
<value>${c3p0.maxStatements}</value>
</property>
<property name="numHelperThreads">
<value>${c3p0.numHelperThreads}</value>
</property>
</bean>
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation"
value="classpath:com/ssi/model/sql/ibatis/sql-map.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 数据连接事务 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 拦截事务的方法设置 -->
<bean id="transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<!-- 拦截事务Beans设置-->
<!--
<bean
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames"> <value>*DAO</value> </property> <property
name="interceptorNames"> <list> <value>transactionInterceptor</value>
此处增加新的Interceptor </list> </property> </bean>
-->
<!-- 通知器,用它来对属性值进行处理 -->
<bean
class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
<property name="transactionInterceptor" ref="transactionInterceptor" />
</bean>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<!-- <value>WEB-INF/mail.properties</value>-->
<value>classpath:jdbc.properties</value>
<!-- <value>WEB-INF/oscache.properties</value>-->
</list>
</property>
</bean>
<!-- MailSender used by EmailAdvice -->
<!--
<bean id="mailSender"
class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.host}"/> </bean>
-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close" dependency-check="none">
<property name="driverClass">
<value>${datasource.driverClassName}</value>
</property>
<property name="jdbcUrl">
<value>${datasource.url}</value>
</property>
<property name="user">
<value>${datasource.username}</value>
</property>
<property name="password">
<value>${datasource.password}</value>
</property>
<property name="acquireIncrement">
<value>${c3p0.acquireIncrement}</value>
</property>
<property name="initialPoolSize">
<value>${c3p0.initialPoolSize}</value>
</property>
<property name="minPoolSize">
<value>${c3p0.minPoolSize}</value>
</property>
<property name="maxPoolSize">
<value>${c3p0.maxPoolSize}</value>
</property>
<property name="maxIdleTime">
<value>${c3p0.maxIdleTime}</value>
</property>
<property name="idleConnectionTestPeriod">
<value>${c3p0.idleConnectionTestPeriod}</value>
</property>
<property name="maxStatements">
<value>${c3p0.maxStatements}</value>
</property>
<property name="numHelperThreads">
<value>${c3p0.numHelperThreads}</value>
</property>
</bean>
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation"
value="classpath:com/ssi/model/sql/ibatis/sql-map.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 数据连接事务 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 拦截事务的方法设置 -->
<bean id="transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<!-- 拦截事务Beans设置-->
<!--
<bean
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames"> <value>*DAO</value> </property> <property
name="interceptorNames"> <list> <value>transactionInterceptor</value>
此处增加新的Interceptor </list> </property> </bean>
-->
<!-- 通知器,用它来对属性值进行处理 -->
<bean
class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
<property name="transactionInterceptor" ref="transactionInterceptor" />
</bean>
</beans>
以下是applicationContext-dao.xml applicationContext-action.xml applicationContext-service.xml 的配置
Java代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="UserAction" class="com.ssi.action.UserAction"
scope="prototype">
<property name="userService" ref="userService" />
</bean>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<!-- 根DAO -->
<bean id="userDao" class="com.ssi.dao.impl.UserDao">
<property name="sqlMapClient" ref="sqlMapClient"></property>
</bean>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="userService" class="com.ssi.service.impl.UserService">
<property name="userDao" ref="userDao" />
</bean>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="UserAction" class="com.ssi.action.UserAction"
scope="prototype">
<property name="userService" ref="userService" />
</bean>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<!-- 根DAO -->
<bean id="userDao" class="com.ssi.dao.impl.UserDao">
<property name="sqlMapClient" ref="sqlMapClient"></property>
</bean>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="userService" class="com.ssi.service.impl.UserService">
<property name="userDao" ref="userDao" />
</bean>
</beans>
UserDao 代码 :
Java代码
package com.ssi.dao.impl;
import java.util.List;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import com.ssi.dao.IUserDao;
import com.ssi.model.User;
/**
* 功能:
*
* @author programming
* @version 1.0 2009-3-11下午04:48:22
* @JDK 5
*/
@SuppressWarnings("unchecked")
public class UserDao extends SqlMapClientDaoSupport implements IUserDao {
@Override
public List<User> findAllUser() {
return this.getSqlMapClientTemplate().queryForList("User.select");
}
@Override
public User findUserByNameAndPass(User user) {
List<User> list = this.getSqlMapClientTemplate().queryForList("User.query", user.transfer2Map());
if (list.size() == 1) {
return list.get(0);
}
return null;
}
@Override
public User getById(int id) {
return (User) this.getSqlMapClientTemplate().queryForObject("User.findByPrimarykey", id);
}
@Override
public boolean saveUser(User user) {
this.getSqlMapClientTemplate().insert("User.insert", user);
return true;
}
@Override
public void updateUser(User user) {
this.getSqlMapClientTemplate().update("User.update", user);
}
}
package com.ssi.dao.impl;
import java.util.List;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import com.ssi.dao.IUserDao;
import com.ssi.model.User;
/**
* 功能:
*
* @author programming
* @version 1.0 2009-3-11下午04:48:22
* @JDK 5
*/
@SuppressWarnings("unchecked")
public class UserDao extends SqlMapClientDaoSupport implements IUserDao {
@Override
public List<User> findAllUser() {
return this.getSqlMapClientTemplate().queryForList("User.select");
}
@Override
public User findUserByNameAndPass(User user) {
List<User> list = this.getSqlMapClientTemplate().queryForList("User.query", user.transfer2Map());
if (list.size() == 1) {
return list.get(0);
}
return null;
}
@Override
public User getById(int id) {
return (User) this.getSqlMapClientTemplate().queryForObject("User.findByPrimarykey", id);
}
@Override
public boolean saveUser(User user) {
this.getSqlMapClientTemplate().insert("User.insert", user);
return true;
}
@Override
public void updateUser(User user) {
this.getSqlMapClientTemplate().update("User.update", user);
}
}
UserAction 代码:
Java代码
package com.ssi.action;
import java.util.List;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.ssi.model.User;
import com.ssi.service.IUserService;
import com.ssi.service.impl.UserService;
/**
* 功能:
*
* @author programming
* @version 1.0 2009-3-10下午05:02:14
* @JDK 5
*/
public class UserAction extends ActionSupport {
private User user;
private IUserService userService;
/**
* @return the user
*/
public User getUser() {
return user;
}
/**
* @param user
* the user to set
*/
public void setUser(User user) {
this.user = user;
}
/**
* @param userService
* the userService to set
*/
public void setUserService(UserService userService) {
this.userService = userService;
}
public String login() throws Exception {
if (userService.login(user)) {
ServletActionContext.getContext().getSession().put("user", user);
return SUCCESS;
}
return LOGIN;
}
public String regist() throws Exception {
userService.register(user);
ServletActionContext.getContext().getSession().put("user", user);
return SUCCESS;
}
public String list() throws Exception {
List<User> userList = this.userService.query();
ServletActionContext.getContext().getSession().put("userList", userList);
return SUCCESS;
}
}
package com.ssi.action;
import java.util.List;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.ssi.model.User;
import com.ssi.service.IUserService;
import com.ssi.service.impl.UserService;
/**
* 功能:
*
* @author programming
* @version 1.0 2009-3-10下午05:02:14
* @JDK 5
*/
public class UserAction extends ActionSupport {
private User user;
private IUserService userService;
/**
* @return the user
*/
public User getUser() {
return user;
}
/**
* @param user
* the user to set
*/
public void setUser(User user) {
this.user = user;
}
/**
* @param userService
* the userService to set
*/
public void setUserService(UserService userService) {
this.userService = userService;
}
public String login() throws Exception {
if (userService.login(user)) {
ServletActionContext.getContext().getSession().put("user", user);
return SUCCESS;
}
return LOGIN;
}
public String regist() throws Exception {
userService.register(user);
ServletActionContext.getContext().getSession().put("user", user);
return SUCCESS;
}
public String list() throws Exception {
List<User> userList = this.userService.query();
ServletActionContext.getContext().getSession().put("userList", userList);
return SUCCESS;
}
}
UserService 代码
Java代码
package com.ssi.service.impl;
import java.util.List;
import com.ssi.dao.IUserDao;
import com.ssi.model.User;
import com.ssi.service.IUserService;
/**
* 功能:
*
* @author programming
* @version 1.0 2009-3-11下午04:48:06
* @JDK 5
*/
public class UserService implements IUserService {
private IUserDao userDao;
/**
* @param userDao
* the userDao to set
*/
public void setUserDao(IUserDao userDao) {
this.userDao = userDao;
}
@Override
public boolean login(User user) {
User u = this.userDao.findUserByNameAndPass(user);
if (u != null)
return true;
else
return false;
}
@Override
public void register(User user) {
userDao.saveUser(user);
}
@Override
public List<User> query() {
return this.userDao.findAllUser();
}
}
package com.ssi.service.impl;
import java.util.List;
import com.ssi.dao.IUserDao;
import com.ssi.model.User;
import com.ssi.service.IUserService;
/**
* 功能:
*
* @author programming
* @version 1.0 2009-3-11下午04:48:06
* @JDK 5
*/
public class UserService implements IUserService {
private IUserDao userDao;
/**
* @param userDao
* the userDao to set
*/
public void setUserDao(IUserDao userDao) {
this.userDao = userDao;
}
@Override
public boolean login(User user) {
User u = this.userDao.findUserByNameAndPass(user);
if (u != null)
return true;
else
return false;
}
@Override
public void register(User user) {
userDao.saveUser(user);
}
@Override
public List<User> query() {
return this.userDao.findAllUser();
}
}
ssi-user-sqlmap.xml 内容:
Java代码
<?xml version="1.0" encoding="GB2312" ?>
<!DOCTYPE sqlMap
PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="User">
<typeAlias alias="user" type="com.ssi.model.User" />
<resultMap class="com.ssi.model.User" id="userResult">
<result property="id" column="userid" />
<result property="username" column="username" />
<result property="password" column="password" />
<result property="email" column="email" />
</resultMap>
<sql id="queryCondition">
<dynamic prepend="">
<isNotNull property="username" prepend="and">
<![CDATA[
username = #username#
]]>
</isNotNull>
<isNotNull property="password" prepend="and">
<![CDATA[
password = #password#
]]>
</isNotNull>
</dynamic>
</sql>
<insert id="User.insert" >
<![CDATA[
insert into user(username,password,email)
value(#username#,#password#,#email#)
]]>
</insert>
<update id="User.update">
<![CDATA[
update user
set
username=#username#,password=#password#,email=#email#
where userid=#id#
]]>
</update>
<delete id="User.deleteByPrimaryKey">
<![CDATA[
delete from user where userid = #value#
]]>
</delete>
<select id="User.findByPrimarykey" resultClass="user"
parameterClass="long">
<![CDATA[
select * from user where userid=#value#
]]>
</select>
<select id="User.query" resultMap="userResult">
<![CDATA[
select * from user where 1=1
]]>
<include refid="queryCondition" />
</select>
<select id="User.select" resultMap="userResult">
<![CDATA[
select * from user
]]>
</select>
</sqlMap>
<?xml version="1.0" encoding="GB2312" ?>
<!DOCTYPE sqlMap
PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="User">
<typeAlias alias="user" type="com.ssi.model.User" />
<resultMap class="com.ssi.model.User" id="userResult">
<result property="id" column="userid" />
<result property="username" column="username" />
<result property="password" column="password" />
<result property="email" column="email" />
</resultMap>
<sql id="queryCondition">
<dynamic prepend="">
<isNotNull property="username" prepend="and">
<![CDATA[
username = #username#
]]>
</isNotNull>
<isNotNull property="password" prepend="and">
<![CDATA[
password = #password#
]]>
</isNotNull>
</dynamic>
</sql>
<insert id="User.insert" >
<![CDATA[
insert into user(username,password,email)
value(#username#,#password#,#email#)
]]>
</insert>
<update id="User.update">
<![CDATA[
update user
set
username=#username#,password=#password#,email=#email#
where userid=#id#
]]>
</update>
<delete id="User.deleteByPrimaryKey">
<![CDATA[
delete from user where userid = #value#
]]>
</delete>
<select id="User.findByPrimarykey" resultClass="user"
parameterClass="long">
<![CDATA[
select * from user where userid=#value#
]]>
</select>
<select id="User.query" resultMap="userResult">
<![CDATA[
select * from user where 1=1
]]>
<include refid="queryCondition" />
</select>
<select id="User.select" resultMap="userResult">
<![CDATA[
select * from user
]]>
</select>
</sqlMap>
sql-map.xml 同容
Java代码
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings cacheModelsEnabled="false" enhancementEnabled="false"
lazyLoadingEnabled="false" maxRequests="3000" maxSessions="3000"
maxTransactions="3000" useStatementNamespaces="false" />
<sqlMap resource="com/ssi/model/sql/ssi-user-sqlmap.xml" />
</sqlMapConfig>
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings cacheModelsEnabled="false" enhancementEnabled="false"
lazyLoadingEnabled="false" maxRequests="3000" maxSessions="3000"
maxTransactions="3000" useStatementNamespaces="false" />
<sqlMap resource="com/ssi/model/sql/ssi-user-sqlmap.xml" />
</sqlMapConfig>