最近闲来没事,做了个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{ /*分页查询*/ QueryResult pagedQuery(Map 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 BaseDaoImplextends SqlMapClientDaoSupport implements BaseDao { private static Logger log=Logger.getLogger(BaseDaoImpl.class); /* * 分页查询 * */ public QueryResult pagedQuery(Map 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(); 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{ private List content; private Integer total; private Integer totalpages; public List getContent() { return content; } public void setContent(List 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映射文件
sqlmap-config.xml
struts2和spring的配置文件,在网上都可以搜的到,这里不再写了。