tiny-sqlmap1.0.1发布,用来弥补hibernate原生sql查询的不足
tiny-sqlmap的由来
最近给一个项目的框架做一些优化工作,该项目使用的是SSH这一套东西。似乎SSH在某些人眼里已经形成了一种惯性,做个web应用如果不用这SSH一套东西他都觉得那里不舒服似的,从不考虑自身应用的特点而选择合适的技术框架。不从实际出发乱选不合符本应用的技术框架必定带来不好的后果。对于我优化的这个项目而言,hibernate并没有给项目的开发效率提高,因为很多的查询都是使用了jdbcTemplate,导至以下问题:
1) 做个列表查询,用if判断查询条件,用StringBuffer拼装sql语句这样的代码占用整个业务方法,使得代码变得臃肿不可读。
2) Sql写在程序文件里,用StringBuffer 拼装,这好比看了被压缩了得js代码一样难理解。
3) SQL StringBuffer 拼装在应用随处可见,在Action,Service,Dao都有。
4) SQL 注入得不到统一的控制。
Hibernate在对数据表的修改确实体现了极佳的开发效率,对上面这些问题的优化,我并没有选择推翻重来,而是在ibatis的基础上开发了个查询框架来解决上述的问题。
什么是tiny-sqlmap
tiny-sqlmap框架是从ibatis框架中剥离出来的,它非常的轻巧,也好扩冲。它仅提供sql的查询功能,对sql的查询操作,它支持SQL结果集映射、sql参数映射、动态sql的等功能。
tiny-sqlmap使用场景
如果你在便用hibernate的过程中也遇到像我这样的问题,你可以将其整合到你的项目中。
如果整合tiny-sqlmap
tiny-sqlmap通过SqlMapExecutor 接口向外部程序提供访问,先看看这个接口所提供的方法
它只提供了相关的数据查询方法。SqlMapExecutor对象由SqlMapExecutorFactoryBean工厂类,这是个spring的FactoryBean,所以要求在spring的环境中运行,SqlMapExecutorFactoryBean的配置如下:
if (this.dataSource != null) { DataSource dataSourceToUse = this.dataSource; if (this.useTransactionAwareDataSource && !(this.dataSource instanceof TransactionAwareDataSourceProxy)) { dataSourceToUse = new TransactionAwareDataSourceProxy( this.dataSource); } state.setDataSource(dataSourceToUse); state.getConfig().getSqlMapExecutorImpl().setDataSource(dataSourceToUse); }
附上源码及库文件,欢迎便用!