原文地址动态sql配置文件内容:
<?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模板引擎官网资料。
加载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目录下。
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 {
// 还是分页查询哦
queryCondObj.setService_requester_name("%" +
queryCondObj.getService_requester_name() + "%");//设定模糊查询条件值
queryCondObj.setService_requester_account("%" +
queryCondObj.getService_requester_account() + "%");//设定模糊查询条件值
return executor.queryListInfoBeanWithDBName(Requester.class,
dbName, "getRequesterDaoListInfo", offset, pagesize, queryCondObj);
}
}
这里的dbName是在poolman.xml文件中配置的一个数据源。上文方法演示了如何通过ConfigSQLExecutor 组件读取动态sql实现分页查询的功能。至于数据源的配置请参考博文:
http://yin-bp.iteye.com/blog/1112892
需要额外说明的是怎么对like查询的值进行处理,如何添加%号,需要在dao方法中添加%号,否则不能正常查询出结果,我们配置的动态sql语句中有两个查询条件是
SERVICE_REQUESTER_NAME like #[service_requester_name]
和
SERVICE_REQUESTER_ACCOUNT like #[service_requester_account]
我们在dao方法中如此设置%号:
queryCondObj.setService_requester_name("%" +
queryCondObj.getService_requester_name() + "%");//设定模糊查询条件值
queryCondObj.setService_requester_account("%" +
queryCondObj.getService_requester_account() + "%");//设定模糊查询条件值
分享到:
相关推荐
bboss会话共享培训文档,学习bboss不可多得的资料,值得拥有。
bboss+es基本操作示例,elasticsearch,bboss,java使用demo
bboss es特点请访问: https://www.oschina.net/p/bboss-elastic
企业级 J2EE 开源框架:bboss
NULL 博文链接:https://yin-bp.iteye.com/blog/926166
springboot集成ElasticsearchBboss调用Elasticsearch的案例分享
官方版本,亲测可用
资源目录: 项目源码(eshelloword.rar) bboss elasticsearch开发入门教程.wmv 搭建bboss elasticsearch开发环境.wmv 说明.txt
Elasticsearch rest client bboss介绍-Elastic2018中国开发者大会演讲稿
NULL 博文链接:https://yin-bp.iteye.com/blog/2325602
NULL 博文链接:https://yin-bp.iteye.com/blog/2174863
NULL 博文链接:https://yin-bp.iteye.com/blog/2177475
浙江移动BBOSS系统快速入门手册V0.1归类.pdf
基于java语言比mybatis更实用的orm框架,支持mysql、oracle、postgresql、sqlserver、db2、dm、mongodb
NULL 博文链接:https://yin-bp.iteye.com/blog/1131637
bboss-datatran 由 bboss 开源的数据采集&流批一体化工具,提供数据采集、数据清洗转换处理和数据入库以及数据指标统计计算流批一体化处理功能。
NULL 博文链接:https://yin-bp.iteye.com/blog/1449900
官方版本,亲测可用
基于bboss新版平台项目环境搭建和代码工具使用视频教程
弹性Tran老板数据交换模块使用文档: : Bboss是一个很好的Elasticsearch Java Rest客户端。 它运行并访问像mybatis这样的elasticsearch来关联数据库。环境要求JDK要求:JDK 1.7+ Elasticsearch版本要求:1.X,2.X,5...