`
mmBlue
  • 浏览: 165476 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

SpringSide_2技术分析_Velocity创建动态SQL

阅读更多

这里主要介绍SpringSide使用Velocity+Spring创建动态SQL,有点类似ibatis

参考文件

1. showcase org.springside.examples.showcase.common.dao.UserJdbcDao类里面的

属性 private String searchUserSql;

 

2. showcase applicationContext-jdbc.xml

 

 

	<bean id="userJdbcDao" class="org.springside.examples.showcase.common.dao.UserJdbcDao">
		<property name="searchUserSql">
			<value><![CDATA[
			SELECT id, name, login_name 
			FROM ss_user
			WHERE 1=1
			
			## Dynamic Content
			#if ($loginName)
			AND login_name=:loginName
			#end
			#if ($name)
			AND name=:name
			#end
			
			ORDER BY id
			]]></value>
		</property>
	</bean>

利用Spring的注入功能,把searchUserSql 注入进去

 

3.查看下面的方法(注释有问题,应该是Velocity不是freemarker)

	/**
	 * 使用freemarker创建动态SQL.
	 */
	public List<User> searchUserByFreemarkerSqlTemplate(Map<String, ?> conditions) {
		String sql = VelocityUtils.render(searchUserSql, conditions);
		logger.info(sql);
		return jdbcTemplate.query(sql, userMapper, conditions);
	}

VelocityUtils是一个工具类,调用的代码为

VelocityContext velocityContext = new VelocityContext(model);
StringWriter result = new StringWriter();
Velocity.evaluate(velocityContext, result, "", template);

通俗点讲,就是将xml里面的searchUserSql 和 变量给Velocity模板,然后去渲染,用的是字符串模板,不是文件模板。这个freemarker也可以做到。

freemarker实现 可参考:

http://balaschen.iteye.com/blog/51591

http://www.zhuoda.org/lunzi/102545.html

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics