- 浏览: 697778 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (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配置文件编写和加载方法介绍
bbossgroups中提供的分页查询方法,非常简单,也非常的高效,本文介绍一个基于行处理器的PreparedDBUtil的案例。
java值对象:
在bbossgroups持久层框架中,主要是通过数据库适配器来实现不同数据库产品的分页查询算法,框架缺省为每种数据库提供分页算法实现(基本上使用每种数据库的最优算法),用户可以扩展这些适配器来实现自己的分页算法,以oracle为列,编写自己的适配器覆盖默认的public String getDBPagineSql(String sql, long offset, int maxsize)方法:
写好后将com.frameworkset.orm.adaptors.MyOracle配置到poolman.xml文件中既可:
PreparedDBUtil dbUtil = new PreparedDBUtil(); try { dbUtil.preparedSelect("select * from testnewface where object_id < ?",0,10);//分页查询方法 dbUtil.setInt(1, 100); //下面使用到了行处理器,如果TestNewface对象中的属性名称和查询表字段的名称一致 //(忽略大小写),则不需要行处理器,直接执行查询即可: //List list = dbUtil.executePreparedForList(TestNewface.class); List list = dbUtil.executePreparedForList(TestNewface.class,new RowHandler<TestNewface>() { public void handleRow(TestNewface t, Record record) { try { t.setCREATED(record.getDate("created")); t.setDATA_OBJECT_ID(record.getInt("DATA_OBJECT_ID")); //........设置其他的属性 } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("row handler:"+t); } }); int totalsize = dbUtil.getTotalSize();//获得总记录数 for(int i = 0; i < list.size()/*list.size()当页记录数*/; i ++)//遍历当页记录 { TestNewface testNewface = (TestNewface)list.get(i); ... ... } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }
java值对象:
package com.frameworkset.common; import java.util.Date; /** * * <p>Title: TestNewface.java</p> * * <p>Description: </p> * * <p>Copyright: Copyright (c) 2007</p> * @Date Nov 4, 2008 2:51:17 PM * @author biaoping.yin * @version 1.0 */ public class TestNewface { String OWNER ; String OBJECT_NAME ; String SUBOBJECT_NAME ; int OBJECT_ID ; int DATA_OBJECT_ID ; String OBJECT_TYPE ; Date CREATED ; Date LAST_DDL_TIME ; String TIMESTAMP ; String STATUS ; String TEMPORARY ; String GENERATED ; String SECONDARY ; public String getOWNER() { return OWNER; } public void setOWNER(String owner) { OWNER = owner; } public String getOBJECT_NAME() { return OBJECT_NAME; } public void setOBJECT_NAME(String object_name) { OBJECT_NAME = object_name; } public String getSUBOBJECT_NAME() { return SUBOBJECT_NAME; } public void setSUBOBJECT_NAME(String subobject_name) { SUBOBJECT_NAME = subobject_name; } public int getOBJECT_ID() { return OBJECT_ID; } public void setOBJECT_ID(int object_id) { OBJECT_ID = object_id; } public int getDATA_OBJECT_ID() { return DATA_OBJECT_ID; } public void setDATA_OBJECT_ID(int data_object_id) { DATA_OBJECT_ID = data_object_id; } public String getOBJECT_TYPE() { return OBJECT_TYPE; } public void setOBJECT_TYPE(String object_type) { OBJECT_TYPE = object_type; } public Date getCREATED() { return CREATED; } public void setCREATED(Date created) { CREATED = created; } public Date getLAST_DDL_TIME() { return LAST_DDL_TIME; } public void setLAST_DDL_TIME(Date last_ddl_time) { LAST_DDL_TIME = last_ddl_time; } public String getTIMESTAMP() { return TIMESTAMP; } public void setTIMESTAMP(String timestamp) { TIMESTAMP = timestamp; } public String getSTATUS() { return STATUS; } public void setSTATUS(String status) { STATUS = status; } public String getTEMPORARY() { return TEMPORARY; } public void setTEMPORARY(String temporary) { TEMPORARY = temporary; } public String getGENERATED() { return GENERATED; } public void setGENERATED(String generated) { GENERATED = generated; } public String getSECONDARY() { return SECONDARY; } public void setSECONDARY(String secondary) { SECONDARY = secondary; } }
在bbossgroups持久层框架中,主要是通过数据库适配器来实现不同数据库产品的分页查询算法,框架缺省为每种数据库提供分页算法实现(基本上使用每种数据库的最优算法),用户可以扩展这些适配器来实现自己的分页算法,以oracle为列,编写自己的适配器覆盖默认的public String getDBPagineSql(String sql, long offset, int maxsize)方法:
package com.frameworkset.orm.adaptors; import com.frameworkset.orm.adapter.DBOracle; public class MyOracle extends DBOracle { public String getDBPagineSql(String sql, long offset, int maxsize) { StringBuffer ret = new StringBuffer("select ss1.* from (select tt1.*,rownum rowno_ from (").append(sql).append( ") tt1 where rownum <= ").append((offset + maxsize)).append(") ss1 where ss1.rowno_ >= ").append( (offset + 1)); return ret.toString(); } }
写好后将com.frameworkset.orm.adaptors.MyOracle配置到poolman.xml文件中既可:
<?xml version="1.0" encoding="utf-8"?> <poolman> <!--注意: dbtype名称可以是一个别名,或者直接是对应数据库的驱动包路径,例如:oracle.jdbc.driver.OracleDriver 默认的别名: [*]as400 [*]db2app [*]db2net [*]cloudscape [*]hypersonic [*]interbase [*]instantdb [*]mssql [*]mysql [*]mariadb [*]oracle [*]postgresql [*]sapdb [*]sybase [*]weblogic [*]axion [*]informix [*]odbc [*]msaccess [*]derby [*]sqlite 如果dbtype使用的别名与默认别名重复,则将覆盖默认的数据库适配器,如果不想,则需要指定其他的别名,比如下面的dbtype="myoracle",这样我们要引用这个适配器的话,需要在datasource中明确指定这个别名: <datasource> <dbtype>myoracle</dbtype> </datasource> --> <adaptor dbtype="myoracle">com.frameworkset.orm.adaptors.MyOracle</adaptor> <datasource> <dbname>bspf</dbname> <loadmetadata>false</loadmetadata> <jndiName>oracle_datasource_jndiname</jndiName> <autoprimarykey>false</autoprimarykey> <cachequerymetadata>true</cachequerymetadata> <driver>oracle.jdbc.driver.OracleDriver</driver> <url>jdbc:oracle:thin:@//10.0.15.51:1521/orcl</url> <username>testpdp1</username> <password>testpdp1</password> <txIsolationLevel>READ_COMMITTED</txIsolationLevel> <poolPreparedStatements>false</poolPreparedStatements> <initialConnections>2</initialConnections> <minimumSize>2</minimumSize> <maximumSize>10</maximumSize> <queryfetchsize>10000</queryfetchsize> <!-- 是否检测超时链接(事务超时链接) true-检测,如果检测到有事务超时的链接,系统将强制回收(释放)该链接 false-不检测,默认值 --> <removeAbandoned>false</removeAbandoned> <!-- 链接使用超时时间(事务超时时间) Set max idle Times in seconds ,if exhaust this times the used connection object will be Abandoned removed if removeAbandoned is true. default value is 300 seconds. see removeAbandonedTimeout parameter in commons dbcp. 单位:秒 --> <userTimeout>300</userTimeout> <!-- 系统强制回收链接时,是否输出后台日志 true-输出,默认值 false-不输出 --> <logAbandoned>true</logAbandoned> <!-- 对应属性:timeBetweenEvictionRunsMillis the amount of time (in milliseconds) to sleep between examining idle objects for eviction --> <skimmerFrequency>120000</skimmerFrequency> <!--对应于minEvictableIdleTimeMillis 属性: minEvictableIdleTimeMillis the minimum number of milliseconds an object can sit idle in the pool before it is eligable for evcition 单位:秒 空闲链接回收时间,空闲时间超过指定的值时,将被回收 --> <connectionTimeout>240000</connectionTimeout> <!-- numTestsPerEvictionRun the number of idle objects to examine per run within the idle object eviction thread (if any) 每次回收的链接个数 --> <shrinkBy>5</shrinkBy> <!-- /** * 检测空闲链接处理时,是否对空闲链接进行有效性检查控制开关 * true-检查,都检查到有无效链接时,直接销毁无效链接 * false-不检查,缺省值 */ --> <testWhileidle>true</testWhileidle> <!-- 定义数据库主键生成机制 缺省的采用系统自带的主键生成机制, 外步程序可以覆盖系统主键生成机制 由值来决定 auto:自动,一般在生产环境下采用该种模式, 解决了单个应用并发访问数据库添加记录产生冲突的问题,效率高,如果生产环境下有多个应用并发访问同一数据库时,必须采用composite模式 composite:结合自动和实时从数据库中获取最大的主键值两种方式来处理,开发环境下建议采用该种模式, 解决了多个应用同时访问数据库添加记录时产生冲突的问题,效率相对较低, 如果生产环境下有多个应用并发访问同一数据库时,必须采用composite模式 --> <keygenerate>composite</keygenerate> <!--poolman的日志信息输出改用log4j来输出到日志文件,相关的配置见log4j.properties文件--> <!--<logFile>dbaccess.log</logFile> <debugging>true</debugging>--> <!-- 请求链接时等待时间,单位:秒 客服端程序请求链接等待时间超过指定值时,后台包等待超时异常 --> <maxWait>60</maxWait> <!-- 链接有效性检查sql语句 --> <validationQuery>select 1 from dual</validationQuery> <showsql>true</showsql> </datasource> </poolman>
发表评论
-
bboss 持久层数据源引用外部属性配置介绍
2018-12-29 21:47 1099bboss 持久层数据源外部属性配置引用介绍 bboss持久 ... -
bboss持久层开启和关闭自带主键机制
2017-08-17 11:56 755bboss持久层开启和关闭自带主键机制 请访问文档: bbos ... -
bboss高性能db批处理功能使用方法介绍
2017-05-14 21:28 2147bboss持久层在v5.0.3.5中新增简单的高效的db批处理 ... -
bboss持久层公共sql片段定义和引用方法说明
2017-03-03 13:05 1130bboss持久层公共sql片段定义和引用方法说明 在配置sq ... -
最新版本mysql jdbc驱动包获取表定义信息空指针异常处理方法
2016-12-15 10:24 1366在使用最新的mysql-connector-java 6.0. ... -
持久层快速入门系列一
2016-08-19 13:00 1266持久层快速入门 先在应用中导入bboss 持久层(bboss ... -
bboss与spring中配置和引用bboss数据源和bboss dao组件方法说明
2016-08-10 16:04 922首先在项目中导入bboss 持久层包: maven坐标 & ... -
bboss 持久层sql xml配置文件编写和加载方法介绍
2016-04-05 13:14 1699bboss 持久层sql xml配置文件编写和加载方法介绍 通 ... -
bboss持久层设置数据库查询fetchsize参数方法
2015-11-06 11:54 1018bboss持久层设置数据库查询fetchsize参数方法 j ... -
bboss持久层快速入门教程
2015-09-19 13:49 1594bboss持久层快速入门教程,快速搭建bboss持久层的开 ... -
bboss持久层数据库适配器编写和注册方法
2015-02-06 15:21 978bboss持久层数据库适配器编写和注册方法 bboss持久层默 ... -
bboss模糊查询、动态sql、批处理资料荟萃
2015-01-30 12:03 2375bboss模糊查询、动态sql、批处理资料荟萃 bboss持 ... -
bboss持久层查询元数据缓存机制开启方法
2014-11-18 12:03 1024bboss持久层为了提升数据库查询操作性能,提供了对查 ... -
bboss开发、模块工程目录结构及功能说明
2014-10-15 19:46 4912基于bboss开发项目说明 ... -
bboss内置数据源apache dbcp与druid数据源切换方法
2014-09-23 09:59 1391bboss内置数据源与druid数据源切换方法 bboss内置 ... -
bboss持久层多数据源配置及多数据库事务控制使用方法
2014-05-11 20:24 2980bboss持久层多数据源配置及使用方法,持久层框架及demo下 ... -
bboss持久层demo使用说明
2014-03-11 09:38 1219持久层案例可以用svn客户端下载eclipse工程,导入ecl ... -
bboss持久层More分页查询API使用介绍
2013-10-18 16:17 1486为了更好地提高数据库分页查询的效率,bboss持久层在Conf ... -
bboss持久层操作Clob和Blob字段示例
2013-09-09 13:29 1232bboss持久层操作Clob和Blob非常方便,基于bboss ... -
bboss持久层ormaping机制详解
2013-09-04 21:04 1161bboss持久层针对db操作即提供了原始sql语句的支持,又提 ...
相关推荐
本文将深入讲解bbossgroups开发系列文章之一中的最佳实践,涉及bboss MVC框架的基础配置、控制器、数据库访问、DAO组件、业务组件管理以及与前端的交互等方面。 首先,我们来了解bboss MVC框架的基础配置。bboss-...
持久层框架进一步完善,支持ORMapping和多数据库解决方案;AOP/IoC框架整合多种技术,如Quartz、JMS、WebService等;分布式事件管理框架逐步完善。 4. **2011年**:标签库与MVC框架融合,持久层API改进,增加了SQL...
在Java开发中,bbossgroups 3.1框架提供了一个名为SQLExecutor的组件,用于简化数据库操作。这个组件提供了一种高效的批处理和单条SQL执行的方式,它基于Apache License 2.0开源,允许开发者在遵守相应条款的情况下...
6. **持久层框架**:Bboss提供了持久层框架,简化了数据库操作,支持SQL动态生成和ORM映射,与各种主流数据库如MySQL、Oracle等良好兼容。 7. **分布式事件框架**:通过JGroups、Minetty、RMI、HTTP、JMS、...
2. **Cache(缓存)**:bbossgroups提供了分布式缓存功能,如基于内存的Map和基于数据库的Cache,有助于提高应用的响应速度。学习缓存机制,可以了解数据同步策略和失效策略。 3. **Transaction Manager(事务管理...
近日,bbossgroups 3.0 正式发布,这款国内首款集AOP(面向切面编程)、MVC(模型-视图-控制器)、Persistent(持久化)、JSP Taglib(JSP 标签库)、分布式RPC服务及分布式事件框架于一体的J2EE开发框架,为开发者...
2. **数据库操作**:BBoss提供了便捷的数据访问层(DAO),支持SQL动态生成、事务管理以及多种数据库的兼容性,使得数据库操作变得简单且高效。 3. **服务治理**:框架内置了服务注册与发现机制,可以实现微服务...
该项目是一款基于Java和Shell语言的bboss session framework设计源码,专注于实现跨域集群节点之间的会话共享,并具备良好的会话监控和数据统计功能。该框架包含222个文件,包括164个Java源文件、14个XML配置文件、6...
12. bboss:bbossgroups是首个集成AOP、MVC、持久层、JSP标签库、分布式RPC服务和序列化组件的JavaEE企业级开发框架。 13. BeeFramework:BeeFramework是iOS平台的快速开发框架,特点包括易学易用、组件丰富,提供...
提供的压缩包文件"bbossgroups 框架培训教程.pptx"和"Bbossgroups演示文档.pptx"可能包含了更多关于bboss mvc框架的详细信息和使用示例,包括如何配置和使用JSONP等特性。建议查阅这些文档以获取更深入的理解。 总...
它运行并访问像mybatis这样的elasticsearch来关联数据库。环境要求JDK要求:JDK 1.7+ Elasticsearch版本要求:1.X,2.X,5.X,6.X,7.x,+ Spring Booter 1.x,2.x,+从源代码构建首先从获取源代码然后转到目录...
java版地图源码弹性搜索Bboss Bboss 是一个很好的 elasticsearch Java rest 客户端。 它以类似于mybatis的方式操作和访问elasticsearch。 环保要求 JDK 要求:JDK 1.7+ Elasticsearch ...>com.bbossgroups.p