`
yikeshaweng
  • 浏览: 3355 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

Struts2+Ibatis+Spring+级联查询

阅读更多

最近闲来没事,做了个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的配置文件,在网上都可以搜的到,这里不再写了。

 

 

 

分享到:
评论

相关推荐

    spring+struts2+ibatis整合的jar包

    在Java Web开发中,Spring、Struts2和iBatis是三个非常重要的框架,它们各自在不同的层面上提供了强大的功能。Spring是一个全面的后端应用框架,提供了依赖注入(DI)、面向切面编程(AOP)、事务管理等功能;Struts...

    struts2+spring+ibatis+mysql

    "Struts2+Spring+Ibatis+MySQL" 是一个经典的Java Web开发框架组合,用于构建高效、可扩展的企业级应用程序。这个组合集成了强大的MVC(Model-View-Controller)框架Struts2、依赖注入与面向切面编程的Spring框架、...

    struts2+spring+Ibatis框架包

    Struts2、Spring和iBatis是Java Web开发中三个非常重要的开源框架,它们共同构建了一个灵活、可扩展且高效的应用程序开发环境。这个“struts2+spring+iBatis框架包”集成了这三个框架,使得开发者能够快速构建基于...

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis是两种常见的Java Web应用程序集成框架,它们分别基于ORM框架Hibernate和轻量级数据访问框架Ibatis。这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于...

    struts2+spring3+ibatis项目整合案例

    Struts2、Spring3和iBATIS是Java Web开发中常用的三大框架,它们各自负责不同的职责,协同工作可以构建出高效、松耦合的Web应用。在这个“struts2+spring3+ibatis项目整合案例”中,我们将深入探讨这三个框架如何...

    spring3+struts2+ibatis

    《Spring3+Struts2+Ibatis:企业级应用开发框架整合详解》 在现代企业级Web应用开发中,Spring、Struts2和Ibatis是常见的三大组件,它们各自负责不同的职责,共同构建出高效、灵活的应用架构。Spring作为全能型的...

    struts2 + spring + ibatis 实例

    struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例

    Spring+Struts2+iBatis简要说明

    Spring+Struts2+iBatis是一个经典的Java轻量级开发框架组合,主要用于构建Web应用程序。这三个框架协同工作,提供了一种高效、灵活的解决方案,帮助开发者实现MVC(Model-View-Controller)架构。 首先,Spring框架...

    spring2+struts1+ibatis2

    spring2+struts1+ibatis2spring2+struts1+ibatis2spring2+struts1+ibatis2spring2+struts1+ibatis2spring2+struts1+ibatis2spring2+struts1+ibatis2spring2+struts1+ibatis2

    SSI项目 spring+struts2+ibatis

    基于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+hibernate+spring+ibatis 小实例struts2+...

    struts2+spring2+ibatis

    Struts2、Spring和iBatis是Java Web开发中三个非常重要的开源框架,它们的集成应用可以构建出高效、灵活的后端系统。Struts2作为MVC(Model-View-Controller)架构的一部分,主要负责处理HTTP请求和展示视图;Spring...

    struts2+ibatis-2.3+spring2.5整合实例

    Struts2、iBatis和Spring是Java Web开发中非常重要的三个框架,它们各自负责不同的职责,但可以协同工作以实现高效、灵活的应用程序。在本整合实例中,我们将探讨如何将这三个组件集成到一起,形成一个强大的后端...

    struts2+spring+ibatis整合项目实例

    Struts2、Spring和iBatis是Java Web开发中常用的三个开源框架,它们各自负责不同的职责,协同工作可以构建出高效、松耦合的Web应用。这个整合项目实例旨在展示如何将这三个框架集成到一起,以实现更强大的功能。 1....

    maven3+struts2+spring+ibatis

    maven3+struts2+spring+ibatis,本来是用maven3+struts2+spring+hibernate但考虑到hibernate在多表级联查询的时候执行效率不高,所以改用性能更好不过sql比较麻烦的的ibatis,本项目只有登录和插入数据,仅供参考: ...

    Spring+Struts2+Ibatis整合例子

    **Spring、Struts2 和 iBatis 整合详解** 在Java Web开发中,Spring、Struts2 和 iBatis 是三个非常重要的框架。它们分别负责不同层面的任务:Spring 提供了全面的依赖注入(DI)和面向切面编程(AOP),用于管理...

    Ext简单后台交互(struts2+ibatis2+mysql5.5)

    从描述中我们无法获取具体的信息,但可以推测这个项目可能是为了演示如何在Web应用中实现前端(可能使用Ext库)与后端(Struts2+iBatis+MySQL)的交互。 **Ext**:这里提到的“Ext”可能是指Ext JS,一个用于构建富...

    struts2+spring+ibatis+oracle+分页搜索+上传附件实例

    Struts2、Spring、iBatis以及Oracle是Java Web开发中的四大核心组件,它们共同构建了一个强大且灵活的后端架构。在这个实例中,我们将会深入探讨这些技术如何协同工作,实现分页搜索功能和上传附件操作。 1. **...

    struts2+ibatis例子

    9. **集成测试**:虽然这个例子没有集成Spring,但通常在实际项目中,Struts2和iBatis会被Spring容器统一管理,以便于依赖注入和事务控制。你可以学习如何将这些框架整合进Spring,利用Spring的强大功能提升项目的可...

    各种系统架构图及其简介(Spring+IBatis+Struts1+Struts2+Hibernat)

    各种系统架构图及其简介(Spring+IBatis+Struts1+Struts2+Hibernat)

Global site tag (gtag.js) - Google Analytics