读书人

给spring jdbctemplate加下一层“华丽

发布时间: 2012-08-30 09:55:54 作者: rapoo

给spring jdbctemplate加上一层“华丽外衣”-动态SQL&&SQL语句以文件存放

??? 用hibernate用得多了,忽然怀念起自己直接写sql 的轻巧类库了。

??? 开源的类库中,需要写sql常用的有spring jdbc?,apache的dbutil?, MyBatis。看过MyBatis文档,写过demo, 相对于hibernate这个强大的ORM工具,MyBatis可控性更好,然而今天它不主角,今天的主角是spring jdbc.

???

??? spring jdbc 当我一接触到的时候,从此深深爱上了这个小巧的家伙:简单而优雅的API,配上spring本身的声名式事务!这就是一把小巧的神器!????

??? 然而随着我深入的了解,让我不爽的是SQL语句写在JAVA代码中,想要动态SQL自己拼字符串吧!

??? 但是这又有什么的?我把SQL语句放在外部文件,然后把它读出来就行了。

?? 有这想法第一步想到的是:

?? 利用Spring注入功能,把SQL注入到bean中去,但是想想又不合适,不喜欢用xml方式配置spring bean ,如果每个?? bean都注入几条SQL,不是所有要用SQL的bean都要写在xml文件吗?

?? 这个办法不是一个优雅的解决办法,那创建一个类,利用spring注入功能,将相关的值注入到map属性中,尝试了一下,所有的sql都丢到一个文件多不优雅!还是自己动手来读吧,dom4j读xml很简单,上代码:

?

?

?

??? 模板技术用过freemarker ,velocity 我喜欢velocity多点,直接拿springside 里面工具类生成动态SQL

?

??

?

?? ???

?? 调用:可以自己创建对象,或者将SQLBuilder 放到spring容器中,让spring 管理bean

?? SQLBuilder是线程安全的建议仅创建一个实例,减少读取SQL语句文件 的IO消耗!

?

public class JdbcTest {@ResourceDataSource dataSource;@ResourceSQLBuilder sqlBuilder;private NamedParameterJdbcOperations jdbcTemplate;public JdbcTest() {// jdbcTemplate = getJdbcTemplate();}public NamedParameterJdbcOperations getJdbcTemplate() {return jdbcTemplate = new NamedParameterJdbcTemplate(dataSource);}@Transactionalpublic void deleteUser(Map<String, Integer> param) {getJdbcTemplate().update(sqlBuilder.getSql("deleteUser"), param);}}

?

?

?

?

??

读书人网 >其他数据库

热点推荐