!!利用SPRING JDBC 和模板框架实现SQL可配置!
入参是Map<String,Object>, 查询返回结果List<Map>
实现功能:
1.主要实现查询功能和SQL可配置化:
2.配置信息可多数据源存储(XML,DATABASE,TXT),可热部署,
3.缓存控制与刷新;
4.物理分页
与MYBATIS比较功能单一了 ,
特点:配置信息可多数据源存储(XML,DATABASE,TXT),可热部署;
简单的添加Dialect 的实现类,进行配置就可实现不同数据库的物理分页;
见org.myframework.jdbc.MyBatis
- /**
- * 查询所有记录
- *
- * @param mapperId
- * @param map
- * @return
- * @throws Exception
- */
- public List<Map<String, Object>> selectAllList(String sqlKey,
- Map<String, Object> map) {
- SqlMapper sqlMapper = sqlTemplate.getSqlMapper(sqlKey);
- String cacheKey = getCacheKey(sqlKey, map);
- if (sqlMapper == null) {
- throw new RuntimeException("load sqlconfig error :" + sqlKey);
- }
- if (sqlMapper.isFlushCache()) {
- dataCache.removeObject(cacheKey);
- }
- if (sqlMapper.isUseCache()) {
- if (dataCache.getObject(cacheKey) != null) {
- log.debug("load from cacheKey : " + cacheKey);
- return (List<Map<String, Object>>) dataCache
- .getObject(cacheKey);
- } else {
- log.debug("reload cacheKey : " + cacheKey);
- List<Map<String, Object>> rs = this.queryForList(
- sqlTemplate.getSql(sqlKey, map), map);
- dataCache.putObject(cacheKey, rs);
- return rs;
- }
- } else {
- List<Map<String, Object>> rs = this.queryForList(
- sqlTemplate.getSql(sqlKey, map), map);
- return rs;
- }
- }