参考链接
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();