jfinal对象封装Record原理
/*DbPro.class*/
public transient Record findFirst(String sql, Object paras[]{
List result = find(sql, paras);
return result.size() <= 0 ? null : (Record)result.get(0);
}
public transient List find(String sql, Object paras[])
{
Connection conn = null;
List list;
try
{
conn = config.getConnection();
list = find(config, conn, sql, paras);
}
catch(Exception e)
{
throw new ActiveRecordException(e);
}
config.close(conn);
return list;
Exception exception;
exception;
config.close(conn);
throw exception;
}
transient List find(Config config, Connection conn, String sql, Object paras[])
throws SQLException
{
PreparedStatement pst = conn.prepareStatement(sql);
config.dialect.fillStatement(pst, paras);
ResultSet rs = pst.executeQuery();
List result = RecordBuilder.build(config, rs); //返回List<Record>
DbKit.closeQuietly(rs, pst);
return result;
}
/*RecordBuilder.class
*把一条记录对象封装Record对象
*/
public static final List build(Config config, ResultSet rs)
throws SQLException
{
List result = new ArrayList();
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
String labelNames[] = new String[columnCount + 1];
int types[] = new int[columnCount + 1];
buildLabelNamesAndTypes(rsmd, labelNames, types);
Record record;
for(; rs.next(); result.add(record))
{
record = new Record();
record.setColumnsMap(config.containerFactory.getColumnsMap());
Map columns = record.getColumns();
for(int i = 1; i <= columnCount; i++)
{
Object value;
if(types[i] < 2004)
value = rs.getObject(i);
else
if(types[i] == 2005)
value = ModelBuilder.handleClob(rs.getClob(i));
else
if(types[i] == 2011)
value = ModelBuilder.handleClob(rs.getNClob(i));
else
if(types[i] == 2004)
value = ModelBuilder.handleBlob(rs.getBlob(i));
else
value = rs.getObject(i);
columns.put(labelNames[i], value);
}
}
return result;
}
jfinal对象封装Record原理的更多相关文章
- JS 对象封装的常用方式
JS是一门面向对象语言,其对象是用prototype属性来模拟的,下面,来看看如何封装JS对象. 常规封装 function Person (name,age,sex){ this.name = na ...
- 封装ajax原理
封装ajax原理 首先处理 用户如果不传某些参数,设置默认值 type默认get 默认url为当前页 默认async方式请求 data数据默认为{} 处理用户传进来的参数对象 遍历,拼接成key=va ...
- 封装,封装的原理,Property ,setter ,deleter,多态,内置函数 ,__str__ , __del__,反射,动态导入模块
1,封装 ## 什么是封装 what 对外隐藏内部的属性,以及实现细节,并给外部提供使用的接口 学习封装的目的:就是为了能够限制外界对内部数据的方法 注意 :封装有隐藏的意思,但不是单纯的隐藏 pyt ...
- java-面向对象-封装-this-构造函数
概要图 一 构造函数 需求:为了描述事物更准确,发现事物对应的很多对象一创建时, 就有了,一些初始化的数据.在类中该如何完成的. 通过Java中的另一个小技术完成:就是构造函数.对象本身就是构造出 ...
- Atitit paip.对象方法的实现原理与本质.txt
Atitit paip.对象方法的实现原理与本质.txt 对象方法是如何实现的1 数组,对象,字典1 对象方法是如何实现的 这显然是一个对象方法调用.但对象方法是如何实现的呢?在静态语言中,因为有编译 ...
- Javascript的对象封装和继承有哪些方法?优劣分别是什么?
1.对象封装方法 (1)原始模式生成对象 直接将我们的成员写入对象中,用函数返回. 缺点:很难看出是一个模式出来的实例. function Stu(name, score) { ...
- Ajax发送FormData对象封装的表单数据
前端页面: <!doctype html> <html lang="en"> <head> <meta charset="UTF ...
- EL表达式获取对象属性的原理
EL表达式获取对象属性的原理是这样的: 以表达式${user.name}为例 EL表达式会根据name去User类里寻找这个name的get方法,此时会自动把name首字母大写并加上get前缀,一旦找 ...
- [Java] 监控java对象回收的原理与实现
监控Java对象回收的原理与实现 一.监控Java对象回收的目的 监控Java对象是否回收的目的是:为了实现内存泄露报警. 内存泄露是指程序中对象生命周期(点击查看详情)已经进入不可见阶段,但因为编码 ...
随机推荐
- angularjs 选项卡 --- 自定义属性
<!DOCTYPE html> <html lang="en" ng-app="myApp"> <head> <met ...
- 全球著名的渗透测试Linux简介
注:如发现链接无法打开,请尝试代理登录链接 1. Kali Linux Kali Linux是基于Debian的Linux发行版, 设计用于数字取证和渗透测试.由Offensive Security ...
- Cocos2d-x 3.x项目创建
1.首先打开终端,cd到cocos2d-x-3.2目录下,运行命令./setup.py 2. 首先,打开终端cd到目录/cocos2d-x-3.2/tools/cocos2d-console/bin下 ...
- 破解 Rith's CrackMe #1(对比IDA查看动态分析中的MFC函数名)
系统 : Windows xp 程序 : Rith's CrackMe #1 程序下载地址 :http://pan.baidu.com/s/1gecW9Qr 要求 : 注册机编写 使用工具 : IDA ...
- C++类的运用 和 三大函数
在<数据结构与算法分析C++描述>一书中给出了三段代码,简单描述了C++类的接口.实现.与调用: #ifndef INTCELL_H_INCLUDED #define INTCELL_H_ ...
- Entityframework更新数据和插入数据
public bool UpdateEmloyeeInfo(EmployeInfo employeInfo) { bool flg = false; try { using (UserManageDB ...
- 转:SSL协议详解
http://kb.cnblogs.com/page/162080/ 背景介绍 最近在看<密码学与网络安全>相关的书籍,这篇文章主要详细介绍一下著名的网络安全协议SSL. 在开始SS ...
- html文字垂直居中
比如一个div 需设置height的高度和line-height一样. <div style="height:30px;line-height:30px;"> OK. ...
- druid 源码分析与学习(含详细监控设计思路的彩蛋)(转)
原文路径:http://herman-liu76.iteye.com/blog/2308563 Druid是阿里巴巴公司的数据库连接池工具,昨天突然想学习一下阿里的druid源码,于是下载下来分析了 ...
- dede默认的表
1.搜索关键词 表: dede_search_keywords 2.栏目关键 词描述 表 dede_arctype