【ITPUB 技术文档】(新版增加了直接结果映射VO的功能无需再写rowcallbackhandler了,集成ehcache、memcached提高处理效率)
犹豫了很久,还是决定将自己的东西(sagacity睿智开发框架)的一部分逐步奉献给大家,首先申明一下版权问题,请注明“陈氏查询”!
进入正题:
首先介绍一下sagacity(睿智)框架:其包括快速原型的页面框架(这里面也有一个非常独到人性化的界面的设计),sagacity-core核心代码库提供针对企业应用开发所需要的工具类和组件,sagacity-toolkit 工具库,包括快速原型项目生成,excel导入工具(用于项目试运行阶段数据初始化);sagacity-struts:基于struts2+spring+hibernate+sitemesh+spring security技术以实际企业开发项目为背景非常实用演示项目。sagacity项目从实际项目出发,贯穿整个项目周期提供优雅的实现以及从开发人员的角度着眼简化开发难度!这里不一一而谈。
第一讲:陈氏查询
先抛一个问题:大家平时做数据库查询时查询条件很多也不定时怎么写hql以及sql语句?
比如:
1queryStr.append("select * ");
2 queryStr.append("from OA_CAR_REGIST t ");
3 queryStr.append("where 1=1 ");
4
5 if(CarRegiestVO.isActive!=null)
6 queryStr.append(" and t.IS_ACTIVE is ? ");
7
8 if(CarRegiestVO.beginDate!=null && CarRegiestVO.endDate!=null)
9 queryStr.append(" and t.REGIST_DATE>=? and t.REGIST_DATE<= ? ");
10
11 if(CarRegiestVO.carMode!=null)
12 queryStr.append(" and t.CAR_MODE like "+carMode+"%");
2 queryStr.append("from OA_CAR_REGIST t ");
3 queryStr.append("where 1=1 ");
4
5 if(CarRegiestVO.isActive!=null)
6 queryStr.append(" and t.IS_ACTIVE is ? ");
7
8 if(CarRegiestVO.beginDate!=null && CarRegiestVO.endDate!=null)
9 queryStr.append(" and t.REGIST_DATE>=? and t.REGIST_DATE<= ? ");
10
11 if(CarRegiestVO.carMode!=null)
12 queryStr.append(" and t.CAR_MODE like "+carMode+"%");
sql结构非常混乱,从数据库客户端写好的sql语句还得用stringBuffer给拼接起来,以后要是改写一下语句还得debug程序得到最后的语句,太累了!