Ebean-功能介绍
来源:互联网 发布:php 无法访问子目录 编辑:程序博客网 时间:2024/05/22 05:32
Mapping
Ebean使用了和JPA一样的映射,所以你可以使用@Entity, @Table, @Column, @OneToMany等等对你的实体进行注释
@Entitypublic class B_Order extends CModel { public String uuid = null; @Id @GeneratedValue(strategy = GenerationType.AUTO) public Integer id; @Constraints.Required @Version public Integer version = 1; @ManyToOne @Column(nullable = false) public B_Customer customer; public int status; public String shipDate; public String orderDate; public int price;}
Query
1.查询单个结果:
B_Customer customer = Ebean.find(B_Customer.class, 4);
执行的sql为:
select t0.id c0, t0.uuid c1, t0.name c2, t0.version c3 from b_customer t0 where t0.id = 4
2.查询多个结果:
List<B_Customer> customers = Ebean.find(B_Customer.class) .where().like("name", "%a%") .orderBy("name desc") .findList();
执行的sql为:
select t0.id c0, t0.uuid c1, t0.name c2, t0.version c3 from b_customer t0 where t0.name like '%a%' order by t0.name desc
3.select() 和 fetch()
你可以使用select()和fetch()查询你需要的属性。
List<B_Order> orderList =Ebean.find(B_Order.class).select("id").where().eq("status",B_Order.STATUS_ACTIVE).findList();
执行的sql为:
select t0.id c0 from b_order t0 where t0.status = 1
List<B_Order> orderList =Ebean.find(B_Order.class).select("id") .fetch("customer","name") .where().eq("status",B_Order.STATUS_ACTIVE) .findList();
执行sql为:
select t0.id c0, t1.id c1, t1.name c2 from b_order t0 left outer join b_customer t1 on t1.id = t0.customer_id where t0.status = 1
4.使用sql查询语言
String q = "find b_order fetch customer where id=:id";B_Order order = Ebean.createQuery(B_Order.class,q).setParameter("id", 23).findUnique();
执行的sql为:
select t0.id c0, t0.uuid c1, t0.status c2, t0.ship_date c3, t0.order_date c4, t0.version c5, t1.id c6, t1.uuid c7, t1.name c8, t1.version c9 from b_order t0 left outer join b_customer t1 on t1.id = t0.customer_id where t0.id = 23
等价于:
B_Order order = Ebean.createQuery(B_Order.class).fetch("customer").where().eq("id",23).findUnique();
RawSql
你可以在这种使用例如sum()、count()、max()等功能。
String sql ="select o.id ,o.customer_id, c.name , sum(price) as price from b_order o join b_customer c on o.customer_id = c.id group by customer_id";RawSql rawSql = RawSqlBuilder.parse(sql) .columnMapping("c.name","customer.name") .columnMapping("o.customer_id","customer.id") .columnMapping("o.id","id") .create();Query<B_Order> query = Ebean.find(B_Order.class);List<B_Order> orderList = query.setRawSql(rawSql).findList();
注意:外键一定要查询出来,否则会报Query threw SQLException:Column Index out of range, 0 < 1.错误
Save & Delete
Order order = Ebean.find(Order.class, 12);order.price = 2;Ebean.save(order); Order order = Ebean.find(Order.class, 12); Ebean.delete(order);
Transactions
注释@Transactional
@Transactionalpublic void runFirst() throws IOException { User u1 = Ebean.find(User.class, 1); … Customer cust = Ebean.find(Customer.class, 27); … Ebean.save(cust);}
注意:函数中的异常不能使用try catch进行抓取,不然事务不起作用。play框架中必须放在最外层Result controller上,不然不起作用。
传统方式
Ebean.beginTransaction();try { ... Ebean.save(customer); Ebean.save(order); Ebean.commitTransaction();} finally { Ebean.endTransaction();}
0 0
- Ebean-功能介绍
- Ebean ORM功能介绍
- Ebean Demo
- @EBean增强自定义类
- ebean的学习
- Spring Boot Ebean集成
- Play FrameWork Ebean 事务操作
- 交叉销售功能介绍-功能
- jdbc部分功能介绍
- Code Assist功能介绍
- 接口功能介绍
- Windows系统还原功能介绍
- Vim功能介绍
- :UG模块功能介绍::
- iRShell功能介绍
- BEA WebLogic功能介绍
- GridView功能详细介绍
- facebook的功能介绍
- CodeForces 703D Mishka and Interesting sum (树状数组 区间偶数异或)
- Mac 搭建nginx+rtmp服务器
- TCP的拥塞控制
- 背包使用
- 练手python_在图像上增加数字
- Ebean-功能介绍
- AngularJS使用orderBy报错
- JSP 万能DAO( 增删改查)
- linux下svn命令使用大全
- 大数据分析技术研究报告(三-3)
- 程序员常用的网站和博客
- 练手python_将条形码保存在mysql数据库中
- 设置注释
- 测试