`

bbossgroups持久层框架动态sql语句配置和使用

阅读更多
动态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() + "%");//设定模糊查询条件值


相关文档:
bbossgroups 持久层模板sql变量参数设置的三种方式
分享到:
评论

相关推荐

    bbossgroups 开发系列文章之一 最佳实践

    数据库访问组件和SQL语句配置文件是数据层的关键。bbossgroups提供了一套便捷的数据访问组件,允许开发者方便地操作数据库。在配置文件中,可以设定数据库连接池、事务管理等,以实现高效的数据库操作。 DAO组件...

    bbossgroups 3.1SQLExecutor组件ap使用实例

    例如,使用`executeQuery()`方法可以执行查询语句,它接受SQL语句和一个`RowHandler`对象作为参数,`RowHandler`用于处理每行查询结果。返回的结果通常是一个自定义的对象列表或`ListInfo`对象,`ListInfo`通常用于...

    bbossgroups 3.1培训教程.ppt

    4. **2011年**:标签库与MVC框架融合,持久层API改进,增加了SQL配置管理和动态SQL功能;Mvc框架全面加强,包括数据绑定、页面跳转和异常处理机制。 ### 框架组成 bbossgroups 3.1主要由以下部分构成: 1. **AOP/...

    Bbossgroups体系架构.ppt

    6. **持久层框架**:Bboss提供了持久层框架,简化了数据库操作,支持SQL动态生成和ORM映射,与各种主流数据库如MySQL、Oracle等良好兼容。 7. **分布式事件框架**:通过JGroups、Minetty、RMI、HTTP、JMS、...

    bbossgroups 3.0 培训教程

    1. **安装与配置**:如何下载并安装bbossgroups 3.0,以及配置相关的环境变量和启动参数。 2. **基本概念**:了解bbossgroups中的关键组件,如消息代理、消费者、生产者等,以及它们之间的交互方式。 3. **开发...

    bbossgroups 3.0 发布,国内首款集

    近日,bbossgroups 3.0 正式发布,这款国内首款集AOP(面向切面编程)、MVC(模型-视图-控制器)、Persistent(持久化)、JSP Taglib(JSP 标签库)、分布式RPC服务及分布式事件框架于一体的J2EE开发框架,为开发者...

    企业级J2EE开源框架bboss

    2. **数据库操作**:BBoss提供了便捷的数据访问层(DAO),支持SQL动态生成、事务管理以及多种数据库的兼容性,使得数据库操作变得简单且高效。 3. **服务治理**:框架内置了服务注册与发现机制,可以实现微服务...

    bboss mvc 通过jsonp实现跨站跨域远程访问

    提供的压缩包文件"bbossgroups 框架培训教程.pptx"和"Bbossgroups演示文档.pptx"可能包含了更多关于bboss mvc框架的详细信息和使用示例,包括如何配置和使用JSONP等特性。建议查阅这些文档以获取更深入的理解。 总...

    基于Java和Shell的bboss session framework跨域集群节点会话共享与监控设计源码

    该框架包含222个文件,包括164个Java源文件、14个XML配置文件、6个Gradle构建文件、6个JAR包文件、6个属性文件等,旨在支持跨域应用集群节点的会话共享与监控,并提供示例站点http://session.bbossgroups.com/...

    2013年度中国优秀开源项目列表

    12. bboss:bbossgroups是首个集成AOP、MVC、持久层、JSP标签库、分布式RPC服务和序列化组件的JavaEE企业级开发框架。 13. BeeFramework:BeeFramework是iOS平台的快速开发框架,特点包括易学易用、组件丰富,提供...

    bboss-elastic-tran:bboss 数据同步工具

    弹性Tran老板数据交换模块使用文档: : Bboss是一个很好的Elasticsearch Java Rest客户端。 它运行并访问像mybatis这样的elasticsearch来关联数据库。环境要求JDK要求:JDK 1.7+ Elasticsearch版本要求:1.X,2.X,5...

    java版地图源码-bboss-elasticsearch:最好的elasticsearch高级javarest客户端api-----bbos

    它以类似于mybatis的方式操作和访问elasticsearch。 环保要求 JDK 要求:JDK 1.7+ Elasticsearch 版本要求:1.X,2.X,5.X,6.X,7.x,+ Spring Booter 1.x,2.x,+ bbos 降 老板 弹性搜索 弹簧靴 全部 1.x 1.x,2.x 全部 2....

Global site tag (gtag.js) - Google Analytics