play框架之ORM
初次接触play2,采用的ebeans作为ORM框架。网上的资料并不多,总结如下:
数据的查询可以放在model类里,也可以放在controllers里面,我更倾向于后者,感觉数据流比较完整,好理解,好维护。
1.models操纵数据库
package models; import java.util.Date;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.Id;
import play.db.ebean.Model;
import play.db.ebean.Model.Finder;
import play.data.format.*;
/**
* Created by wangbin10 on 2017/1/5.
*/
@Entity
public class AppActive extends Model{
@Id
public Integer id;
@Formats.DateTime(pattern="yyyy-MM-dd")
public Date push_date;
public Integer adr_rate;
public Integer ios_rate;
public static Finder<Integer,AppActive> find=new Finder<Integer,AppActive>(Integer.class,AppActive.class);
public static List<AppActive> findAll(){
return find.all();
}
public static List<AppActive> findFactor(String start_date,String end_date){
return find.where().eq("push_date","2016-12-30").findList();
return find.where().ne("push_date","2016-12-31").findList();
return find.where().in("push_date",daterange).findList();
return find.where().gt("push_date","2016-12-29").findList();
return find.where().ge("push_date","2016-12-29").findList();
return find.where().lt("push_date","2016-12-31").findList();
return find.where().le("push_date","2016-12-31").findList();
return find.where().gt("push_date","2016-12-29").le("push_date","2016-12-31").findList();
return find.where().like("push_date","2016-12-3%").findList();
return find.where().between("push_date",start_date,end_date).findList();
}
}
2.controllers中操作数据库:
public static Result app_active(){
Form<DateForm> daterange=Form.form(DateForm.class);
DynamicForm in = Form.form().bindFromRequest();
if(in.get("start_date")==null){
String start_date = "2016-12-29";
String end_date = "2017-01-01";
List<AppActive> actives=AppActive.find.where().between("push_date",start_date,end_date).findList();
List<Long> push_date=new ArrayList<Long>();
List<Integer> adr_rate=new ArrayList<Integer>();
List<Integer> ios_rate=new ArrayList<Integer>();
for(AppActive active:actives){
push_date.add((active.push_date).getTime());
adr_rate.add((Integer) active.adr_rate);
ios_rate.add((Integer) active.ios_rate);
}
return ok(views.html.app_active.render(push_date,adr_rate,ios_rate,actives,daterange));
}else {
String start_date = in.get("start_date");
String end_date = in.get("end_date");
List<AppActive> actives = AppActive.find.where().between("push_date", start_date, end_date).findList();
List<Long> push_date = new ArrayList<Long>();
List<Integer> adr_rate = new ArrayList<Integer>();
List<Integer> ios_rate = new ArrayList<Integer>();
for (AppActive active : actives) {
push_date.add((active.push_date).getTime());
adr_rate.add((Integer) active.adr_rate);
ios_rate.add((Integer) active.ios_rate);
}
return ok(views.html.app_active.render(push_date, adr_rate, ios_rate, actives, daterange));
}
}
3.从表单获取数据存入数据库
public static Result postRegister(){
Form<Registration> userForm=Form.form(Registration.class).bindFromRequest();
User user=new User(userForm.get().email,userForm.get().password);
user.save();
return ok("registered");
}
对应的HTML表单代码如下:
@(userForm: Form[controllers.Application.Registration]) <!DOCTYPE html>
<html>
<body>
<h1> Registration </h1>
@helper.form(action = routes.Application.postRegister()) {
@helper.inputText(userForm("email"))
@helper.inputPassword(userForm("password"))
<input type="submit">
}
</body>
</html>
play的表单也很简单有意思,我会在其他博文专门讲它。
Ebeans更细节的文档点这里。
play框架之ORM的更多相关文章
- Django框架 之 ORM中介模型
Django框架 之 ORM中介模型 中介模型 处理类似搭配 pizza 和 topping 这样简单的多对多关系时,使用标准的ManyToManyField 就可以了.但是,有时你可能需要关联数据 ...
- Django框架 之 ORM 常用字段和参数
Django框架 之 ORM 常用字段和参数 浏览目录 常用字段 字段合集 自定义字段 字段参数 DateField和DateTimeField 关系字段 ForeignKey OneToOneFie ...
- Django框架 之 ORM查询操作详解
Django框架 之 ORM查询操作详解 浏览目录 一般操作 ForeignKey操作 ManyToManyField 聚合查询 分组查询 F查询和Q查询 事务 Django终端打印SQL语句 在Py ...
- Net框架下-ORM框架LLBLGen的简介(转载)
Net框架下-ORM框架LLBLGen的简介 http://www.cnblogs.com/huashanlin/archive/2015/02/12/4288522.html 官方网址:http:/ ...
- beego框架之orm模块——mysql
参考beego原文:http://beego.me/docs/mvc/model/orm.md#main.go beego ORM 是一个强大的 Go 语言 ORM 框架,orm模块主要是处理MVC中 ...
- Django框架之ORM常用字段
一.ORM介绍 1.ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过 ...
- Django框架06 /orm多表操作
Django框架06 /orm多表操作 目录 Django框架06 /orm多表操作 1. admin相关操作 2. 创建模型 3. 增加 4. 删除 5. 修改 6. 基于对象的跨表查询 7. 基于 ...
- Django框架05 /orm单表操作
Django框架05 /orm单表操作 目录 Django框架05 /orm单表操作 1. orm使用流程 2. orm字段 3. orm参数 4. orm单表简单增/删/改 5. orm单表查询 5 ...
- [开源].NET数据库访问框架Chloe.ORM
扯淡 13年毕业之际,进入第一家公司实习,接触了 EntityFramework,当时就觉得这东西太牛了,访问数据库都可以做得这么轻松.优雅!毕竟那时还年轻,没见过世面.工作之前为了拿个实习机会混个工 ...
- 类EF框架Chloe.ORM升级:只为更完美
扯淡 Chloe.ORM:一款轻量.高效的.NET C#数据库访问框架(ORM).查询接口借鉴 Linq(但不支持 Linq).借助 lambda 表达式,可以完全用面向对象的方式就能轻松执行多表连接 ...
随机推荐
- Oracle主键(Primary Key)使用详细的说明
Oracle/PLSQL: 主键(Primary Key)说明 1 目标 通过演示样例解说怎样创建.删除.禁用和开启主键. 2 前言之-什么是主键 在Oracle中,主键指能唯一标识一条记录的单个数据 ...
- 前端常见算法JS实现
算法是程序的灵魂,一个优秀的前端工程师对算法也是要有所了解的. 排序算法 1. 冒泡排序 //冒泡排序 function bubbleSort(arr){ var i = j = 0; for(i=1 ...
- C#颜色对照使用表
这篇文章来来源于C# Color Table,这里是我翻译的中文版本,其中已经加上了我的一些理解和注释.翻译这篇文章的原因是我在写C#程序的时候发现,C#自带的颜色种类极多(详见下表),如果没有直观的 ...
- 制作WPF时钟之2
原文:制作WPF时钟之2 前段时间写了一篇"制作简单的WPF时钟",今天再制作了一个更漂亮的WPF时钟,目前仅完成了设计部分,准备将它制作成一个无边框窗体式的时钟. 效果图: ...
- [WebGL入门]十一,着色器编译器和连接器
注意:文章翻译http://wgld.org/,原作者杉本雅広(doxas).文章中假设有我的额外说明.我会加上[lufy:].另外.鄙人webgl研究还不够深入.一些专业词语,假设翻译有误.欢迎大家 ...
- beego中各类数据库连接方式
beego 框架是优秀得go REST API开发框架.下面针对beego中各类数据库连接操作做一个总结. 1. orm连接方式 beego中的orm操作支持三种数据库:mysql,sqlite3,p ...
- C/C++回调方式系列之一 函数指针和函数回调模式
一.函数指针 1. 函数的定义 return_type function_name(parameter list) { function_body } return_type: 返回值,函数一定有返回 ...
- Cocos2d-x 脚本语言Lua介绍
Cocos2d-x 脚本语言Lua介绍 本篇博客记录Lua学习.学习来自eoe论坛,Lua语言开发Cocos2d-x游戏入门视频教程,猛戳下面地址: http://www.eoeandroid.com ...
- 更改开机默认不显示explorer.exe,直接启动自己写的EXE程序方法
原文:更改开机默认不显示explorer.exe,直接启动自己写的EXE程序方法 更改开机默认不显示explorer.exe,直接启动自己写的EXE程序的函数: bool UpdateWinlogon ...
- WPF 使用依赖属性(DependencyProperty) 定义用户控件中的Image Source属性
原文:WPF 使用依赖属性(DependencyProperty) 定义用户控件中的Image Source属性 如果你要自定义一个图片按钮控件,那么如何在主窗体绑定这个控件上图片的Source呢? ...