ibatis操作 模板基类设计 实现所有的增删改查分页.docx

上传人:b****1 文档编号:314000 上传时间:2023-04-28 格式:DOCX 页数:15 大小:17.90KB
下载 相关 举报
ibatis操作 模板基类设计 实现所有的增删改查分页.docx_第1页
第1页 / 共15页
ibatis操作 模板基类设计 实现所有的增删改查分页.docx_第2页
第2页 / 共15页
ibatis操作 模板基类设计 实现所有的增删改查分页.docx_第3页
第3页 / 共15页
ibatis操作 模板基类设计 实现所有的增删改查分页.docx_第4页
第4页 / 共15页
ibatis操作 模板基类设计 实现所有的增删改查分页.docx_第5页
第5页 / 共15页
ibatis操作 模板基类设计 实现所有的增删改查分页.docx_第6页
第6页 / 共15页
ibatis操作 模板基类设计 实现所有的增删改查分页.docx_第7页
第7页 / 共15页
ibatis操作 模板基类设计 实现所有的增删改查分页.docx_第8页
第8页 / 共15页
ibatis操作 模板基类设计 实现所有的增删改查分页.docx_第9页
第9页 / 共15页
ibatis操作 模板基类设计 实现所有的增删改查分页.docx_第10页
第10页 / 共15页
ibatis操作 模板基类设计 实现所有的增删改查分页.docx_第11页
第11页 / 共15页
ibatis操作 模板基类设计 实现所有的增删改查分页.docx_第12页
第12页 / 共15页
ibatis操作 模板基类设计 实现所有的增删改查分页.docx_第13页
第13页 / 共15页
ibatis操作 模板基类设计 实现所有的增删改查分页.docx_第14页
第14页 / 共15页
ibatis操作 模板基类设计 实现所有的增删改查分页.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

ibatis操作 模板基类设计 实现所有的增删改查分页.docx

《ibatis操作 模板基类设计 实现所有的增删改查分页.docx》由会员分享,可在线阅读,更多相关《ibatis操作 模板基类设计 实现所有的增删改查分页.docx(15页珍藏版)》请在冰点文库上搜索。

ibatis操作 模板基类设计 实现所有的增删改查分页.docx

ibatis操作模板基类设计实现所有的增删改查分页

ibatis操作模板基类设计实现所有的,增,删,改,查,分页

这一次介绍一下ibatis模板基类设计实现公共方法,减少开发工作量

代码更整洁清淅

EntityDAO类代码如下:

/**

*(#)EntityDAO.java1.02008-6-7上午09:

25:

37

*

*/

packagecom.keyi.util.dao;

importjava.io.Serializable;

importjava.util.List;

publicinterfaceEntityDAO{

/**

*根据主键查找对象

*

*@paramid

*主键值

*@return对象实体

*/

TfindByPrimarykey(Serializableid);

/**

*新增对象到数据库

*

*@paramo

*对象实体

*/

voidinsert(To);

/**

*更新对象实体到数据库

*

*@paramo

*对象实体

*/

voidupdate(To);

/**

*根据主键删除对象

*

*@paramid

*主键值

*/

voiddeleteByPrimarykey(Serializableid);

/**

*更新对象信息

*

*@paramstatementId

*sql语句名称后缀

*@paramparameters

*sql参数

*/

voidupdate(StringstatementId,Objectparameters);

/**

*sql查询单个对象

*

*@paramstatementId

*sql语句名称后缀

*@paramparameters

*sql参数

*@return查询结果

*/

TqueryForObject(StringstatementId,Objectparameters);

/**

*sql查询列表

*

*@paramstatementId

*sql语句名称后缀

*@paramparameters

*sql参数

*@return查询结果

*/

ListqueryForList(StringstatementId,Objectparameters);

}

IbatisEntityDao类内容如下:

/**

*(#)IbatisEntityDao.java1.02008-6-7上午09:

24:

32

*

*/

packagecom.keyi.util.dao;

importjava.io.Serializable;

importjava.util.List;

importjava.util.Map;

importmons.lang.StringUtils;

importcom.keyi.util.page.Page;

@SuppressWarnings("unchecked")

publicclassIbatisEntityDaoextendsIbatisGenericDaoimplements

EntityDAO{

/**

*DAO所管理的Entity类型.

*/

protectedClassentityClass;

protectedStringprimaryKeyName;

/**

*在构造函数中将泛型T.class赋给entityClass.

*/

@SuppressWarnings("unchecked")

publicIbatisEntityDao(){

entityClass=GenericsUtils.getSuperClassGenricType(getClass());

}

/**

*根据ID获取对象.

*/

publicTfindByPrimarykey(Serializableid){

returnget(getEntityClass(),id);

}

/**

*取得entityClass.

JDK1.4不支持泛型的子类可以抛开ClassentityClass,重载此函数达到相同效果。

*/

protectedClassgetEntityClass(){

returnentityClass;

}

publicStringgetIdName(Classclazz){

return"id";

}

/**

*分页查询.

*/

publicPagepagedQuery(MapparameterObject,intstart,intlimit){

returnpagedQuery(getEntityClass(),parameterObject,start,limit);

}

/**

*分页查询.

*/

publicPagepagedQuery(MapparameterObject,intstart,intlimit,

StringcountSqlId,StringpageQuerySqlId){

if(StringUtils.isNotBlank(pageQuerySqlId))

returnpagedQuery(getEntityClass(),parameterObject,start,limit,

countSqlId,pageQuerySqlId);

else{

returnpagedQuery(getEntityClass(),parameterObject,start,limit);

}

}

/**

*根据ID移除对象.

*/

publicvoiddeleteByPrimarykey(Serializableid){

removeById(getEntityClass(),id);

}

/**

*保存对象.为了实现IEntityDao我在内部使用了insert和upate2个方法.

*/

publicvoidinsert(To){

super._insert(o);

}

publicvoidsetPrimaryKeyName(StringprimaryKeyName){

this.primaryKeyName=primaryKeyName;

}

publicListqueryForList(StringstatementId,Objectparameters){

returnsuper.queryForList(getEntityClass(),statementId,parameters);

}

publicTqueryForObject(StringstatementId,Objectparameters){

returnsuper.queryForObject(getEntityClass(),statementId,parameters);

}

publicvoidupdate(StringstatementId,Objectparameters){

super.update(getEntityClass(),statementId,parameters);

}

publicvoidupdate(To){

super._update(o);

}

}

IbatisGenericDao类内容如下:

/**

*(#)IbatisGenericDao.java1.02008-6-7上午09:

20:

13

*

*/

packagecom.keyi.util.dao;

importjava.io.Serializable;

importjava.util.HashMap;

importjava.util.List;

importjava.util.Map;

importorg.springframework.orm.ibatis.support.SqlMapClientDaoSupport;

importorg.springframework.util.Assert;

importcom.keyi.util.page.Page;

@SuppressWarnings("unchecked")

publicclassIbatisGenericDaoextendsSqlMapClientDaoSupport{

publicstaticfinalStringPOSTFIX_INSERT=".insert";

publicstaticfinalStringPOSTFIX_UPDATE=".update";

publicstaticfinalStringPOSTFIX_DELETE=".delete";

publicstaticfinalStringPOSTFIX_DELETE_PRIAMARYKEY=".deleteByPrimaryKey";

publicstaticfinalStringPOSTFIX_SELECT=".select";

publicstaticfinalStringPOSTFIX_GETALL=".getAll";

publicstaticfinalStringPOSTFIX_SELECTMAP=".selectByMap";

publicstaticfinalStringPOSTFIX_SELECTSQL=".selectBySql";

publicstaticfinalStringPOSTFIX_COUNT=".count";

publicstaticfinalStringPOSTFIX_QUERY=".query";

/**

*根据ID获取对象

*/

publicTget(ClassentityClass,Serializableid){

To=(T)getSqlMapClientTemplate().queryForObject(

getStatementId(entityClass,IbatisGenericDao.POSTFIX_SELECT),

id);

returno;

}

/**

*新增对象

*/

publicvoid_insert(Objecto){

getSqlMapClientTemplate().insert(

getStatementId(o.getClass(),IbatisGenericDao.POSTFIX_INSERT),

o);

}

/**

*保存对象

*/

publicvoid_update(Objecto){

getSqlMapClientTemplate().update(

getStatementId(o.getClass(),IbatisGenericDao.POSTFIX_UPDATE),

o);

}

/**

*根据ID删除对象

*/

publicvoidremoveById(ClassentityClass,Serializableid){

getSqlMapClientTemplate().delete(

getStatementId(entityClass,

IbatisGenericDao.POSTFIX_DELETE_PRIAMARYKEY),id);

}

/**

*分页查询函数,使用PaginatedList.

*

*@paramstart

*@paramlimit@return含记录数和当前页数据的Page对象.

*/

publicPagepagedQuery(ClassentityClass,MapparameterObject,intstart,

intlimit){

Assert.isTrue(start>=0,"pageNoshouldstartfrom0");

//计算总数

IntegertotalCount=(Integer)getSqlMapClientTemplate()

.queryForObject(

getStatementId(entityClass,

IbatisGenericDao.POSTFIX_COUNT),

parameterObject);

//如果没有数据则返回EmptyPage

Assert.notNull(totalCount,"totalCountError");

if(totalCount.intValue()==0){

returnnewPage();

}

Listlist;

inttotalPageCount=0;

intstartIndex=0;

//如果pageSize小于0,则返回所有数捄1177,等同于getAll

if(limit>0){

//计算页数

totalPageCount=(totalCount/limit);

totalPageCount+=((totalCount%limit)>0)?

1:

0;

//计算skip数量

if(totalCount>start){

startIndex=start;

}else{

startIndex=(totalPageCount-1)*limit;

}

if(parameterObject==null)

parameterObject=newHashMap();

parameterObject.put("startIndex",startIndex);

parameterObject.put("endIndex",limit);

list=getSqlMapClientTemplate()

.queryForList(

getStatementId(entityClass,

IbatisGenericDao.POSTFIX_QUERY),

parameterObject);

}else{

list=getSqlMapClientTemplate()

.queryForList(

getStatementId(entityClass,

IbatisGenericDao.POSTFIX_QUERY),

parameterObject);

}

returnnewPage(startIndex,totalCount,limit,list);

}

/**

*分页查询函数,使用PaginatedList.

*

*@paramstart

*@paramlimit@return含记录数和当前页数据的Page对象.

*/

publicPagepagedQuery(ClassentityClass,MapparameterObject,intstart,

intlimit,StringcountSqlId,StringpageQuerySqlId){

Assert.isTrue(start>=0,"pageNoshouldstartfrom0");

//计算总数

IntegertotalCount=(Integer)getSqlMapClientTemplate()

.queryForObject(

getStatementId(entityClass,

countSqlId),

parameterObject);

//如果没有数据则返回EmptyPage

Assert.notNull(totalCount,"totalCountError");

if(totalCount.intValue()==0){

returnnewPage();

}

Listlist;

inttotalPageCount=0;

intstartIndex=0;

//如果pageSize小于0,则返回所有数捄1177,等同于getAll

if(limit>0){

//计算页数

totalPageCount=(totalCount/limit);

totalPageCount+=((totalCount%limit)>0)?

1:

0;

//计算skip数量

if(totalCount>=start){

startIndex=start;

}else{

startIndex=(totalPageCount-1)*limit;

}

if(parameterObject==null)

parameterObject=newHashMap();

parameterObject.put("startIndex",startIndex);

parameterObject.put("endIndex",limit);

list=getSqlMapClientTemplate()

.queryForList(

getStatementId(entityClass,

pageQuerySqlId),

parameterObject);

}else{

list=getSqlMapClientTemplate()

.queryForList(

getStatementId(entityClass,

pageQuerySqlId),

parameterObject);

}

returnnewPage(startIndex,totalCount,limit,list);

}

/**

*getstatementidinSQLMapfile

*

*@paramentityClass

*entityclass

*@paramsuffix

*suffix

*@returnstatementid

*/

privateStringgetStatementId(ClassentityClass,Stringsuffix){

StringclassName=entityClass.getName();

StringshortName=className.replace(entityClass.getPackage().getName()

+".","");

returnshortName+suffix;

}

publicListqueryForList(ClassentityClass,StringstatementId,

Objectparameters){

returngetSqlMapClientTemplate().queryForList(

getStatementId(entityClass,statementId),parameters);

}

publicTqueryForObject(ClassentityClass,StringstatementId,

Objectparameters){

return(T)getSqlMapClientTemplate().queryForObject(

getStatementId(entityClass,statementId),parameters);

}

publicvoidupdate(ClassentityClass,StringstatementId,Objectparameters){

getSqlMapClientTemplate().update(

getStatementId(entityClass,statementId),parameters);

}

}

GenericsUtils类内容如下:

/**

*(#)GenericsUtils.java1.02008-6-7上午09:

26:

43

*

*/

packagecom.keyi.util.dao;

importjava.lang.reflect.ParameterizedType;

importjava.lang.reflect.Type;

importmons.logging.Log;

importmons.logging.LogFactory;

@SuppressWarnings("unchecked")

publicclassGenericsUtils{

privatestaticfinalLoglog=LogFactory.getLog(GenericsUtils.class);

privateGenericsUtils(){

}

publicstaticClassgetSuperClassGenricType(Classclazz){

returngetSuperClassG

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2