Jfinal中Db类的的使用
Jfinal提供了两种操作数据库的组件,分别是Model类和DB类,可以极大地减少代码量,提高开发效率。
Db类提供了在Model类之外更丰富的的数据库操作能力,使用Db类以及嵌套的Record类时,无需对数据库表进行映射,Record类相当于一个通用的Model。
以下为Db+Record的常见用法:
什么时候选择用Db类?
1. 没有创建 Model,不得不使用
2. 由于Active Record 限制一个model对象对应一条记录,当需要批量操作表中的记录时需要使用Db + Record,例如,需要对 account 表中的 cash 字段统一加上 100 块钱:Db.update("update account set cash=cash+100"),这种情况下 Model 只能一条一条地处理数据,而 Db 可以利用 sql 去批量处理
3. 在某些非常需要高度灵活性、通用性的系统之下使用 Db.find(...),例如做一个报表系统,其中绝大部分业务都是跨多表的联合查询的数据展现,用 Db.find(sql) 更加方便,以及拥有更大自由度。比如:
List<A> list = A.dao.find("select A.a,B.b from A left join (select a,b from B) B on A.a = B.a")
这个时候如果需要对list中的数据进行处理,list.get(index).get("b")将会出错,因为list初始化是A类型的,而实体类A即数据库A中没有字段b。
这个时候采用Db类:
List<Record> list = Db.use(configname).find("select A.a,B.b from A left join (select a,b from B) B on A.a = B.a")
4. 在一些删除、更新语句使用的时候,比如:
a. Model类在执行删除语句的时候可以使用deleteById()方法,该方法的使用需要数据库字段具有主键(当然,好的数据库设计每张表都具有一个主键)。如果没有主键,Model方法执行删除语句就无法进行了。当然我们可能会想到利用model.dao.find(sql)方法去执行delete操作,这样是不可以的。这个时候可以使用Db类的update方法:
Db.use("User").update("delete from tablename where para = ?", para);
"User"是数据库配置configname:
public static final String CONFIG_NAME = "User";
b.批量插入、更新、删除时,可以使用Db类的batch方法:
public static int[] batch(java.lang.String sql,
java.lang.String columns,
java.util.List modelOrRecordList,
int batchSize)
- sql 参数是指 insert into 或者 update 语句,动态参数使用问号占位,例如:String sql = "insert into user(name, cash) values(?, ?)";上面这个 sql 其中要插入 name、cash 两个字段,而 values 中用了两个问号,这两个问号中的值从后续的 modelOrRecordList 中获取
- columns 是指前面 sql 中问号占位的地方的参数名称,jfinal 在填充字段值的时候会根据这个名称去 modelOrRecordList 中去取数据
- modelOrRecordList 是指 List < User > 或者 List < Record> 或者这种列表
- batchSize 是指多少条数据写一次数据库
Db.use("User").batch("delete from tablename where para = ?", new Object[][] {{para}}, 1);
Jfinal中Db类的的使用的更多相关文章
- Laravel5.2中Eloquent与DB类的区别是什么?
要了解这些先看看关于数据库组件的那些事儿(就是 Eloquent ORM) 数据库组件大概分了三层: 数据库连接层 查询构造层 应用层 来看一下每一层有哪些东西,分别对应文档的哪一部分: 数据库连接层 ...
- 封装自己的DB类(PHP)
封装一个DB类,用来专门操作数据库,以后凡是对数据库的操作,都由DB类的对象来实现.这样有了自己的DB类,写项目时简单的sql语句就不用每次写了,直接调用就行,很方便! 1.封装一个DB类.一个类文件 ...
- nodejs操作mongodb数据库封装DB类
这个DB类也算是我经历了3个实际项目应用的,现分享出来,有需要的请借鉴批评. 上面的注释都挺详细的,我使用到了nodejs的插件mongoose,用mongoose操作mongodb其实蛮方便的. 关 ...
- 封装DB类
封装DB类 一般一个类单独书写在一个Php文件中,为了见名知意,会对文件名有一个规范:类名.class.php 第1步: 创建DB类 第2 步: 属性设计 第3步: 初 ...
- TP5 模型类和Db类的使用区别
原文:http://www.upwqy.com/details/3.html 总结 在控制器中 模型操作 get() 和 all() 只能单独使用来查询数据 想要链式操作查询数据 需要使用f ...
- PHP——laravel之DB类->查询
DB类之查询: 满足条件的全部获取:DB::table("表名")->where("name",">","1" ...
- JFinal中文件上传后会默认放置到WebContent的upload包下,但是tomcat会自动重启,当我们再次打开upload文件夹查看我们刚刚上传的文件时,发现上传的文件已经没有了。
JFinal中文件上传后会默认放置到WebContent的upload包下,但是tomcat会自动重启,当我们再次打开upload文件夹查看我们刚刚上传的文件时,发现上传的文件已经没有了.因为tomc ...
- nodejs mongodb 数据库封装DB类 -转
使用到了nodejs的插件mongoose,用mongoose操作mongodb其实蛮方便的. 关于mongoose的安装就是 npm install -g mongoose 这个DB类的数据库配置是 ...
- python---Django中模型类中Meta元对象了解
Django中模型类中Meta元对象了解 1.使用python manage.py shell 进入编辑命令行模式,可以直接进入项目(为我们配置好了环境) python manage.py shell ...
随机推荐
- SpringMVC REST 风格请求介绍及简单实践
简介 REST 即 Representational State Transfer.(资源)表现层状态转化.是目前最流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以正得到越来越 ...
- HDFS入门(1)
2015.07.12笔记 1.HDFS Distributed File System(操作系统实现人机交互,最重要的功能是文件管理,使用文件管理系统,windows.Linux文件管理系统有共性:用 ...
- python3的urllib2报错问题解决方法
python urlib2 兼容问题 在python3中,将urllib和urllib2合并了,所以在使用urllib2的地方改成urllib.request即可.示例如下 import urllib ...
- Jmeter-元件的作用域和执行顺序
Jmeter有8类可执行的元件,包括:逻辑控制器.配置元件.定时器.前置处理器.取样器.后置处理器.断言和监听器. 测试计划和线程组不属于元件. 1)取样器(Sampler):不与其他元件发生交互作用 ...
- Unity3D中的AI架构模型
我们都知道现在AI(由人工制造出来的系统所表现出来的模拟人类的智能活动)非常的火,可以说是家喻户晓.当然,在游戏中,AI也是到处可以找到的,对于AI,我们应该关注的问题是如何让游戏角色能够向人或动物那 ...
- Android Doze模式启用和恢复
从Android 6.0(API level 23)开始,Android提出了两个延长电池使用时间的省电特性给用户.用户管理可以在没有充电的情况下管理app的行为.当用户一段时间没有使用手机的时候,D ...
- java iframe 嵌套,session失效重新登录页面嵌套问题
将后台跳转改写成 PrintWriter out = response.getWriter(); out.println("<html>"); out.print ...
- 以正确的姿势实现一棵JavaScript菜单树
菜单树是常见的前端特效, 一般长下面这样 还有各种形态的变种, 有长这样的 也有长这样的 尽管这些菜单的相貌都不尽相同, 在功能实现的本质上却都是相同的.实现程序的大致流程如下 读取服务器端的菜单数据 ...
- 爬虫入门系列(一):快速理解HTTP协议
4月份给自己挖一个爬虫系列的坑,主要涉及HTTP 协议.正则表达式.爬虫框架 Scrapy.消息队列.数据库等内容. 爬虫的基本原理是模拟浏览器进行 HTTP 请求,理解 HTTP 协议是写爬虫的必备 ...
- JavaWeb总结(九)—过滤器
一.Filter简介 Web开发人员通过Filter技术,对Web服务器管理的所有Web资源:JSP.Servlet.静态文件.静态HTML等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限 ...