`

ibatis分页组件分页

阅读更多

Ibatis分页  实例
查询分页ibtais  SQL语句 支持模糊查询后分页

分页查询需要两条SQL语句

第一部查询所有记录总数
  <select id="selectForCount-SysParam" resultClass="int">
      <![CDATA[
          SELECT count(*) from PUB_SYSPARAM
<!--下面动态构成查询条件,以及表名,可自行更改-->
      FROM SM_Employee
]]>
<dynamic prepend="where">
<isNotEmpty prepend="and" property="employeeCode">
EmployeeCode like '%$ employeeCode$ %'
</isNotEmpty>
<isNotEmpty prepend="and" property="employeeName">
EmployeeName like '%$ employeeName$ %'
</isNotEmpty>
</dynamic>
</select>

分页查询 ,此SQL分页,采用3层嵌套查询。
用户之需要修改表名与字段名,和最里层(红字)的代码即可。(rownum rn)蓝色字体是所必须得。
此处传入的是一个MAP对象 MAP对象由 bean
  <!--  查询分页 -->
  <select id="selectForPage-SysParam" resultClass="sysParam" parameterClass="hashmap">
    <![CDATA[
      SELECT *
      FROM (SELECT row_.*, rownum rownum_ FROM(SELECT  PUB_SYSPARAM.*,rownum rn from PUB_SYSPARAM
      ]]>
          <![CDATA[
              ) row_ WHERE rownum <=#end#)WHERE rownum_ >#start#
            ]]>
                <dynamic prepend="where">
<isNotEmpty prepend="and" property="employeeCode">
EmployeeCode like '%$ employeeCode$ %'
</isNotEmpty>
<isNotEmpty prepend="and" property="employeeName">
EmployeeName like '%$ employeeName$ %'
</isNotEmpty>
</dynamic>

<![CDATA[
) row_ WHERE rownum <= #end#) WHERE rownum_ > #start#
]]>
</select>


以下为源代码
package com.exeerp.pub.util;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.springframework.orm.ibatis.SqlMapClientTemplate;
/**
* ibatis 分页组件
*
* 测试版1.1
*  */
public class Paginated {
/**
* 得到sqlClient模版
*/
private SqlMapClientTemplate sqlClient;
/**
* 分页action URL地址
*/
private String url;
/**
* 页面显示条数
*/
private int pageSize;
/**
* 当前页面树
*/
private int currentPage;
/**
* 总记录数
*/
private int recordSum;
/**
* 页面总数
*/
private int pageSum;
/**
* 数据取读起点
*/
private int start;
/**
* 终点
*/
private int end;
/**
* 记录集对象
*/
private List<Object> recordList;
/**
* 分页对象
*/
private Object obj;
/**
* bean 数组对象
*/
private Object[] object;
/**
* 封装
*/
private Map<Object, Object> map;
/**
* 上下页
*/
private StringBuffer toHtml;
/**
* 查询总记录数sql名
*/
private String sqlCount;
/**
* 分页sql名
*/
private String sqlPage;

/**
* 构造函数
* @param sqlClient sqlMapClient 模版
* @param obj 查询对象
* @param currentPage 当前页面
* @param pageSize 页面大小
* @param url action地址
*/
public Paginated(SqlMapClientTemplate sqlClient, Object obj,
int currentPage, int pageSize, String url) {
this.sqlClient = sqlClient;
this.obj = obj;
this.currentPage = currentPage;
this.url = url;
this.pageSize = pageSize;
init();
execute();
}

/**
* 构造函数
*
* @param sqlClient
*            sqlMapClient 模版
* @param currentPage
*            当前页面
* @param pageSize
*            分页每页显示数目
* @param url
*            action 连接地址
* @param object
*            可以传入0个或多个对象(对应多对多的分页情况) 第一个对象为要查询的对象 其他为辅助
*/
public Paginated(SqlMapClientTemplate sqlClient, int currentPage,
int pageSize, String url, Object... object) {
this.sqlClient = sqlClient;
this.object = object;
this.currentPage = currentPage;
this.url = url;
this.pageSize = pageSize;
init(); // 初始化
}

/**
* 初始化信息
*/
private void init() {
try {
if (obj != null) {
objToMap();
} else {
obj2Map();
}
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

/**
* 执行分页
*/
public void execute()
{
try
{
pageInfo();
toHtml();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

/**
* 执行bean 对象封装 封装成map
*/
private void obj2Map() throws IllegalArgumentException,
IllegalAccessException, InvocationTargetException,
SecurityException, NoSuchMethodException {
map = new HashMap<Object, Object>();
for (Object objMap : object) {
Class clazz = null;
Method method;
String fieldNames[];
clazz = objMap.getClass();
Field[] fields = clazz.getDeclaredFields();
fieldNames = new String[fields.length];
for (int i = 0; i < fields.length; i++) {
fieldNames = fields.getName();
}
for (int i = 0; i < fields.length; i++) {
String methodName = "get"
+ Character.toUpperCase(fieldNames.charAt(0))
+ fieldNames.substring(1);
method = clazz.getMethod(methodName, new Class[] {});
if (method.invoke(objMap, null) != null
&& !"".equals(method.invoke(objMap, null))) {
map.put(fieldNames, method.invoke(objMap, null));
}
}
}
}

/**
* 执行bean 对象封装 封装成map
*/
private void objToMap() throws SecurityException, NoSuchMethodException,
IllegalArgumentException, IllegalAccessException,
InvocationTargetException {
map = new HashMap<Object, Object>();
Class clazz = null;
Method method;
String fieldNames[];
clazz = obj.getClass();
Field[] fields = clazz.getDeclaredFields();
fieldNames = new String[fields.length];
for (int i = 0; i < fields.length; i++) {
fieldNames = fields.getName();
}
for (int i = 0; i < fields.length; i++) {
String methodName = "get"
+ Character.toUpperCase(fieldNames.charAt(0))
+ fieldNames.substring(1);
method = clazz.getMethod(methodName, new Class[] {});
if (method.invoke(obj, null) != null
&& !"".equals(method.invoke(obj, null))) {
map.put(fieldNames, method.invoke(obj, null));
}
}
}

/**
* 页面信息的计算
*/
private void pageInfo() throws SQLException
{
if (sqlCount == null)
{
if (obj == null)//分页对象为空
{
sqlCount = "selectForCount-"
+ object[0].getClass().getSimpleName();

}
else
{
sqlCount = "selectForCount-" + obj.getClass().getSimpleName();
}
}
//查询总记录数
this.recordSum = (Integer) sqlClient.queryForObject(sqlCount, map);
if (currentPage <= 0) {
currentPage = 1;
}
if (pageSize < 5) {
pageSize = 5;
}
this.pageSum = (recordSum + pageSize - 1) / pageSize;
if (currentPage > pageSum) {
currentPage = pageSum;
}
//进行翻页时序号数控制。
this.start = (currentPage - 1) * pageSize;
this.end = currentPage * pageSize;
}

/**
* 生成上下页
*/
private void toHtml()
{
toHtml = new StringBuffer();
String tempUrl = "";
Iterator iterator = map.entrySet().iterator();
String entryName;
if (obj != null)
{
entryName = obj.getClass().getSimpleName();
} else {
entryName = object[0].getClass().getSimpleName();
}
entryName = Character.toLowerCase(entryName.charAt(0))
+ entryName.substring(1);
while (iterator.hasNext()) {
Map.Entry entry = (Entry) iterator.next();
tempUrl += entryName + "." + entry.getKey().toString() + "="
+ entry.getValue().toString() + "&";
}
tempUrl = tempUrl + "currentPage=";
toHtml.append("共" + recordSum + "条记录  " + "当前是第" + currentPage
+ "页    共" + pageSum + "页");
if (currentPage > 1 && pageSum >= 2)//在当前页面大于1和总页面数大于2时才显示首页
{
toHtml.append("<a href='" + url + "?" + tempUrl + "1'>首页</a>  ");
}
if (currentPage > 1) //在当前页面大于1显示上一页
{
toHtml.append("<a href='" + url + "?" + tempUrl + (currentPage - 1)
+ "'>上一页</a>  ");
}
if (currentPage < pageSum && currentPage > 0) //在当前页面小于总页数,且当前页面大于零时,显示下一页。
{
toHtml.append("<a href='" + url + "?" + tempUrl + (currentPage + 1)
+ "'>下一页</a>  ");
}
if (currentPage < pageSum) //在当前页面大于总页数时显示尾页
{
toHtml.append("<a href='" + url + "?" + tempUrl + pageSum
+ "'>尾页</a>  ");
}
toHtml.append("<script>");
toHtml.append("function goto(){");
toHtml.append("var currentpage=document.getElementById('currentPage').value;");
toHtml.append("window.location.href='"+url+"?"+tempUrl+"'+currentpage;");
toHtml.append("}");
toHtml.append("function num(){");
toHtml.append("return ((event.keyCode >= 48) && (event.keyCode <= 57));");
toHtml.append("}");
toHtml.append("</script>");
//选择页面进行转页
toHtml.append(" 转到第<input type='text' name='currentPage' id='currentPage' value='"+currentPage+"'size='2' onkeypress='event.returnValue=num();'>页 <input type='button' value='跳转'onclick='goto()'>");
}

/**
* 取读记分页后录集
* @return
*/
public List getRecordList()
{
map.put("start", start);
map.put("end", end);
if (sqlPage == null)
{
if (obj == null)
{
sqlPage = "selectForPage-"
+ object[0].getClass().getSimpleName();
} else {
sqlPage = "selectForPage-" + obj.getClass().getSimpleName();
}
}
this.recordList = sqlClient.queryForList(sqlPage, map);
return recordList;
}

public int getPageSize() {
return pageSize;
}

public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}

public int getCurrentPage() {
return currentPage;
}

public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}

public int getPageSum() {
return pageSum;
}

public void setPageSum(int pageSum) {
this.pageSum = pageSum;
}

public Object getObj() {
return obj;
}

public void setObj(Object obj) {
this.obj = obj;
}

public int getRecordSum() {
return recordSum;
}

public void setRecordSum(int recordSum) {
this.recordSum = recordSum;
}

public StringBuffer getToHtml() {
return toHtml;
}

public String getSqlCount() {
return sqlCount;
}

public void setSqlCount(String sqlCount) {
this.sqlCount = sqlCount;
}

public String getSqlPage() {
return sqlPage;
}

public void setSqlPage(String sqlPage) {
this.sqlPage = sqlPage;
}

}
Action类:
package com.exeerp.sm.ctrl;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import com.exeerp.pub.action.BaseAction;
import com.exeerp.pub.exception.BizException;
import com.exeerp.pub.exception.DaoException;
import com.exeerp.pub.util.ExceptionMessage;
import com.exeerp.pub.util.Paginated;
import com.exeerp.sm.bean.SysParam;
import com.exeerp.sm.biz.SysParamManager;
import com.opensymphony.xwork2.ActionContext;
import com.exeerp.pub.dao.SwitchDao;
/**
* Action类 调用系统参数业务层的方法。
* @author:
* 创建时间:2009-04-30
*/
public class SysParamAction extends BaseAction
{
//日志对象
static Logger logger = Logger.getLogger(SysParamAction.class);
//业务层SysParamManager对象
private SysParamManager sysParamManager;
private SysParam sysParam;
//设置当前页
private int currentPage=1;
//分页对象
private Paginated paging;
private List<SysParam> list;

/** 查询所有的系统参数信息
* @return 如果更新成功,则返回SUCCESS
*/
public String GetPage()
{
try
{
if(sysParam==null)
{
sysParam=new SysParam();
}
//调用业务层的获取所有页并进行分页的数据
paging = sysParamManager.getAllSysParamMgr(sysParam,20,currentPage,"sm/sm_sysParam/getAllSysParam.action"); //分别传递分页对象,页面记录数,当前页面数,和要访问的url地址
list = (List<SysParam>)(paging.getRecordList());//获取对象并进行保存
    //保存获得的当前的数据
this.getRequest().setAttribute("list", list);
    return SUCCESS;
}

catch (BizException e)
{
logger.error(e.getMessage());
e.printStackTrace();
this.setMessage(e.getMessage());
return INPUT;
}
catch (DaoException e)
{
logger.error(e.getMessage());
this.setMessage(e.getMessage());
return INPUT;
}
catch (Exception e)
{
e.printStackTrace();
logger.error(ExceptionMessage.getMessage("common.serverException"));
this.setMessage(e.getMessage());
return INPUT;
}
}
public int getCurrentPage()
{
return currentPage;
}

public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}

public Paginated getPaging() {
return paging;
}

public void setPaging(Paginated paging)
{
this.paging = paging;
}

public SysParamManager getSysParamManager() {
return sysParamManager;
}

public void setSysParamManager(SysParamManager sysParamManager) {
this.sysParamManager = sysParamManager;
}

public SysParam getSysParam() {
return sysParam;
}

public void setSysParam(SysParam sysParam) {
this.sysParam = sysParam;
}
public List<SysParam> getList() {
return list;
}
public void setList(List<SysParam> list) {
this.list = list;
}
}

3.Ibetis文件设置:
<?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">
                      <!--  系统参数sql语句 -->
<sqlMap>
  <typeAlias alias="sysParam" type="com.exeerp.sm.bean.SysParam"/>

  <!--  查询分页 -->
  <select id="selectForPage-SysParam" resultClass="sysParam" parameterClass="hashmap">
    <![CDATA[
      SELECT *
      FROM (SELECT row_.*, rownum rownum_ FROM(SELECT  PUB_SYSPARAM.*,rownum rn from PUB_SYSPARAM
      ]]>
          <![CDATA[
              ) row_ WHERE rownum <=#end#)WHERE rownum_ >#start#
            ]]>
  </select>
  <!-- 系统参数模糊查询记录数 -->
  <select id="selectForCount-SysParam" resultClass="int" >
      <![CDATA[
          SELECT count(*) from PUB_SYSPARAM
      ]]>
       
  </select>
  <!-- 查询所有系统参数 -->
  <select id="select-SysParam" resultClass="sysParam" parameterClass="sysParam">
      <![CDATA[
      SELECT *
      FROM (SELECT row_.*, rownum rownum_ FROM(SELECT  PUB_SYSPARAM.*,rownum rn from PUB_SYSPARAM
      ]]>
  </select>
</sqlMap>

Struts.xml配置:

<!-- 系统参数管理 -->
  <package name="com.exeerp.sm.ctrl.SysParamAction" extends="struts-default">
<!-- 查询所有的系统参数 -->
<action name="getAllSysParam" class="com.exeerp.sm.ctrl.SysParamAction"
method="GetPage">
<result name="success">/sm/sysparam/SysParamManage.jsp</result>
<result name="input">/sm/sm_sysPa</result>
</action>
</package>


5.业务方法和实现:
package com.exeerp.sm.biz;
import java.util.List;
import com.exeerp.pub.biz.BaseManager;
import com.exeerp.pub.exception.BizException;
import com.exeerp.pub.exception.DaoException;
import com.exeerp.pub.util.Paginated;
import com.exeerp.sm.bean.SysLog;
import com.exeerp.sm.bean.SysParam;
/**
* 系统参数业务层接口
* @author:
* 创建时间:2009-04-30
*/
public interface SysParamManager extends BaseManager {

/**
* 查询所有的系统参数信息
* @return
* @throws DaoException
*/
public Paginated getAllSysParamMgr(SysParam sysLog,int pageSize,int currentPage,String url)throws DaoException,BizException;

}

实现:
package com.exeerp.sm.biz.impl;
import java.util.List;
import org.apache.log4j.Logger;
import com.exeerp.pub.biz.AbstractBaseManager;
import com.exeerp.pub.exception.BizException;
import com.exeerp.pub.exception.DaoException;
import com.exeerp.sm.bean.SysLog;
import com.exeerp.sm.bean.SysParam;
import com.exeerp.sm.biz.SysParamManager;
import com.exeerp.sm.dao.SysParamDAO;
import com.exeerp.pub.util.ExceptionMessage;
import com.exeerp.pub.util.Paginated;
/**
* 系统参数业务实现层实现
* @author:
* 创建时间:2009-04-30
*
*/
public class SysParamManagerImpl extends AbstractBaseManager implements
SysParamManager
{
/**
* log4j用于在程序错误时,在控制台打印错误信息
*/
static Logger logger=Logger.getLogger(SysParamManagerImpl.class);
/**
* 将SysParamDAO接口作为属性
*/
private SysParamDAO sysParamDAO;

/**
* 查询所有的系统参数信息
* @param SysParam 系统参数对象
* @return 如果查找成功,则返回SysParam对象,否则返回null
*/
public Paginated getAllSysParamMgr(SysParam sysLog,int pageSize,int currentPage,String url)
{
try
{
return sysParamDAO.getAllSysParam(sysLog, pageSize, currentPage, url);
}catch(Exception ex){
logger.error(ex.getMessage());
ex.printStackTrace();
return null;
}
}
public SysParamDAO getSysParamDAO()
{
return sysParamDAO;
}
public void setSysParamDAO(SysParamDAO sysParamDAO) {
this.sysParamDAO = sysParamDAO;
}
}

Dao层接口和实现:
package com.exeerp.sm.dao;
import java.util.List;
import com.exeerp.pub.dao.BaseDAO;
import com.exeerp.pub.exception.DaoException;
import com.exeerp.pub.util.Paginated;
import com.exeerp.sm.bean.SysLog;
import com.exeerp.sm.bean.SysParam;
/**
* 系统参数操作持久层DAO接口
* @author:孙启华
* 创建时间:2009-04-29
*/
public interface SysParamDAO extends BaseDAO
{
/**
* 查询所有的系统参数信息
* @return
* @throws DaoException
*/
public Paginated getAllSysParam(SysParam sysLog,int pageSize,int currentPage,String url)throws DaoException;


}
package com.exeerp.sm.dao.impl;
import java.util.ArrayList;
import java.util.List;
import com.exeerp.pub.dao.BaseDAOImpl;
import com.exeerp.pub.exception.DaoException;
import com.exeerp.pub.util.Paginated;
import com.exeerp.sm.bean.SysLog;
import com.exeerp.sm.bean.SysParam;
import com.exeerp.sm.dao.SysParamDAO;
/**
* 系统参数持久层接口的实现
* @author:
* 创建时间:2009-04-30
*/
public class SysParamDAOImpl extends BaseDAOImpl implements SysParamDAO
{
/**
* 查询所有的系统参数信息
* @param sysPar 系统参数对象
* @return 如果查找成功,则返回List<SysParam>对象
*/
public Paginated getAllSysParam(SysParam sysLog,int pageSize,int currentPage,String url)throws DaoException
{
return this.queryForPaginatedList(sysLog, pageSize, currentPage, url);
}
}
baseDAo公用方法
package com.exeerp.pub.dao;
import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import com.exeerp.pub.exception.DaoException;
import com.exeerp.pub.util.ExceptionMessage;
import com.exeerp.pub.util.Paginated;
/*
* 抽象实现baseDAo公用方法
*
* @author 创建时间:(2009-04-10)
*/
public class BaseDAOImpl extends SqlMapClientDaoSupport implements BaseDAO {
static Logger logger = Logger.getLogger(BaseDAOImpl.class);

/*
* (non-Javadoc)
*
* @see com.exeerp.pub.dao.BaseDAO#addObject(java.lang.Object)
*/
/*
* (non-Javadoc)
*
* @see com.exeerp.pub.dao.BaseDAO#queryForPaginatedList(java.lang.Object,
*      int, int, java.lang.String)
*/
public Paginated queryForPaginatedList(Object obj, int pageSize,
int currentPage, String url) {
return new Paginated(this.getSqlMapClientTemplate(), obj, currentPage,
pageSize, url);
}

/*
* (non-Javadoc)
*
* @see com.exeerp.pub.dao.BaseDAO#queryForPaginatedList(int, int,
*      java.lang.String, java.lang.Object[])
*/
public Paginated queryForPaginatedList(int pageSize, int currentPage,
String url, Object... obj) {
return new Paginated(this.getSqlMapClientTemplate(), currentPage,
pageSize, url, obj);//调用Paginated的方法,进行分页的处理。
}

}

分享到:
评论
1 楼 xiechunmei13 2012-06-01  
最近项目使用到了struts+spring+ibatis,看到你的博客正好用得上,哥们能否把你的demo分享下,我的qq:416501600,感激不尽。

相关推荐

    ibatis_likehbm高效分页组件

    ibatis_likehbm高效分页组件ibatis_likehbm高效分页组件ibatis_likehbm高效分页组件ibatis_likehbm高效分页组件ibatis_likehbm高效分页组件ibatis_likehbm高效分页组件 ibatis_likehbm高效分页组件 ibatis_likehbm...

    ibatis分页功能

    标题"ibatis分页功能"指的就是如何在iBATIS框架中实现数据库查询的分页效果。分页不仅提高了用户体验,还能减少不必要的数据库负载。 描述中提到,分页功能是通过`page.tld`标签实现的。`tld`文件是JSP Tag Library...

    基于ibatis的分页

    开发者只需理解并调用已有的组件,就能快速实现分页功能,无需从头编写大量代码。对于初学者或者希望提高开发效率的工程师来说,这是一个非常实用的工具。同时,项目的分层结构也符合良好的软件设计原则,易于维护和...

    iBatis分页(基于Struts2和Freemarker)

    本知识点将深入探讨如何在Struts2框架中结合iBatis实现基于Freemarker模板的分页功能。 首先,我们需要理解iBatis,它是一个轻量级的Java持久层框架,它提供了一个SQL映射框架,允许开发者将SQL语句与Java代码分离...

    对IBatis分页的改进,使ibatis支持hibernate式的物理分页.doc

    在传统的iBatis框架中,分页通常采用逻辑分页的方式,即通过游标(ResultSet)来逐条处理数据,从而实现分页效果。这种方式虽然跨数据库兼容性好,但性能上不如数据库原生的物理分页高效。物理分页是直接在SQL语句中...

    spring+ibatis+oracle分页缓存源码

    在本项目中,Spring作为核心框架,负责管理各种组件,如数据库连接、事务管理以及与iBatis的集成。 iBatis则是一个持久层框架,它将SQL语句与Java代码分离,提高了代码的可维护性和灵活性。在Spring+iBatis的组合中...

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

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

    spring+ibatis+jsp集成实现数据库查询分页

    本教程将深入探讨如何使用Spring、iBatis和JSP这三个组件来集成实现数据库查询和分页功能。这三个技术结合,能够构建出高效、灵活且易于维护的数据访问层。 首先,Spring是一个开源的应用框架,提供依赖注入(DI)...

    分页的源码

    在IT行业中,分页是数据库查询的一个重要特性,特别是在数据量庞大的情况下,它能帮助...在 chap_ibatis 压缩包中,可能包含了相关的Ibatis分页源码示例,你可以进一步研究其中的细节,加深对Ibatis分页机制的理解。

    简单公文管理 struts+spring+ibatis+ajax 分页

    综上所述,"简单公文管理 struts+spring+ibatis +ajax 分页"是一个集成了多种技术的Web应用,它利用Struts进行页面控制,Spring管理业务逻辑,iBatis处理数据访问,Ajax提升用户体验,共同构建了一个高效、易用的...

    struts+spring+ibatis(SSI)的最简分页及标签

    总结起来,"struts+spring+ibatis(SSI)的最简分页及标签"是一个关于如何在Java Web开发中结合Struts的MVC架构、Spring的依赖管理和iBatis的数据访问来实现分页功能以及创建自定义标签的实践。这个过程涉及到Struts的...

    ibatis struts2 spring3 mybatis 分页 crud 完整代码

    Spring3在本项目中起到了整合其他组件的作用,例如,它可以管理Ibatis的SqlSessionFactory和Mapper接口,以及Struts2的Action类,实现组件间的松耦合。此外,Spring的事务管理也能够确保数据操作的一致性。 4. **...

    ssi_struts2_spring_ibatis 增删改查分页

    这三个组件是企业级Java应用中的常见选择,它们各自承担着不同的职责。 1. **Struts2**:这是一个用于构建MVC(模型-视图-控制器)架构的开源框架。它负责处理HTTP请求,提供动作调度,以及处理表单提交和结果转发...

    javaweb_分页显示数据库内容

    在 Java Web 应用程序中,分页功能可以使用多种方法来实现,例如使用 Hibernate、iBATIS 等 ORM 工具来实现分页,或者使用自定义的分页算法来实现分页。无论是哪种方法,分页都是 Java Web 应用程序中的一个重要组件...

    ssh2+ibatis框架

    SSH2+IBATIS框架是Java开发中常用的一套企业级应用开发框架组合,它将Spring、Hibernate、Struts2和iBatis等组件融合在一起,以提高开发效率和实现松耦合。以下是对这些框架及其整合方式的详细说明: **Spring框架*...

    ssi分页模板

    同时,分页组件还应提供“上一页”、“下一页”、“首页”、“末页”等操作,并能根据当前页自动计算这些按钮的状态。 总之,这个"ssi分页模板"结合了Struts、Spring和iBatis的优势,为开发者提供了一个便捷的分页...

    Struts2-spring-ibatis 整合及存储过程分页

    7. **实现存储过程分页**:在iBatis中,可以调用存储过程来实现分页查询。在Mapper接口中定义一个方法,如`selectByPage`,并编写对应的XML映射文件。存储过程通常会接受两个参数:开始位置和页大小,返回一个结果集...

    mybatis定时任务列表查询分页切割

    定时任务通常指的是应用中用来定期执行特定任务的组件,例如清理过期数据、发送邮件通知等。这些任务可以通过Quartz、Spring Scheduler等定时任务框架来实现,它们允许开发者定义任务执行的周期和逻辑。 MyBatis中...

    springmvc+DWZ+ibatis

    而DWZ则负责前端展示,提供用户友好的界面和交互效果,如DWZ的分页组件可以与后台的分页逻辑紧密结合,实现前后端的无缝对接。 具体实现时,开发者需要配置SpringMVC的DispatcherServlet、Controller、Service以及...

    Ibatis 练习Demo和笔记

    【Ibatis 的主要组件】 1. **SqlSessionFactoryBuilder**:构建SqlSessionFactory的工具类,通常在应用启动时创建一次。 2. **SqlSessionFactory**:它是Ibatis的核心,负责创建SqlSession对象,一个...

Global site tag (gtag.js) - Google Analytics