# myJdbcTemplate **Repository Path**: java2demo/myJdbcTemplate ## Basic Information - **Project Name**: myJdbcTemplate - **Description**: 基于spring JdbcTemplate的扩展,结合velocity模板实现sql语句的可配置化,可缓存,可热部署。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 9 - **Created**: 2015-08-26 - **Last Updated**: 2020-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 项目背景: 电信行业项目多使用ORACLE数据库,查询SQL的优化也是基于ORACLE执行计划; HIBERNATE在应对大表关联查询时,束手束脚无法很好的优化SQL,需要一个可配置可热部署的类ibatis工具类; 为什么不是ibatis? 1.Ibatis项目定位于ORM和存JDBC操作,试图结合两者,但其实效果并不好;ORM配置复杂,另外JPA是未来主流; 2.分页查询的扩展API设计的不是很好,实现起来令人费解。这一点没有org.hibernate.dialect.Dialect接口设计得好。 3.Ibatis的sql修改后,无法实现热部署SQL配置; MYJDBCTMEPLATE的定位: 1.扩展JDBCTMEPLATE使其SQL可配置 2.更好的支持不同的数据库的物理分页SQL,见MySQLDialect ,OracleDialect 3.实现SQL配置的在线热部署 4.简化缓存的配置:SQL查询结果根据SQLKEY进行缓存, 5.使用MAP,LIST作为返回结果的数据类型,保证能很好的转化为JSON数据格式与前端UI交互 6.查询部分的API (ORM功能可以由JPA+HIBENATER来实现) 7.新增单表增删改功能: save (String beanName, Map param) beanName对应的是表名,举例:custChannelPlan param 对应的是字段名,举例:{planId :'1' , contact :'111'} 举例:custChannelPlan ---> cust_Channel_Plan 表字段:(plan_Id varchar2(10), contact varchar2(10)); 最后执行SQL: INSERT INTO cust_Channel_Plan (plan_Id , contact ) VALUES ( '1' , '111'); updateTable (String beanName,String prefix, Map param) delete (String beanName,String prefix, Map param) ----------------------------------------------------------------- /sqlservice/custChannelPlan?planId=1&contact=1111 POST提交对应新增INSERT js调用: $.ajax({ url: '/sqlservice/custChannelPlan?planId=1&contact=1111', type: 'post' }); ----------------------------------------------------------------- /sqlservice/custChannelPlan?planId=1&contact=1111 GET提交对应查询SELECT js调用: $.ajax({ url: '/sqlservice/custChannelPlan?planId=1&contact=1111', type: 'get' }); ----------------------------------------------------------------- /sqlservice/custChannelPlan?planId=1&contact=1111 PUT提交对应更新UPDATE js调用: $.ajax({ url: '/sqlservice/custChannelPlan?planId=1&contact=1111', type: 'put' }); ----------------------------------------------------------------- /sqlservice/custChannelPlan?planId=1&contact=1111 DELETE提交对应删除DELETE js调用: $.ajax({ url: '/sqlservice/custChannelPlan?planId=1&contact=1111', type: 'delete' }); ----------------------------------------------------------------- 详细的代码案例见MyJdbcTest : 1.分页查询 2.代码热部署 3.缓存策略 缺点:不具备ORM功能