日期:2014-05-16  浏览次数:20572 次

利用SPRING JDBC 和模板框架实现SQL可配置

!!利用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;
		}
	}