- 浏览: 695848 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (364)
- quick start (57)
- bboss aop (43)
- bboss mvc (48)
- bboss persistent (96)
- bboss taglib (30)
- bboss event (10)
- bbossgroups (52)
- bboss (32)
- bboss会话共享 (17)
- bboss rpc (7)
- bboss 国际化 (5)
- bboss 序列化 (9)
- bboss cxf webservice (8)
- bboss hessian (3)
- bboss 安全认证SSO (15)
- bboss 工作流 (6)
- 平台 (18)
- bboss quartz (3)
- 杂谈 (5)
- 大数据 (1)
- bboss elastic (24)
- bboss http (1)
- bboss kafka (1)
- Elasticsearch Scroll和Slice Scroll查询API使用案例 (1)
最新评论
-
qianhao123:
...
采用gradle构建和发布bboss方法介绍 -
qianhao123:
[img][/img]
采用gradle构建和发布bboss方法介绍 -
yin_bp:
欢迎大家参与working
高性能elasticsearch ORM开发库使用介绍 -
qq641879434:
万分感谢
bboss 持久层sql xml配置文件编写和加载方法介绍 -
yin_bp:
qq641879434 写道怎么设置配置文件 可以查看执行的S ...
bboss 持久层sql xml配置文件编写和加载方法介绍
bboss 持久层sql语句中一维/多维数组类型变量、list变量、map变量、bean对象变量使用说明
本文介绍bboss 持久层sql语句中一维/多维数组类型变量、list变量、map变量、bean对象变量使用方法,该功能在bboss 3.5.2版本及后续版本提供。
很高兴地告诉大家,bboss模板sql中已经可以处理对象、数组、list、map类型的变量了,bboss 能够快速分析出这些变量,并将sql语句转换为预编译sql语句执行。
先看一个处理数组的实例:
变量格式由以前的#[aaa]扩展为以下几种格式:
#[aaa] 简单的变量属性引用
#[aaa[0]] (一维数组中的第一个元素,或者list中的第一个元素,具体取决于aaa变量是一个数组还是list对象)
#[aaa[0][1]](二维数组中的第一维度的第二个个元素,或者list中的第一个元素的数第二个组元素或者list第第二个元素,具体取决于aaa变量是每一维度是数组还是list对象)
#[aaa[0][1]...](多维数组中的第一维度的第二个个元素的n维元素,或者list中的第一个元素的第二个数组元素或者list第二个元素的n维元素引用,具体取决于aaa变量是每一维度是数组还是list对象)
#[aaa[key]] 引用map对象aaa中key所对应的value数据,引用map元素的等价方法#[aaa->key]
#[aaa[key][0]] 引用map对象aaa中key所对应的value的第一个元素,取决于value的类型是数组还是list,等价引用方法#[aaa->key[0]]
#[aaa->bb] 如果aaa是一个bean对象,这个变量格式表示了对aaa对象的bb属性的引用,如果aaa是一个map对象,这个变量格式表示了对aaa对象的key为bb的元素值引用
以上就是全部的类型,每种类型可以任意组合
以上就是全部的类型,每种类型可以任意组合,例如:
#[aaa->bb[0]]
#[aaa[0]->bb[0]]
#[aaa[0]->bb[0]->cc[keyname]]
#[aaa[0]->bb->cc[keyname]]
等等
下面在看几个简单的实例:
1.foreach处理数组的实例
java方法
sql配置示例:
需要注意的是,需要把resources/velocity.properties文件相关配置项按照以下配置配置:
directive.foreach.counter.name = velocityCount
directive.foreach.counter.initial.value = 0
说明:
directive.foreach.counter.name
用来定义foreach循环递增变量名称,通过velocity.properties文件中全局指定这个变量名称,默认为velocityCount,项目开发之初就要确定这个变量名称,后续不能更改。
directive.foreach.counter.initial.value
用来定义循环变量velocityCount(名称由directive.foreach.counter.name属性指定)的初始值,默认从1开始,项目开发之初应将其调整为0
2.bean类型变量属性引用处理实例
3.List类型变量元素引用处理实例
4.Map类型变量元素引用处理实例
最新版本源码可以到github中下载,下载地址如下:
https://github.com/bbossgroups/bbossgroups-3.5
源码构建方法请参考文章:
bboss 版本ant构建方法
很高兴地告诉大家,bboss模板sql中已经可以处理对象、数组、list、map类型的变量了,bboss 能够快速分析出这些变量,并将sql语句转换为预编译sql语句执行。
先看一个处理数组的实例:
String[] FIELDNAMES = new String[]{"ss","testttt","sdds","insertOpreation","ss556"}; String deleteAllsql = "delete from LISTBEAN where FIELDNAME in (#[FIELDNAMES[0]],#[FIELDNAMES[1]],#[FIELDNAMES[2]],#[FIELDNAMES[3]],#[FIELDNAMES[4]])"; Map conditions = new HashMap(); conditions.put("FIELDNAMES", FIELDNAMES); SQLExecutor.deleteBean(deleteAllsql, conditions);
变量格式由以前的#[aaa]扩展为以下几种格式:
#[aaa] 简单的变量属性引用
#[aaa[0]] (一维数组中的第一个元素,或者list中的第一个元素,具体取决于aaa变量是一个数组还是list对象)
#[aaa[0][1]](二维数组中的第一维度的第二个个元素,或者list中的第一个元素的数第二个组元素或者list第第二个元素,具体取决于aaa变量是每一维度是数组还是list对象)
#[aaa[0][1]...](多维数组中的第一维度的第二个个元素的n维元素,或者list中的第一个元素的第二个数组元素或者list第二个元素的n维元素引用,具体取决于aaa变量是每一维度是数组还是list对象)
#[aaa[key]] 引用map对象aaa中key所对应的value数据,引用map元素的等价方法#[aaa->key]
#[aaa[key][0]] 引用map对象aaa中key所对应的value的第一个元素,取决于value的类型是数组还是list,等价引用方法#[aaa->key[0]]
#[aaa->bb] 如果aaa是一个bean对象,这个变量格式表示了对aaa对象的bb属性的引用,如果aaa是一个map对象,这个变量格式表示了对aaa对象的key为bb的元素值引用
以上就是全部的类型,每种类型可以任意组合
以上就是全部的类型,每种类型可以任意组合,例如:
#[aaa->bb[0]]
#[aaa[0]->bb[0]]
#[aaa[0]->bb[0]->cc[keyname]]
#[aaa[0]->bb->cc[keyname]]
等等
下面在看几个简单的实例:
1.foreach处理数组的实例
java方法
public List<CandidateGroup> getGroupInfoByNames(String groups) { try { String[] groupnames = groups.split(","); List<CandidateGroup> list = null; if (groupnames.length > 0) { Map<String, String[]> groups_ = new HashMap<String, String[]>();//定义包含变量的map对象,key为变量名称,value为变量值 groups_.put("groups", groupnames);//将数组groupnames设置到map对象中,key为groups,我们在后面的foreach循环中会通过groups来引用groupnames中的每个数据 list = executor.queryListBean(CandidateGroup.class, "selectGroupInfoByNames", groups_);//执行查询 } return list; } catch (Exception e) { e.printStackTrace(); } return null; }
sql配置示例:
<property name="selectGroupInfoByNames"> <![CDATA[ select #foreach($filed in $groupfileds) #if($velocityCount == 0) $filed #else ,$filed #end #end from td_sm_group g where g.group_name in ( #foreach($group in $groups) #if($velocityCount == 0) #[groups[$velocityCount]] #else ,#[groups[$velocityCount]] #end #end ) ]]> </property>
需要注意的是,需要把resources/velocity.properties文件相关配置项按照以下配置配置:
directive.foreach.counter.name = velocityCount
directive.foreach.counter.initial.value = 0
说明:
directive.foreach.counter.name
用来定义foreach循环递增变量名称,通过velocity.properties文件中全局指定这个变量名称,默认为velocityCount,项目开发之初就要确定这个变量名称,后续不能更改。
directive.foreach.counter.initial.value
用来定义循环变量velocityCount(名称由directive.foreach.counter.name属性指定)的初始值,默认从1开始,项目开发之初应将其调整为0
2.bean类型变量属性引用处理实例
@Test public void beanVariableTest() throws SQLException { /** * 删除数据,数据条件由数组FIELDNAMES,这里主要演示如果通过bean属性引用变量语法获取数据项 * 后台转换为预编译执行 */ insertOpera(); BeanVariable beanvariable = new BeanVariable(); beanvariable.setBean(new Bean()); String deleteAllsql = "delete from LISTBEAN where FIELDNAME in (#[bean->fss],#[bean->ftestttt],#[bean->fsdds]," + "#[bean->finsertOpreation],#[bean->fss556])"; SQLExecutor.deleteBean(deleteAllsql, beanvariable); }
3.List类型变量元素引用处理实例
@Test public void listVariableTest() throws SQLException { /** * 删除数据,数据条件由list 对象FIELDNAMES提供,这里主要演示如何通过list变量语法获取数据项 * 后台转换为预编译执行 */ insertOpera(); List<String> FIELDNAMES = new ArrayList<String>(); FIELDNAMES.add("ss"); FIELDNAMES.add("testttt"); FIELDNAMES.add("sdds"); FIELDNAMES.add("insertOpreation"); FIELDNAMES.add("ss556"); String deleteAllsql = "delete from LISTBEAN where FIELDNAME in (#[FIELDNAMES[0]],#[FIELDNAMES[1]],#[FIELDNAMES[2]],#[FIELDNAMES[3]],#[FIELDNAMES[4]])"; Map<String,List<String> > conditions = new HashMap<String,List<String> >(); conditions.put("FIELDNAMES", FIELDNAMES); SQLExecutor.deleteBean(deleteAllsql, conditions); }
4.Map类型变量元素引用处理实例
@Test public void mapVariableTest() throws SQLException { /** * 删除数据,数据条件由FIELDNAMES为名称索引的map对象中,这里主要演示如果通过map变量获取数据项 * 后台转换为预编译执行 */ insertOpera(); Map<String,String> datas = new HashMap<String,String>(); datas.put("sskey", "ss"); datas.put("testtttkey", "testttt"); datas.put("sddskey", "sdds"); datas.put("insertOpreationkey", "insertOpreation"); datas.put("ss556key", "ss556"); String deleteAllsql = "delete from LISTBEAN where FIELDNAME in " + "(#[FIELDNAMES[sskey]],#[FIELDNAMES[testtttkey]],#[FIELDNAMES[sddskey]],#[FIELDNAMES[insertOpreationkey]]," + "#[FIELDNAMES[ss556key]])"; Map conditions = new HashMap(); conditions.put("FIELDNAMES", datas); SQLExecutor.deleteBean(deleteAllsql, conditions); }
最新版本源码可以到github中下载,下载地址如下:
https://github.com/bbossgroups/bbossgroups-3.5
源码构建方法请参考文章:
bboss 版本ant构建方法
发表评论
-
bboss 持久层数据源引用外部属性配置介绍
2018-12-29 21:47 1085bboss 持久层数据源外部属性配置引用介绍 bboss持久 ... -
bboss持久层开启和关闭自带主键机制
2017-08-17 11:56 754bboss持久层开启和关闭自带主键机制 请访问文档: bbos ... -
bboss高性能db批处理功能使用方法介绍
2017-05-14 21:28 2139bboss持久层在v5.0.3.5中新增简单的高效的db批处理 ... -
bboss持久层公共sql片段定义和引用方法说明
2017-03-03 13:05 1124bboss持久层公共sql片段定义和引用方法说明 在配置sq ... -
最新版本mysql jdbc驱动包获取表定义信息空指针异常处理方法
2016-12-15 10:24 1360在使用最新的mysql-connector-java 6.0. ... -
持久层快速入门系列一
2016-08-19 13:00 1261持久层快速入门 先在应用中导入bboss 持久层(bboss ... -
bboss与spring中配置和引用bboss数据源和bboss dao组件方法说明
2016-08-10 16:04 918首先在项目中导入bboss 持久层包: maven坐标 & ... -
bboss 持久层sql xml配置文件编写和加载方法介绍
2016-04-05 13:14 1672bboss 持久层sql xml配置文件编写和加载方法介绍 通 ... -
bboss持久层设置数据库查询fetchsize参数方法
2015-11-06 11:54 1017bboss持久层设置数据库查询fetchsize参数方法 j ... -
bboss持久层快速入门教程
2015-09-19 13:49 1589bboss持久层快速入门教程,快速搭建bboss持久层的开 ... -
bboss持久层数据库适配器编写和注册方法
2015-02-06 15:21 977bboss持久层数据库适配器编写和注册方法 bboss持久层默 ... -
bboss模糊查询、动态sql、批处理资料荟萃
2015-01-30 12:03 2369bboss模糊查询、动态sql、批处理资料荟萃 bboss持 ... -
bboss持久层查询元数据缓存机制开启方法
2014-11-18 12:03 1022bboss持久层为了提升数据库查询操作性能,提供了对查 ... -
bboss开发、模块工程目录结构及功能说明
2014-10-15 19:46 4882基于bboss开发项目说明 ... -
bboss内置数据源apache dbcp与druid数据源切换方法
2014-09-23 09:59 1388bboss内置数据源与druid数据源切换方法 bboss内置 ... -
bboss持久层多数据源配置及多数据库事务控制使用方法
2014-05-11 20:24 2974bboss持久层多数据源配置及使用方法,持久层框架及demo下 ... -
bboss持久层demo使用说明
2014-03-11 09:38 1210持久层案例可以用svn客户端下载eclipse工程,导入ecl ... -
bboss持久层More分页查询API使用介绍
2013-10-18 16:17 1476为了更好地提高数据库分页查询的效率,bboss持久层在Conf ... -
bboss持久层操作Clob和Blob字段示例
2013-09-09 13:29 1230bboss持久层操作Clob和Blob非常方便,基于bboss ... -
bboss持久层ormaping机制详解
2013-09-04 21:04 1157bboss持久层针对db操作即提供了原始sql语句的支持,又提 ...
相关推荐
BBoss MVCDemo 是一个基于Java的企业级应用框架,它主要为开发者提供了一种高效、灵活的MVC(Model-View-Controller)开发模式。这个框架的目的是简化企业级Web应用的开发流程,提高开发效率,并且具备良好的可扩展...
bboss-plugins project.包含kafka、log4j、spring、dubbo、activemq、word转pdf、pdf转swf项目,持久层hibernate/hibernate4插件
BBoss是一个轻量级的企业级应用开发框架,提供了IOC(Inversion of Control)功能,使得对象之间的依赖关系可以通过配置文件进行管理。本文将详细介绍如何在BBoss的IOC配置文件中引用外部属性文件,以便更好地管理和...
Domain Specific Language是bboss支持的一种面向领域的特定语言,允许开发者使用JSON格式定义查询和更新语句。DSL语法丰富,支持全文搜索、范围查询、多条件组合查询、聚合分析等多种功能。bboss的DSL支持使开发者...
在C++代码部分,可以看到一个名为`proc`的类,该类继承自`Db2Tools`,并且有一个`busiLogic`方法,其中使用了嵌入式SQL(EXEC SQL)来声明变量和定义SQL语句。这里虽然没有展示具体的SQL语句,但可以看出,`...
【bboss-db-elasticsearch-tool-master_java_】是一个Java ORM(对象关系映射)框架,它在功能上超越了MyBatis,提供了对多种数据库的广泛支持,包括MySQL、Oracle、PostgreSQL、SQLServer、DB2、DM以及MongoDB。...
bboss会话共享是一种分布式会话管理技术,它针对在集群环境下应用部署时如何解决会话数据丢失和单点登录问题提供了专门的解决方案。根据提供的文档内容,我们可以详细探讨bboss会话共享涉及的关键知识点。 首先,...
该项目为bboss插件集的Java设计源码,总计277个文件,涵盖163个Java源文件、22个XML配置文件、14个Gradle构建脚本、13个Git忽略规则、13个属性文件以及少量的JavaScript、HTML、CSS和Shell脚本,主要用于文档转换和...
BBoss Persistent是一个轻量级的持久层框架,它提供了方便的方式来处理这些大字段。本文将深入探讨在BBoss Persistent 1.0.2中如何高效地管理CLOB和BLOB数据。 首先,CLOB用于存储大量的文本数据,如长篇文章或XML...
2. **数据库操作**:BBoss提供了便捷的数据访问层(DAO),支持SQL动态生成、事务管理以及多种数据库的兼容性,使得数据库操作变得简单且高效。 3. **服务治理**:框架内置了服务注册与发现机制,可以实现微服务...
bboss框架集成了AOP/iOC、MVC、持久化标签库、RPC、事件处理、Bean-XML序列化等多种功能。本项目基于bboss框架构建了数据采集ETL工具、流批一体化Stream工具、Elasticsearch客户端工具和WebSession共享框架等应用。
1. **创建索引**: 使用 BBoss 提供的 API 创建索引,指定映射(Mapping)以便对数据类型进行定义。 2. **插入数据**: 将业务数据插入到索引中,BBoss 提供了批量插入功能,可以高效处理大量数据。 3. **查询数据**: ...
本实例是一个基于bboss es spring boot starter的demo maven工程,可供spring boot项目集成bboss elasticsearch rest client参考 展示了通过spring boot管理单集群功能和管理多集群功能 单集群测试用例:...
在IT行业中,开发环境的搭建和代码工具的熟练使用是每个开发者的基本技能。"基于bboss新版平台项目环境搭建和代码工具使用视频教程"提供了一套详细的指导,旨在帮助开发者快速掌握bboss新版本平台的相关操作。bboss...
6. `bboss-velocity-5.5.0.jar`:Velocity是Apache的一个模板引擎,用于生成动态内容,可能在BBoss Elasticsearch中用于构建自定义模板,生成用于导入Elasticsearch的JSON格式数据。 7. `bboss-core-5.5.0.jar`:这...
在数据结构方面,测试使用了一个名为`Person`的类,该类包含了各种类型的字段,如`PhoneNumber`对象、字符串数组、列表、映射和集合。这有助于模拟真实世界的复杂对象结构,并评估两个库在处理这些结构时的性能。 ...
弹性Tran老板数据交换模块使用文档: : Bboss是一个很好的Elasticsearch Java Rest客户端。 它运行并访问像mybatis这样的elasticsearch来关联数据库。环境要求JDK要求:JDK 1.7+ Elasticsearch版本要求:1.X,2.X,5...
bboss功能涵盖ioc,mvc,jsp自定义标签库,持久层,全局事务托管,安全认证,SSO,web会话共享,cxfwebservice服务发布和管理,hessian服务发布和管理等功能。另外还提供了符合中国式自由流的bboss activiti工作流...