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

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

[b][size=medium]1.概述[/size][/b]
行处理主要用来提供灵活高效的查询结果处理方法,下面着重介绍一下三种主要行处理器:空行处理器、返回值行处理器以及字段行处理器。
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


[size=medium][b]2.使用方法[/b][/size]

[b][size=medium]2.1 空行处理器[/size][/b]
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");

[size=medium][b]2.2 返回值行处理器[/b][/size]
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);


[size=medium][b]2.3 字段行处理器[/b][/size]
字段行处理器实现从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;
}
}


几种常用的使用方法就介绍完了,同时我们还可以结合行处理器完成分页查询,这里就不多说,更进一步的内容请关注博客动态。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值