论坛首页 Java企业应用论坛

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

浏览 13138 次
精华帖 (0) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-12-23  
json20080301 写道
!!利用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;
		}
	}




可加群203431569讨论




查询返回结果List<Map> ,如果我查的数据量超级大,比如100W行。会造成内存溢出不?
0 请登录后投票
   发表时间:2011-12-23   最后修改:2011-12-23
肯定会啊。要分页的嘛。这个问题让我很汗啊;

Dialet中提供了分页方法
0 请登录后投票
   发表时间:2011-12-26  
大哥们,不要动不动就说替代 hibernate。
hibernate不是你们这些小玩具说替代就替代的,你们这些设计只是在面向对象的道路上渐行渐远。
0 请登录后投票
   发表时间:2011-12-26  
yangguo 写道
大哥们,不要动不动就说替代 hibernate。
hibernate不是你们这些小玩具说替代就替代的,你们这些设计只是在面向对象的道路上渐行渐远。



---
同意,这个东西只是针对查询需求,有一定的应用范围;
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics