Ebean操纵数据库的实现方法

play实体类的编写以及Ebean的使用

字数 802 阅读 461

参考链接

Ebean-功能介绍  Hibernate 实体类注解   Ebean

配置好Ebean和创建好数据局以后就是创建实体类了。

modal时play的核心部分,它包含了数据库声明,类型,set,get方法,Ebean的finder方法等。

在app目录下创建models文件夹,在此文件夹内创建java类



上两图是实体类的一个例子。下面也只是对部分注解的说明,后续会持续更新

@Entity  声明实体类

@Table  name属性指定数据库对应的表名

@Id      定义标的主键(id)

@Column 注解对应数据库中字段的名称,一般会直接根据属性名称去寻找数据库字段。不过如果存在驼峰命名 ,必须要声明,因为如果不注解,默认生成的sql语句是在两个单词之间添加_。

@Transient  声明的属性是数据库中不存在的属性字段

@ManyToOne 表示一个多对一的映射,可以实现联表查询

@JoinColumn 联表查询的关联id

@ManyToOne(fetch = FetchType.LAZY)

@JoinColumn(name = "developerId")

private Developer developer;

这表示从当前表关联id为 developerId去查询另一个表

在ManyToOne里一般不用声明关联那个表,他会自动根据返回的数据去查询,比如这里Developer,那么就会去关联Developer的类去查询。

在实体类的最下面可以声明finder方法,这样就可以在java里使用Ebean的方法进行数据库的操作了。




实体类的应用

刚才我们的定义,那么我们就可以用finder方法调用各类操作

查询

EmailNotificationType.find.findList()

findList是查询数据库的所有信息,没有条件

条件查询可以用where

EmailNotificationType.find.where().eq("id", id).findUnique()

查询结果为单条用findUnique(),不等于用ne()

多个eq条件可以继续eq

EmailNotificationType.find.where().eq("id", id).eq("displayName",displayName).findUnique()

排序直接用OrderBy

EmailNotificationType.find.where().eq("id", id).orderBy("displayName").findUnique()

模糊查询用Like

EmailNotificationType.find.where().eq("id", id).like("displayName","%"+displayName+"%").findUnique()

范围查询

EmailNotificationType.find.where().in("id", idList).findUnique()

分页

首先这里理解sql语句的查询条数的实现

select * form ‘user’ limit 10

select * form ‘user’ limit 5,10

select * form ‘user’ limit 10 offset 20

理解这几条语句的意思

limit后面只有一个数字代表从第一条数据开始取,取多少条数据.

写两个数字的时候第一个数字是从第几条开始(从0开始计算的),第二个数字是取多少条数据,从第6(5+1)条数据开始取10条数据

offset是从第几条数据开始

第三条语句的意思是从第21(20+1)条数据开始取10条数据

这里有2个属性来分别设置这两个属性

setFirstRow() 来设置从第几条数据开始

setMaxRows() 设置总共多少条数据

EmailNotificationType.find.setFirstRow((page-1)*pageSize).setMaxRows(pageSize).findUnique()

Ebean也可以直接执行sql语句

Ebean.createSqlQuery()

SqlUpdatesql = Ebean.createSqlUpdate("UPDATE Apps SET numViews = numViews + 1 WHERE id = ?");

sql.setParameter(1, app.getId());

sql.execute();

0人点赞

猜你喜欢

转载自blog.csdn.net/Insect_boy/article/details/102498544