NC-ERP IUFO系统管理要点
2013-07-31 16:36
197 查看
ibatis分页不怎么好用,不是数据库物理分页,数量大起来性能下降得厉害,所以有必要依托特定数据库做分页sql的包装,因此牵扯出这样的问题,即在代码中如何从指定id的select标签中获取被动态拼装好带参数占位符(?)并被实际执行的sql语句.
昨天跟了一下代码,从getSqlMapClientTemplate一路跟到ibatis的源代码,
找到了几处关键性代码,因此提取出来,在jpetstore上试验了一下,发现可行,
所以和大家分享一下.
以上例子代码是改自JPetstore,
建议大家自己重写一个继承自SqlMapClientDaoSupport的抽象类,把这个提取sql功能写成一个基类方法,好让具体的业务dao类使用.
昨天跟了一下代码,从getSqlMapClientTemplate一路跟到ibatis的源代码,
找到了几处关键性代码,因此提取出来,在jpetstore上试验了一下,发现可行,
所以和大家分享一下.
import com.ibatis.sqlmap.engine.impl.ExtendedSqlMapClient; import com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate; import com.ibatis.sqlmap.engine.mapping.sql.Sql; import com.ibatis.sqlmap.engine.mapping.statement.MappedStatement;
//SqlMapExecutorDelegate是一个相当核心的类,他存放了配置文件所有信息和java连接对象,有一个会话池和一个请求池,还有sql解析其,以及一个具体sql语句的执行者,大家可以看看 SqlMapExecutorDelegate delegate=((ExtendedSqlMapClient)(getSqlMapClientTemplate().getSqlMapClient())).getDelegate(); //这个类用来存放某个id名的Statement信息,如这个当中的getProduct就是一条语句的配置id名 MappedStatement ms = delegate.getMappedStatement("getProduct"); //sql类就是某一类型 Statement的对应sql拼装解析类 Sql sql=ms.getSql(); //然后调用getSql方法,把参数值数组传进去,如下面只有一个参数productId,便可以生成 形如 select * from xxx where xx=?的sql语句了,代理类的sql执行者便可以根据这个sql和参数值数组进行参数查询了,前面那个参数的类型是com.ibatis.sqlmap.engine.scope.RequestScope,这个要从上面提到的代理类里面获取,但是因为是保护成员,而且发现拼凑sql的时候并没有多大作用,所以传了个null进去,结果居然通过了,不过这部分我还要确认一下.个人感觉RequestScope还是很重要的,可以会影响其他类型的Statement System.out.println(sql.getSql(null,productId) );
以上例子代码是改自JPetstore,
建议大家自己重写一个继承自SqlMapClientDaoSupport的抽象类,把这个提取sql功能写成一个基类方法,好让具体的业务dao类使用.
相关文章推荐
- ERP系统订单管理的一些要点
- ERP系统中库存管理的基本数据设置[转]
- A8ERP权限管理系统
- 云ERP系统治愈制造业生产管理“顽疾”有方
- 生产管理企业中委外加工如何运用ERP系统解决
- [置顶] ASP.NET综合管理ERP系统+全部开发文档
- 项目管理手记(30):ERP系统应用中的绩效杠杆
- ERP系统中KPI指标的建立与管理
- Super超级ERP系统---(8)订单管理--订单创建
- ERP系统的管理思想与核心功能
- ERP系统功能之采购管理
- 微通道对接ERP、CRM、OA、HR、SCM、PLM和其他管理系统解决方案
- 蓝软5000erp(商业企业管理系统) 怎么用
- 【Tiptop ERP M】Tiptop GP ERP ASF生产管理系统
- 项目管理手记(30):ERP系统应用中的绩效杠杆
- Super超级ERP系统---(5)采购管理--采购入库
- Super超级ERP系统---(7)货位管理
- 点宏染整厂ERP生产管理系统介绍
- IC行业销售ERP系统---IC元器件销售管理系统
- ERP系统的KPI指标建立与管理介绍