`
itfirefly
  • 浏览: 5009 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

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


分享到:
评论

相关推荐

    bboss mvcdemo 下载地址

    2. **视图(View)**:视图层是用户界面,BBoss MVCDemo允许开发者使用JSP、FreeMarker、Velocity等模板引擎来创建动态页面。视图与控制器通过请求参数进行交互,展示由控制器处理后传递的数据。 3. **控制器...

    企业级J2EE开源框架bboss

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

    bboss会话共享培训文档

    例如,在一个域下的多个子应用之间,使用bboss可以共享认证信息,用户登录其中一个应用后,无需再次登录即可访问其他应用。 文档中提到了会话共享需要解决的五大技术难题: 1. session数据序列化问题,即如何有效...

    bboss ioc配置文件中使用外部属性文件介绍

    本文将详细介绍如何在BBoss的IOC配置文件中引用外部属性文件,以便更好地管理和动态配置应用。 首先,BBoss的IOC配置文件通常是一个XML文件,比如`bboss-ioc.xml`,在这个文件中我们可以声明并配置各种bean。当需要...

    bboss-db-elasticsearch-tool-master_java_

    4. **动态SQL**:允许在运行时构建和执行SQL,增加了代码的灵活性。 5. **查询优化**:可能包含SQL查询优化,如自动添加索引、避免全表扫描等。 6. **数据迁移工具**:方便在不同数据库间进行数据迁移或同步。 ...

    springboot整合bboss es增删改查测试demo代码

    本实例是一个基于bboss es spring boot starter的demo maven工程,可供spring boot项目集成bboss elasticsearch rest client参考 展示了通过spring boot管理单集群功能和管理多集群功能 单集群测试用例:...

    bboss-elasticsearch开发环境搭建和开发入门视频教程.

    2. **bboss elasticsearch开发入门教程.wmv**: 通过实例演示,讲解如何使用BBoss进行索引操作、数据插入、查询和更新,帮助初学者快速上手。 **六、资料阅读** "说明.txt" 文件可能包含了关于这些教程的详细步骤和...

    springboot集成ElasticsearchBboss调用Elasticsearch.md

    springboot集成ElasticsearchBboss调用Elasticsearch的案例分享

    bboss+es基本操作示例.zip

    在`demo`这个文件中,可能包含了使用bboss操作Elasticsearch的基本示例代码。例如,创建索引、插入文档、执行查询等。通常,这些示例会展示如何初始化bboss客户端,如何构造和执行DSL查询,以及如何处理返回结果。 ...

    bboss elasticsearch-5.7.8.rar

    8. `cglib-nodep-3.1.jar`:CGLIB是一个代码生成库,常用于Java代理和动态类生成,可能在BBoss Elasticsearch中用于创建Elasticsearch操作的动态代理类。 通过这些库的组合,BBoss Elasticsearch提供了一种高效且...

    由 bboss 开源的数据采集&流批一体化工具,提供数据采集、数据清洗转换处理和数据入库以及数据指标统计计算流批一体化处理功能

    **bboss-datatran** 是一个由 **bboss** 社区开源的高效数据处理工具,专注于数据采集、数据清洗转换以及数据入库等任务。...通过深入学习和使用bboss-datatran,用户可以提升数据处理效率,更好地挖掘数据的价值。

    bboss 安全认证过滤器功能介绍

    3. **销毁清理**:当应用关闭或过滤器不再使用时,`destroy()`方法会被调用,用于清理资源。 在BBoss框架中,安全认证通常涉及以下步骤: 1. **用户登录**:用户通过提交用户名和密码发起登录请求,服务器验证这些...

    bboss persistent 1.0.2中方便地实现大字段(clob,blob)的处理

    3. **事务管理**:在TestTransaction.sql这个文件名中,我们可以推测BBoss Persistent也包含了事务管理功能。在处理CLOB和BLOB数据时,事务是至关重要的,因为它们确保了数据的一致性和完整性。如果在操作过程中发生...

    bboss-soa.jar

    官方版本,亲测可用

    bboss会话共享培训文档分享

    在存储服务方面,采用Redis相较于Mongodb在性能上表现更优,但Redis作为非真正的Nosql数据库,其提供的监控统计功能相对薄弱。在实际生产环境中,bbosssession的表现良好,并能够快速响应各种会话管理需求。 四、...

    基于bboss新版平台项目环境搭建和代码工具使用视频教程.rar

    "基于bboss新版平台项目环境搭建和代码工具使用视频教程"提供了一套详细的指导,旨在帮助开发者快速掌握bboss新版本平台的相关操作。bboss,全称为Business Basic Open Source,是一个开源的企业级开发框架,它为...

    Elasticsearch rest client bboss介绍-Elastic2018中国开发者大会演讲稿.pptx

    Elasticsearch rest client bboss介绍-Elastic2018中国开发者大会演讲稿

    基于Java的bboss开源框架设计源码

    该项目是基于Java语言的bboss开源框架构建的设计源码,包含3075个文件,涵盖2700个Java源文件、85个XML配置文件、52个HTML文件、39个properties和prefs文件、23个GIF图片、18个Gradle文件、17个gitignore文件、10个...

Global site tag (gtag.js) - Google Analytics