bboss持久层行处理器使用介绍

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: bboss持久层行处理器使用介绍 1.概述 行处理主要用来提供灵活高效的查询结果处理方法,下面着重介绍一下三种主要行处理器:空行处理器、返回值行处理器以及字段行处理器。 1.1 空行处理器-灵活度最高的行处理器,结果集全部自行封装,框架干预少 com.
bboss持久层行处理器使用介绍

1.概述
行处理主要用来提供灵活高效的查询结果处理方法,下面着重介绍一下三种主要行处理器:空行处理器、返回值行处理器以及字段行处理器。
1.1 空行处理器-灵活度最高的行处理器,结果集全部自行封装,框架干预少
com.frameworkset.common.poolman.handle.NullRowHandler
空行处理器适用于
1.2.返回值行处理器-框架负责返回数据集,记录字段转换为值对象自行处理
com.frameworkset.common.poolman.handle.RowHandler
1.3.字段行处理器-对单个字段进行行级处理,并将处理值发挥给调用程序,字段行处理器主要用来处理blob和clob大字段类型的单字段查询功能,消除不同的数据库对大字段处理的差异性
com.frameworkset.common.poolman.handle.FieldRowHandler


2.使用方法

2.1 空行处理器
map方式
public Map<String,String> getUserDeskMapMenus(DeskTopMenuBean bean)
	throws Exception {
		String sql = "SELECT menupath,subsystem,userid FROM TD_SM_DESKMENU WHERE userid=#[userid] and subsystem=#[subsystem]";
		final Map<String,String> datas = new HashMap<String,String>();
		SQLExecutor.queryBeanWithDBNameByNullRowHandler(new NullRowHandler(){

			@Override
			public void handleRow(Record origine) throws Exception
			{
				datas.put(origine.getString("menupath"), origine.getString("subsystem"));
				
				
			}}, dbname,sql , bean);
		return datas;
	}

list方式
final List<ListBean> lbs = new ArrayList<ListBean>();
SQLExecutor.queryWithDBNameByNullRowHandler(new NullRowHandler(){

			@Override
			public void handleRow(Record record) throws Exception {
				
				ListBean lb = new ListBean();
				lb.setId(record.getInt("id"));
				lb.setFieldName(record.getString("fieldName"));
				lbs.add(lb);
			}}, "mysql", "select * from LISTBEAN where id>?", 80);


直接操作ResultSet的空行处理器使用实例:
SQLExecutor.queryWithDBNameByNullRowHandler(
					new ResultSetNullRowHandler() {

						@Override
						public void handleRow(ResultSet rs) throws Exception {
Person person = (Person)super.buildValueObject(  rs,
    			Person.class);//进行o/r mapping绑定
							System.out.println("name = " + rs.getString("name"));
							System.out.println("id = " + rs.getInt("id"));

						}
					}, "test", "select * from person");

2.2 返回值行处理器
String sql = "select * from LISTBEAN where ID>?";
		List<ListBean> beans = (List<ListBean>) SQLExecutor.queryListByRowHandler(new RowHandler<ListBean>(){

			@Override
			public void handleRow(ListBean lb, Record record)
					throws Exception {
				System.out.println("queryListByRowHandler test Result**:"+record.getString("fieldName"));
				
				lb.setId(record.getInt("id"));
				lb.setFieldName(record.getString("fieldName"));
				
			}}, ListBean.class, sql, 80);


2.3 字段行处理器
字段行处理器实现从blob/clob中获取单个字段文件对象的处理,其他类似类型数据也可以使用FieldRowHandler,使用示例如下:
public File getDownloadClobFile(String fileid) throws Exception
	{
		try
		{
			return SQLExecutor.queryTField(
											File.class,
											new FieldRowHandler<File>() {

												@Override
												public File handleField(
														Record record)
														throws Exception
												{

													// 定义文件对象
													File f = new File("d:/",record.getString("filename"));
													// 如果文件已经存在则直接返回f
													if (f.exists())
														return f;
													// 将blob中的文件内容存储到文件中
													record.getFile("filecontent",f);
													return f;
												}
											},
											"select filename,filecontent from CLOBFILE where fileid=?",
											fileid);
		}
		catch (Exception e)
		{
			throw e;
		}
	}


几种常用的使用方法就介绍完了,同时我们还可以结合行处理器完成分页查询,这里就不多说,更进一步的内容请关注博客动态。
相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
SQL 缓存 Java
MyBatis-动态代理、执行器与缓存
概述 通过一条修改语句,我们来了解一下Mybatis的执行过程: 一般MyBatis在执行一条语句的时候会依次使用以下四个模块: 分别说下各个组件的作用 接口代理: 其目的是简化对MyBatis使用,底层使用动态代理实现。 Sql会话: 提供增删改查API,其本身不作任何业务逻辑的处理,所有处理都交给执行器。这是一个典型的门面模式设计。 执行器: 核心作用是处理SQL请求、事物管理、维护缓存以及批处理等 。执行器的角色更像是一个管理员,接收SQL请求,然后根据缓存、批处理等逻辑来决定如何执行这个SQL请求。并交给JDBC处理器执行具体SQL。 JDBC处理器:他的作用就是用于通过JDB
79 0
|
8月前
|
Java 数据库连接 API
深入Spring原理-3.Bean的后置处理器
深入Spring原理-3.Bean的后置处理器
76 0
|
XML 缓存 Java
Spring Bean管理核心组件——后置处理器详解
Spring Bean管理核心组件——后置处理器详解
|
SQL 缓存 Java
MyBatis源码-解读Executor的三个实现类之ReuseExecutor(重用执行器)
MyBatis源码-解读Executor的三个实现类之ReuseExecutor(重用执行器)
169 0
|
Java 数据库连接 数据库
Mybatis的typeHandlers类型处理器的使用
Java类型和JDBC类型的转换工作由类型处理器来完成。接口typeHandlers,用于处理Java类型和JDBC类型之间的转换,本文介绍的是它的一个抽象类:BaseTypeHandler。
259 0
|
Java 数据库连接 程序员
详解 MyBatis 类型处理器,让你的代码更优雅!
详解 MyBatis 类型处理器,让你的代码更优雅!
213 0
详解 MyBatis 类型处理器,让你的代码更优雅!
|
Java Maven Spring
SpringBoot中的自定义注解开发与注解处理器
使用AnnotatedElement接口中的方法提取注解中的数据,像Class/Constructor/Field/Method/Package这些类都实现了AnnotatedElement接口 注:只有当定义Annotation时使用了@Retention(RetentionPolicy.RUNTIME)修饰, JVM才会在装载class文件时提取保存在class文件中的Annotation,该Annotation才会在运行时可见,这样我们才能够解析
|
Java
SpringBoot 统一结果集处理器
SpringBoot 统一结果集处理器
103 0
|
调度
SSM-SpringMVC-17:SpringMVC中深度剖析HandlerAdapter处理器适配器底层
  ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------    先放一张图     很熟悉啊,之前就看过,我们之前已经把handlerMapping剖了个底朝天,顺着上次的进度,继续跟,把HandlerAdapter处理器适配器剖一下   ...
1456 0
|
Web App开发 前端开发 Java
SSM-SpringMVC-09:SpringMVC中以继承MutiActionController类的方式实现处理器
  ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------     MutiActionController类,多行动处理器,简单来说,就是可以一个处理器中有多个处理方法,分支 实现的原理可以解释一波:就是因为这个类中有InternalPathMet...
1138 0