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对象是否回收的目的是:为了实现内存泄露报警. 内存泄露是指程序中对象生命周期(点击查看详情)已经进入不可见阶段,但因为编码 ...
随机推荐
- goldengate 12c对oracle DB的改进
1. 现在可使用Oracle Universal Installer,即安装时有图形化界面,同时会自动安装java runtime environment,不过个人认为,还是ZIP安装包方便,解压即用 ...
- Java选择结构、循环结构
1:switch语句(掌握) (1)格式: switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; ... default: 语句体n+1; ...
- 《day13--异常的进阶和包的使用》
//101-finally的使用&102-finally的使用场景 /* 需求:有一些特定的代码,无论异常是否发生,都需要执行, 因为异常会引发程序的跳转,导致有些语句执行不到,无法满足这个需 ...
- sql 字段重复值,in,like
- Git ~ 大杀器之一 远程仓库 ~ Git
一般情况ixashi找一台电脑作为服务器的角色 , 每天24小时开机 , 其他扥每个人都从这个 “服务器” 仓库里面克隆一份到自己的电脑上面 并且将各自的提交推送到服务器仓库中 , 也可以从服务器仓库 ...
- MVC学习IIS的不同版本(一)
一:IIS5.0运行在进程InetInfo.exe中,该进程寄宿着一个名为World Wide Publishing Service(W3VC)的window服务. W3VC的主要功能:包括HTTP请 ...
- PhP访问mysql数据库的基本方式
一,查询 <?php$conn= mysql_connect("127.0.0.1","lanou12","lanou12");$fi ...
- HDU 5405 (树链剖分+线段树)
Problem Sometimes Naive 题目大意 给你一棵n个节点的树,有点权. 要求支持两种操作: 操作1:更改某个节点的权值. 操作2:给定u,v, 求 Σw[i][j] i , j ...
- HDU2222 (AC自动机)
AC自动机模板题. 被卡内存了 死活A不掉.. AC自动机参考教程: http://www.cppblog.com/menjitianya/archive/2014/07/10/207604.html ...
- 使用WebMatrix发布网站到Windows Azure
1. 在本地机安装 WebMatrix, 安装Windows Azure SDK 2. 登录Windows Azure, 网站 > 创建一个新网站或选择已有网站 3. 在发布应用程序,选择下载发 ...