- 浏览: 904142 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (354)
- Java学习 (122)
- jstl el表达式 (2)
- struts2 标签 (6)
- Ibatis (14)
- S2SH (3)
- struts2 json (2)
- JDK1.6-JDK1.5 (1)
- spring mvc (1)
- 工作项目开发 (8)
- jxl (3)
- jqgrid (9)
- POI (10)
- jQuery (9)
- itext (11)
- oracle (56)
- js (20)
- treegrid (1)
- myeclipse (4)
- Jforum (1)
- iphone (2)
- 角色权限 (1)
- Log4J (5)
- WebService (1)
- spring定时 (1)
- swfupload (12)
- Servlet (1)
- KindEditor (1)
- Java学习,httpclient (2)
- http (4)
- datagrid (1)
- KinSlideshow (1)
- android (7)
- html (1)
- CSS (1)
- 正则表达式 (3)
- easyui (6)
- JSONP (1)
- SQLServer (1)
- tomcat (2)
- Spring (4)
- Jquery plugins (2)
- windows7 (3)
- bootstrap (1)
- FreeMarker (1)
- flex (1)
- ExtJS (6)
- tTP-Link (1)
- MySQL (4)
- JavaScript (3)
- Notepad++ (1)
- ora (1)
- C语言 (1)
- 计算机 (1)
- DWR (2)
- 吉他 (1)
- hibernate (1)
- eclipse (1)
最新评论
-
天使建站:
这里的这篇文章写得很好:http://www.aijquery ...
jS 如何删除二维数组的重复项 -
羽翼的心动:
POI处理的格式单一,无法导出格式比较复杂的表格。POI不能使 ...
poi合并单元格同时导出excel -
zhixinhuacom:
jqgrid 按回车键默认提交数据,怎么做才能时回车不提交数据 ...
JQgrid要实现在jqGrid表格上动态的加行、删行,最后点击“保存”按钮,与后台交互,保存数据 -
w_mojian180:
nice 很多情况都是因为引入文件导入
Uncaught SyntaxError: Unexpected token < -
springdata_springmvc:
bootstrap demo实例教程源代码下载:http:// ...
bootstrap-switch开关按钮表单插件
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的方法,进行分页的处理。
}
}
发表评论
-
Tree structure handling by MyBatis
2014-03-18 23:56 1171Hello, I've got a table that ma ... -
iBatis resultMap出错 The error happened while setting a property on the result obj
2012-04-12 00:28 1226错误:org.springframework.jdbc.Unc ... -
ibatis中select查询,出现字段值为null就保错
2012-04-06 14:59 8472012年4月6日, PM 02:59:55 不知道为何! -
ibatis配置多表关联(一对一、一对多、多对多) (转载)
2011-11-15 15:57 1361ibatis配置多表关联(一对一、一对 ... -
如何进行ibatis动态多条件组合查询以及模糊查询(oracle,mysql)
2011-11-07 13:33 1171(转载自:) 如何进行ibatis动态多条件组合查询以 ... -
ibatis 中isNull, isNotNull与isEmpty, isNotEmpty区别
2011-11-07 13:15 5688ibatis 中isNull, isNotNull与i ... -
ibatis使用like进行模糊查询的时候,会有注入漏洞
2011-10-27 12:39 2966看《ibatis in action》,里面提到了使用li ... -
ibatis的like的使用
2011-10-27 12:27 954网上搜了一下ibatis的关于like的使用,相信看到这篇 ... -
ibatis 中isNotEmpty
2011-10-27 11:38 88861、ibatis 中isNotEmpty的作用 & ... -
转:IBATIS动态SQL
2011-10-26 11:17 1773转:IBATIS动态SQL 直接 ... -
ibatis 的关联查询sqlxml配置-多对一的配置
2011-10-25 10:55 2664一个用户表,有id,name,groupid等 一个用户组 ... -
关于ibatis动态查询的语句(转载)
2011-10-25 09:47 969网络上有大量的关于ibatis动态查询的语句,本人在此 ... -
Ibatis关联查询
2011-10-25 08:50 3122两个表 Dept(部门)、 Emp(员工) 部门中的列名 id ...
相关推荐
"iBatis分页"是数据库操作中常见的需求,iBatis提供了方便的分页支持。在学习这部分时,你会了解如何在SQL中添加分页条件,以及如何在Java代码中处理分页结果。 "spring+iBatis处理1对多数据表实例"展示了如何将...
综上所述,这个实例展示了如何整合Struts2、Spring、iBatis和Oracle来构建一个完整的Web应用,实现了动态分页搜索和附件上传功能。这种架构具有良好的可扩展性和可维护性,适用于各种中大型企业级项目。开发者可以...
业务服务层通常会使用iBatis来操作数据库,完成数据的增删改查和分页操作。 1. **数据添加**:通过Action接收前端提交的数据,调用iBatis的SqlMapClient接口执行INSERT SQL,插入新记录。 2. **数据删除**:Action...
压缩包中的"books"可能是一个示例项目,包含了使用Ibatis和Mybatis进行CRUD和分页操作的代码实例。通过阅读和分析这些代码,开发者可以更深入地理解如何在实际项目中应用这两个框架。 总的来说,这份资源对于学习...
本项目"ibatis_with_memcached"就是关于如何将Ibatis与Memcached集成,实现高效的数据库缓存策略的实例。 Ibatis是一个基于Java的SQL映射框架,它允许开发者编写SQL语句并与Java对象进行绑定,从而避免了传统的JDBC...
本实例聚焦于`iBatis` 在实际项目中的应用,以及如何与MySQL数据库相结合。MySQL是广泛使用的开源关系型数据库管理系统,以其高效、稳定和易用性而备受青睐。 `iBatis` 的核心概念包括配置文件、映射文件、...
struts spring ibatis mysql 分页,增删改查,以及导出excle
总的来说,这个实例项目是一个基础的Java Web应用,展示了如何将Struts2、Spring和iBatis整合使用,实现CRUD操作和分页功能。通过学习和理解这个项目,开发者可以深入掌握这三大框架的协同工作方式,为构建更复杂的...
**Ibatis 实例详解** Ibatis,又称为MyBatis,是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。Ibatis 避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。Ibatis 可以使你更好的将数据库...
- **综合应用**:通过实例演示iBATIS在复杂项目中的集成与应用,帮助读者将理论知识转化为实践能力。 ### iBATIS.NET QuickStart 除了针对Java的详细讲解外,本书还提供了iBATIS.NET的快速入门指南,对于.NET平台...
7. **插件机制**:介绍如何编写和使用Ibatis的插件,如PageHelper分页插件。 8. **最佳实践**:提供在实际项目中使用Ibatis的建议,如合理规划Mapper接口,避免SQL注入等。 【IbatisStudy项目结构及内容】 在提供...
在 Pojo 类中,除了常规的 getter 和 setter 方法,还需要提供一个无参构造函数,以便 Ibatis 能够实例化这些对象。`Book` 类中的 `users` 属性需要定义为列表类型,因为一本书可能有多个作者。 接下来,我们配置 ...
2. **SqlSessionFactory**:它是Ibatis的核心对象,用于创建SqlSession实例,而SqlSession则用于执行SQL语句。 3. **Mapper接口和XML映射文件**:Mapper接口定义了数据库操作的方法,XML映射文件中定义了对应的SQL...
同时,Ibatis也支持结果集的分页和延迟加载,进一步提升性能。 9. **插件扩展**: Ibatis允许开发者自定义插件,通过拦截器模式增强SqlSession或Executor的行为,例如日志记录、性能分析等。 这个自己编写的...
1. **iBatis分页基础** iBatis 提供了对分页查询的支持,可以通过设置SQL语句中的LIMIT和OFFSET子句来实现。LIMIT用于指定每页显示的记录数,OFFSET则表示跳过的记录数。在iBatis中,可以通过动态SQL来构建这样的...
Spring的IoC(Inversion of Control)容器可以管理Ibatis的SqlSessionFactory和Mapper接口实例,使得数据库操作更加简洁。 再者,Ibatis是一个轻量级的持久层框架,它提供SQL映射文件和接口方式来执行SQL语句。相比...
【基于Struts2 Spring iBatis POI开发的导出Excel实例详解】 在现代Web应用程序中,导出数据到Excel格式是一种常见的需求,这有助于用户分析、存储或共享信息。本实例将详细介绍如何利用Struts2、Spring和iBatis...
此外,这个DEMO可能还涵盖了错误处理、验证、分页等功能,以展示一个完整的数据操作流程。开发者可以通过调试代码,了解如何在ASP.NET MVC和Ibatis.net之间交互,以及如何处理数据库事务。 总之,这个示例项目为...
《iBATIS-SqlMaps-2-Tutorial_cn》是一本针对初学者的优秀教程,它深入浅出地介绍了iBATIS这一流行的数据访问框架。...书中的实例和代码示例,可以帮助读者更好地理解和应用理论知识,从而在实践中快速上手。
IbatisDemo是一个展示如何利用Ibatis框架实现数据库半自动化操作的实例,相较于Hibernate,Ibatis提供了更高的灵活性,这也是它在电信、淘宝等大型企业中被广泛采用的原因。本篇文章将深入探讨Ibatis的核心概念、...