浏览 1389 次
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-07-02
最后修改:2011-07-02
<?xml version="1.0" encoding="UTF-8"?> <properties> <property name="getRequesterDaoListInfo"> <![CDATA[ select r.*, o.ORG_NAME as service_requester_org_name from TD_ESB_REQUESTER r left join TD_SM_ORGANIZATION o on r.SERVICE_REQUESTER_ORG = o.ORG_ID where 1=1 #if($service_requester_code && !$service_requester_code.equals("")) and SERVICE_REQUESTER_CODE = #[service_requester_code] #end #if($service_requester_account && !$service_requester_account.equals("")) and SERVICE_REQUESTER_ACCOUNT like #[service_requester_account] #end #if($service_requester_name && !$service_requester_name.equals("")) and SERVICE_REQUESTER_NAME like #[service_requester_name] #end #if($service_requester_org && !$service_requester_org.equals("")) and SERVICE_REQUESTER_ORG = #[service_requester_org] #end order by create_time desc ]]> </property> </properties> 动态sql语句中包含两种类型的变量: #[service_requester_name] 这种变量将被转换成预编译绑定参数变量 $service_requester_code 这种变量直接被替换成相应的变量值 除了sql参数变量外,我们在sql中使用以下逻辑结构 #if/#elseif/#end 来动态生成sql语句,以下是一个简单的结构实例: #if( $foo < 10 ) #elseif( $foo == 10 ) #elseif( $bar == 6 ) #else #end 根据传入的变量的值做相应的处理,从而在运行时动态生成sql语句,逻辑表达中使用变量的语法为$开头加变量名称:$service_requester_name。 判断变量是否为null的语法为: #if($service_requester_name) 逻辑表达式使用的Velocity模板引擎语法,非常灵活,我们可以在动态sql模板中使用几乎所有Velocity模板引擎的功能,具体使用方法可以参考Velocity模板引擎官网资料。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-07-02
加载sql配置文件并定义ConfigSQLExecutor 组件:
public static final String DBNAME = "stsmc"; private static ConfigSQLExecutor executor = new ConfigSQLExecutor("com/chinacreator/tjbb/dao/impl/stxftj.xml"); 只要确保com/chinacreator/tjbb/dao/impl/stxftj.xml文件存放在classpath环境中即可,一般是在classes目录下。 |
|
返回顶楼 | |
发表时间:2011-07-02
最后修改:2011-07-02
dao组件中执行动态sql并返回执行结果:
package com.chinacreator.esb.uddi.requester.dao.impl; import com.chinacreator.esb.uddi.requester.dao.RequesterDao; import com.chinacreator.esb.uddi.requester.entity.Requester; import com.frameworkset.common.poolman.ConfigSQLExecutor; import com.frameworkset.util.ListInfo; public class RequesterDaoImpl implements RequesterDao { public static final String dbName= "stsmc"; private static ConfigSQLExecutor executor = new ConfigSQLExecutor("com/chinacreator/tjbb/dao/impl/stxftj.xml"); public ListInfo getRequesterDaoListInfo(String sortKey, boolean desc, long offset, int pagesize, Requester queryCondObj) throws Exception { // 还是分页查询哦 return executor.queryListInfoBeanWithDBName(Requester.class, dbName, "getRequesterDaoListInfo", offset, pagesize, queryCondObj); } } 这里的dbName是在poolman.xml文件中配置的一个数据源。上文方法演示了如何通过ConfigSQLExecutor 组件读取动态sql实现分页查询的功能。至于数据源的配置请参考博文: http://www.iteye.com/topic/1111686 |
|
返回顶楼 | |
发表时间:2011-07-04
要是freemarker就好了,习惯用freemarker。
|
|
返回顶楼 | |
发表时间:2011-07-04
velocity 也还可以,呵呵,都不错
|
|
返回顶楼 | |
发表时间:2011-07-09
bbossgroups项目新域名开通:
http://www.bbossgroups.com |
|
返回顶楼 | |