最近闲来没事,做了个struts2+ibatis+spring入门例子 数据库用的是oracle 10。表是scott.emp和scott.dept两张表 级联查询(详细了解 ibatis in action)本例子采用的是后者
dao封装
package com.huasoft.common.dao; import java.io.Serializable; import java.util.List; import java.util.Map; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; /** * 类 编 号: 类 名 称:IBaseDao.java 内容摘要:DAO层封装接口,包含常用的CURD和分页操作 完成日期:2014-3-26 * 编码作者:马彪 */ public abstract interface BaseDao<T> { /*分页查询*/ QueryResult<T> pagedQuery(Map<String, Object> searchParams, Integer pageNumber,Integer pageSize, final String statementId); }
package com.huasoft.common.dao; import java.io.Serializable; import java.sql.SQLException; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import org.apache.poi.util.StringUtil; import org.springframework.orm.ibatis.SqlMapClientCallback; import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import com.ibatis.sqlmap.client.SqlMapExecutor; /** * 类 编 号: * 类 名 称:BaseDaoSupport.java * 内容摘要:DAO层封装使用了泛型,包含常用的CURD和分页操作 * 完成日期:2014-03-26 编码作者:马彪 */ @SuppressWarnings("unchecked") public class BaseDaoImpl<T> extends SqlMapClientDaoSupport implements BaseDao<T> { private static Logger log=Logger.getLogger(BaseDaoImpl.class); /* * 分页查询 * */ public QueryResult<T> pagedQuery(Map<String, Object> searchParams, Integer pageNumber,Integer pageSize, final String statementId) { //if(pageNumber==null)pageNumber=1; Integer total=(Integer)getSqlMapClientTemplate().queryForObject(statementId, searchParams);
Pageable page=buildPageRequest(pageNumber,pageSize); searchParams.put("offset",(pageNumber-1)*pageSize); searchParams.put("limit",page.getOffset()); List list=getSqlMapClientTemplate().queryForList(statementId, searchParams); Page pagination=new PageImpl(list,page,total); QueryResult queryResult=new QueryResult<T>(); queryResult.setContent(pagination.getContent()); queryResult.setTotal(total); queryResult.setTotalpages(pagination.getTotalPages()); return queryResult; } private PageRequest buildPageRequest(Integer pageNumber, Integer pageSize) { return new PageRequest(pageNumber, pageSize); } }
分页查询辅助类
package com.huasoft.common.dao; import java.util.List; public class QueryResult<T> { private List<T> content; private Integer total; private Integer totalpages; public List<T> getContent() { return content; } public void setContent(List<T> content) { this.content = content; } public Integer getTotal() { return total; } public void setTotal(Integer total) { this.total = total; } public Integer getTotalpages() { return totalpages; } public void setTotalpages(Integer totalpages) { this.totalpages = totalpages; } }
javabean
package com.huasoft.common.domain; import java.util.List; import com.huasoft.common.domain.Emp public class Dept { private String deptno; private String dname; private String loc; private List<Emp> emp; /*setter 和getter 省略*/ }
package com.huasoft.common.domain; import java.math.BigDecimal; import java.util.Date; public class Emp { private Integer empno; private String ename; private String job; private Integer mgr; private Date hiredate; private BigDecimal sal; private BigDecimal comm; private Integer deptno; }
javabean映射文件
<?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="EmpData"> <typeAlias alias="emp" type="com.huasoft.common.domain.Emp"/> <typeAlias alias="dept"type="com.huasoft.common.domain.Dept"/> <resultMap id="empResult" class="emp" > <result column="EMPNO" property="empno" jdbcType="INTEGER" /> <result column="ENAME" property="ename" jdbcType="VARCHAR" /> <result column="JOB" property="job" jdbcType="VARCHAR" /> <result column="MGR" property="mgr" jdbcType="INTEGER" /> <result column="HIREDATE" property="hiredate" jdbcType="TIMESTAMP" /> <result column="SAL" property="sal" javaType="java.math.BigDecimal" jdbcType="DECIMAL" /> <result column="COMM" property="comm" jdbcType="DECIMAL" /> <result column="deptno2" property="deptno" jdbcType="VARCHAR" /> </resultMap> <resultMap id="deptResult" class="dept"> <result column="deptno1" property="deptno" jdbcType="VARCHAR"/> <result column="DNAME" property="dname" jdbcType="VARCHAR"/> <result column="LOC" property="loc" jdbcType="VARCHAR"/> <result property="problemdata" resultMap="EmpData.empResult" /> </resultMap> <select id="EmpData.query" parameterClass="java.util.HashMap" resultMap="deptResult"> select * from (select tab.*, rownum row_num from (select tab1.deptno as deptno1, tab.empno, tab.ename, tab.job, tab.mgr, tab.hiredate, tab.sal, tab.comm, tab.deptno as deptno2, tab1.dname, tab1.loc from scott.emp tab, scott.dept tab1 where tab1.deptno = tab.deptno) tab where rownum <![CDATA[ <= ]]> #limit# )tab1 where row_num>#offset# </select> <select id="ProblemData.count" parameterClass="java.util.HashMap" resultClass="java.lang.Integer"> select count(*) from (select tab.*, rownum row_num from (select tab1.deptno as deptno1, tab.empno, tab.ename, tab.job, tab.mgr, tab.hiredate, tab.sal, tab.comm, tab.deptno as deptno2, tab1.dname, tab1.loc from scott.emp tab, scott.dept tab1 where tab1.deptno = tab.deptno) tab )tab1 </select> </sqlMap>
sqlmap-config.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <settings enhancementEnabled="true" maxTransactions="20" maxRequests="32" maxSessions="10"/> <!-- common --> <sqlMap resource="com/huasoft/common/domain/EmpSqlMap.xml" /> </sqlMapConfig>
struts2和spring的配置文件,在网上都可以搜的到,这里不再写了。
相关推荐
在Java Web开发中,Spring、Struts2和iBatis是三个非常重要的框架,它们各自在不同的层面上提供了强大的功能。Spring是一个全面的后端应用框架,提供了依赖注入(DI)、面向切面编程(AOP)、事务管理等功能;Struts...
"Struts2+Spring+Ibatis+MySQL" 是一个经典的Java Web开发框架组合,用于构建高效、可扩展的企业级应用程序。这个组合集成了强大的MVC(Model-View-Controller)框架Struts2、依赖注入与面向切面编程的Spring框架、...
Struts2、Spring和iBatis是Java Web开发中三个非常重要的开源框架,它们共同构建了一个灵活、可扩展且高效的应用程序开发环境。这个“struts2+spring+iBatis框架包”集成了这三个框架,使得开发者能够快速构建基于...
Struts2+Spring+Hibernate和Struts2+Spring+Ibatis是两种常见的Java Web应用程序集成框架,它们分别基于ORM框架Hibernate和轻量级数据访问框架Ibatis。这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于...
Struts2、Spring3和iBATIS是Java Web开发中常用的三大框架,它们各自负责不同的职责,协同工作可以构建出高效、松耦合的Web应用。在这个“struts2+spring3+ibatis项目整合案例”中,我们将深入探讨这三个框架如何...
《Spring3+Struts2+Ibatis:企业级应用开发框架整合详解》 在现代企业级Web应用开发中,Spring、Struts2和Ibatis是常见的三大组件,它们各自负责不同的职责,共同构建出高效、灵活的应用架构。Spring作为全能型的...
struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例
Spring+Struts2+iBatis是一个经典的Java轻量级开发框架组合,主要用于构建Web应用程序。这三个框架协同工作,提供了一种高效、灵活的解决方案,帮助开发者实现MVC(Model-View-Controller)架构。 首先,Spring框架...
spring2+struts1+ibatis2spring2+struts1+ibatis2spring2+struts1+ibatis2spring2+struts1+ibatis2spring2+struts1+ibatis2spring2+struts1+ibatis2spring2+struts1+ibatis2
基于spring+struts2+ibatis开发的简单项目,里面有增加,修改,删除,查找功能,前台使用了ligerUI插件,需在jsp页面引用ligerUI的js文件,适合有一定jquery,java的初学者,并对ligerUI有一定的了解,否则将很难理解...
struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+...
Struts2、Spring和iBatis是Java Web开发中三个非常重要的开源框架,它们的集成应用可以构建出高效、灵活的后端系统。Struts2作为MVC(Model-View-Controller)架构的一部分,主要负责处理HTTP请求和展示视图;Spring...
Struts2、iBatis和Spring是Java Web开发中非常重要的三个框架,它们各自负责不同的职责,但可以协同工作以实现高效、灵活的应用程序。在本整合实例中,我们将探讨如何将这三个组件集成到一起,形成一个强大的后端...
Struts2、Spring和iBatis是Java Web开发中常用的三个开源框架,它们各自负责不同的职责,协同工作可以构建出高效、松耦合的Web应用。这个整合项目实例旨在展示如何将这三个框架集成到一起,以实现更强大的功能。 1....
maven3+struts2+spring+ibatis,本来是用maven3+struts2+spring+hibernate但考虑到hibernate在多表级联查询的时候执行效率不高,所以改用性能更好不过sql比较麻烦的的ibatis,本项目只有登录和插入数据,仅供参考: ...
**Spring、Struts2 和 iBatis 整合详解** 在Java Web开发中,Spring、Struts2 和 iBatis 是三个非常重要的框架。它们分别负责不同层面的任务:Spring 提供了全面的依赖注入(DI)和面向切面编程(AOP),用于管理...
从描述中我们无法获取具体的信息,但可以推测这个项目可能是为了演示如何在Web应用中实现前端(可能使用Ext库)与后端(Struts2+iBatis+MySQL)的交互。 **Ext**:这里提到的“Ext”可能是指Ext JS,一个用于构建富...
Struts2、Spring、iBatis以及Oracle是Java Web开发中的四大核心组件,它们共同构建了一个强大且灵活的后端架构。在这个实例中,我们将会深入探讨这些技术如何协同工作,实现分页搜索功能和上传附件操作。 1. **...
9. **集成测试**:虽然这个例子没有集成Spring,但通常在实际项目中,Struts2和iBatis会被Spring容器统一管理,以便于依赖注入和事务控制。你可以学习如何将这些框架整合进Spring,利用Spring的强大功能提升项目的可...
各种系统架构图及其简介(Spring+IBatis+Struts1+Struts2+Hibernat)