- 浏览: 695663 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (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 persistent 1.0.4 发布,下载地址:
https://sourceforge.net/project/showfiles.php?group_id=238653&package_id=302766&release_id=688812
功能变更清单如下:
o 调整com.frameworkset.common.poolman.handle.RowHandler
将原来的接口改为抽象类
将接口方法public void handleRow(Object rowValue,Record origine)
改为抽象方法public abstract void handleRow(Object rowValue,Record origine)
增加init和destroy方法,以便进行查询源数据和数据库名称dbname的初始化和销毁,这些信息对存储过程和函数调用中的行处理器不起作用。
增加方法
public SchemaType getSchemaType(String colName)
以便在行处理器中 获取列的java数据类型名称和数据库类型名称
o 修改com/frameworkset/common/poolman/Record.java类
增加记录的原始行号信息和get/set方法:
/**
* 设置记录对应的数据库原始记录行号
*/
private int rowid;
public void setRowid(int rowid)
{
this.rowid = rowid;
}
public int getRowid()
{
return rowid;
}
o ResoultMap类中对Record类的初始化方法进行了优化
o 扩展xml行处理器
可以自定义根节点名称
可以自定义字符集
可以自定义版本号
添加构造xml节点串的两个方法
实现
在com.frameworkset.common.poolman.handle.XMLRowHandler程序中添加以下方法:
/**
* rowValue类型为StringBuffer
*/
public void handleRow(Object rowValue,Record origine) 的默认实现
/**
* 返回xml串的根节点名称
* 缺省为records,用户可以扩展这个方法
* @return
*/
public String getRootName()
{
return "records";
}
/**
* 返回xml的编码字符集
* 缺省为gb2312,用户可以扩展这个方法
* @return
*/
public String getEncoding()
{
return "gb2312";
}
/**
* 返回xml语法的版本号
* 缺省为1.0,用户可以扩展这个方法
* @return
*/
public String getVersion()
{
return "1.0";
}
构建xml节点串的方法
public static String buildNode(String columnNodeName,//xml节点名称
String columnName,//结点列名name属性的值
String columnType, //结点列jdbc类型属性名称值
String columnJavaType, //结点列java类型属性名称值
String value,//结点值
String split)//结点与节点之间的分割符
public static String buildNode(String columnNodeName, //xml节点名称
Map attributes,//节点属性集
String value, //节点值
String split)//节点间的分割符
这些方法都有缺省实现,如果不一致的话可以在子类中覆盖。
使用实例
public class TestXMLHandler {
public static void testCustomXMLHandler()
{
PreparedDBUtil db = new PreparedDBUtil();
try {
db.preparedSelect("select * from tableinfo");
// String results_1 = db.executePreparedForXML();
String results_ = db.executePreparedForXML(new XMLRowHandler(){
//
//
public void handleRow(Object rowValue, Record origine) {
StringBuffer record = (StringBuffer )rowValue;
record.append(" <record>\r\n");
try {
SchemaType schemaType = super.getSchemaType("TABLE_NAME");
record.append(super.buildNode("attribute",
"TABLE_NAME",
schemaType.getName(),
schemaType.getJavaType(),
origine.getString("TABLE_NAME"),
"\r\n"));
schemaType = super.getSchemaType("table_id_name");
record.append(super.buildNode("attribute",
"table_id_name",
schemaType.getName(),
schemaType.getJavaType(),
origine.getString("table_id_name"),
"\r\n"));
schemaType = super.getSchemaType("TABLE_ID_INCREMENT");
record.append(super.buildNode("attribute",
"TABLE_ID_INCREMENT",
schemaType.getName(),
schemaType.getJavaType(),
origine.getString("TABLE_ID_INCREMENT"),
"\r\n"));
schemaType = super.getSchemaType("TABLE_ID_GENERATOR");
record.append(super.buildNode("attribute",
"TABLE_ID_GENERATOR",
schemaType.getName(),
schemaType.getJavaType(),
origine.getString("TABLE_ID_GENERATOR"),
"\r\n"));
schemaType = super.getSchemaType("TABLE_ID_TYPE");
record.append(super.buildNode("attribute",
"TABLE_ID_TYPE",
schemaType.getName(),
schemaType.getJavaType(),
origine.getString("TABLE_ID_TYPE"),
"\r\n"));
} catch (SQLException e) {
throw new RowHandlerException(e);
}
record.append(" </record>\r\n");
}
public String getEncoding() {
// TODO Auto-generated method stub
return "gbk";
}
public String getRootName() {
// TODO Auto-generated method stub
return "tableinfo";
}
public String getVersion() {
// TODO Auto-generated method stub
return "2.0";
}
});
System.out.println(results_);
// System.out.println(results_1);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void testDefualtXML()
{
PreparedDBUtil db = new PreparedDBUtil();
try {
db.preparedSelect("select * from tableinfo");
String results_1 = db.executePreparedForXML();
System.out.println(results_1);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args)
{
testCustomXMLHandler();
}
}
o 修改bug,执行o/r mapping 查询时,如果数字类型/byte/boolean的数据值为null时,会报以下异常:
Build ValueObject for ResultSet[select * from mq_node where NODE_NAME='test'] Get Column[CA_ID] from ResultSet to com.chinacreator.mq.client.MqNode@10cec16.CA_ID[int] failed:null
ERROR 01-06 17:30:25,093 - Build ValueObject for ResultSet[select * from mq_node where NODE_NAME='test'] Get Column[CA_ID] from ResultSet to com.chinacreator.mq.client.MqNode@10cec16.CA_ID[int] failed:null
java.lang.IllegalArgumentException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.frameworkset.common.poolman.ResultMap.buildValueObject(ResultMap.java:193)
at com.frameworkset.common.poolman.StatementInfo.buildResultMap(StatementInfo.java:731)
at com.frameworkset.common.poolman.util.SQLUtil.innerExecuteJDBC(SQLUtil.java:540)
at com.frameworkset.common.poolman.DBUtil.executeSelectForObject(DBUtil.java:3753)
at com.frameworkset.common.poolman.DBUtil.executeSelectForObject(DBUtil.java:3742)
at com.frameworkset.common.poolman.DBUtil.executeSelectForObject(DBUtil.java:3618)
at com.chinacreator.mq.client.MqNodeService.getNodeByName(MqNodeService.java:150)
at be.ibridge.kettle.consumer_stream.ConsumerService.buildMQClient(ConsumerService.java:63)
at be.ibridge.kettle.consumer_stream.Consumer.processRow(Consumer.java:155)
at be.ibridge.kettle.consumer_stream.Consumer.run(Consumer.java:200)
原因分析:
数据库查询返回的结果集,由于数字类型/byte/boolean为null时,原来的处理程序直接返回null,而不是返回具体的数字类型/byte/boolean的缺省值,导致将null值设置给对象属性失败。
解决办法,修改对应数字类型/byte/boolean的handle接口提供null值的转换函数,将null转换为相应的缺省值。
com/frameworkset/common/poolman/handle/type/BigDecimalTypeHandler.java
com/frameworkset/common/poolman/handle/type/BooleanTypeHandler.java
com/frameworkset/common/poolman/handle/type/ByteTypeHandler.java
com/frameworkset/common/poolman/handle/type/DoubleTypeHandler.java
com/frameworkset/common/poolman/handle/type/FloatTypeHandler.java
om/frameworkset/common/poolman/handle/type/IntegerTypeHandler.java
com/frameworkset/common/poolman/handle/type/LongTypeHandler.java
com/frameworkset/common/poolman/handle/type/ShortTypeHandler.java
评论
发表评论
-
bboss 持久层数据源引用外部属性配置介绍
2018-12-29 21:47 1084bboss 持久层数据源外部属性配置引用介绍 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 1357在使用最新的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 1671bboss 持久层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内置数据源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 1475为了更好地提高数据库分页查询的效率,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持久层改进支持模块sql配置文件引用其它模块sql配置文件中sql语句
2013-09-01 22:23 932bboss持久层改进支持模块sql配置文件引用其它模块sql配 ...
相关推荐
3. **事务管理**:在TestTransaction.sql这个文件名中,我们可以推测BBoss Persistent也包含了事务管理功能。在处理CLOB和BLOB数据时,事务是至关重要的,因为它们确保了数据的一致性和完整性。如果在操作过程中发生...
通过阅读`SYSAuthenticateFilter.java`的源码,我们可以深入了解BBoss框架如何实现这些功能,并学习如何自定义和扩展安全认证过滤器,以满足特定的应用场景需求。源码分析有助于我们更好地理解和控制Web应用的安全...
本实例是一个基于bboss es spring boot starter的demo maven工程,可供spring boot项目集成bboss elasticsearch rest client参考 展示了通过spring boot管理单集群功能和管理多集群功能 单集群测试用例:...
bboss会话共享通过为应用提供统一的会话管理功能,保证了即使用户被切换到其他节点,也能够继续访问之前保存的会话数据。 其次,bboss会话共享支持跨域和跨应用的会话共享,并能实现单点登录(SSO)功能。单点登录...
4. **AOP(面向切面编程)**:BBoss MVCDemo支持AOP,可以实现如事务管理、日志记录、权限控制等功能,提高代码的复用性和可维护性。 5. **国际化与本地化**:框架内置了国际化和本地化支持,使得应用可以根据用户...
1. **组件化开发**:BBoss支持模块化和组件化的开发模式,允许开发者根据项目需求选择必要的功能组件,避免了传统框架中“大而全”的问题,降低了系统的复杂度。 2. **数据库操作**:BBoss提供了便捷的数据访问层...
**bboss-datatran** 是一个由 **bboss** 社区开源的高效数据处理工具,专注于数据采集、数据清洗转换以及数据入库等任务。它实现了流批一体化的数据处理能力,使得用户能够灵活地应对实时和批量的数据处理场景。在...
3. `bboss-util-5.5.0.jar`和`bboss-persistent-5.5.0.jar`:这是BBoss框架的核心组件,提供了许多实用工具类和持久化操作支持,如数据库连接、事务管理等,为Elasticsearch的数据导入提供底层支持。 4. `...
2. **插入数据**: 将业务数据插入到索引中,BBoss 提供了批量插入功能,可以高效处理大量数据。 3. **查询数据**: 构建查询条件,通过 BBoss API 发送请求并解析返回结果。 4. **更新和删除**: 更新已存在的文档,...
springboot集成ElasticsearchBboss调用Elasticsearch的案例分享
**bboss+es基本操作示例** 在Java开发中,Elasticsearch(ES)作为一种流行的分布式搜索引擎和数据分析工具,常用于大数据处理和实时分析。bboss(Business Basic Operation Support)框架则是针对Elasticsearch...
bboss-datatran 由 bboss 开源的数据采集&流批一体化工具,提供数据采集、数据清洗转换处理和数据入库以及数据指标统计计算流批一体化处理功能。 同时也是一个高性能Elasticsearch orm 客户端,100%兼容es各个版本 ...
【bboss-db-elasticsearch-tool-master_java_】是一个Java ORM(对象关系映射)框架,它在功能上超越了MyBatis,提供了对多种数据库的广泛支持,包括MySQL、Oracle、PostgreSQL、SQLServer、DB2、DM以及MongoDB。...
BBoss是一个轻量级的企业级应用开发框架,提供了IOC(Inversion of Control)功能,使得对象之间的依赖关系可以通过配置文件进行管理。本文将详细介绍如何在BBoss的IOC配置文件中引用外部属性文件,以便更好地管理和...
bboss功能涵盖ioc,mvc,jsp自定义标签库,持久层,全局事务托管,安全认证,SSO,web会话共享,cxfwebservice服务发布和管理,hessian服务发布和管理等功能。另外还提供了符合中国式自由流的bboss activiti工作流...
官方版本,亲测可用
在存储服务方面,采用Redis相较于Mongodb在性能上表现更优,但Redis作为非真正的Nosql数据库,其提供的监控统计功能相对薄弱。在实际生产环境中,bbosssession的表现良好,并能够快速响应各种会话管理需求。 四、...
Elasticsearch rest client bboss介绍-Elastic2018中国开发者大会演讲稿