etmvc+jQuery EasyUI使用教程(三) 您所在的位置:网站首页 jqueryeasyui使用教程 etmvc+jQuery EasyUI使用教程(三)

etmvc+jQuery EasyUI使用教程(三)

2024-06-16 01:14| 来源: 网络整理| 查看: 265

本章我们来学习一下ActiveRecord中的关联,即一对一、一对多、多对一等关联问题!

1、先新建一个authors表和books表

create table authors( id int primary key auto_increment, name varchar(10) default null ) create table books( id int primary key auto_increment, name varchar(10) default null, authorId int )

2、我们认为authors表和books表是一对多的关系,即一个author拥有多个book,建立对应的域模型对象

Author.java

package models; import java.util.List; import com.et.ar.*; import com.et.ar.annotations.*; @Table(name = "authors") public class Author extends ActiveRecordBase { @Id private Integer id; @Column private String name; @HasMany(foreignKey = "authorId", dependent = DependentType.DELETE, order = "id") private List books; // get,set... public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List getBooks() { return books; } public void setBooks(List books) { this.books = books; } }

Book.java

package models; import com.et.ar.*; import com.et.ar.annotations.*; @Table(name = "books") public class Book extends ActiveRecordBase { @Id private Integer id; @Column private Integer authorId; @Column private String name; @BelongsTo(foreignKey = "authorId") private Author author; // get,set... public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Integer getAuthorId() { return authorId; } public void setAuthorId(Integer authorId) { this.authorId = authorId; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Author getAuthor() { return author; } public void setAuthor(Author author) { this.author = author; } }

3、这里解释一下这三种关联关系:

(1)、一对多:一对多关联是指一个类(比如Author)拥有另一个类(比如Book)的多个实例,用@HashMany注解描述,如上面的Author类; @HasMany有几个属性: foreignKey指定多方的外键,必须指定。 dependent指定在删除主表时做何操作,可选。有DELETE,DESTROY,NULLIFY,DELETE是简单的删除从表记录;DESTROY是再以级联的方式销毁从表对应的对象,如果这种级联关系有二级以上,则使用DESTROY会比较合适;NULLIFY是将从表的外键置为NULL值而并不删除。 order指定获取从表对应的记录时的排序字段,可选。

(2)、多对一:是指一个类属于另一个类,比如上面的Book类,使用@BelongsTo注解描述多对一关系。

(3)、一对一:一对一是一对多的特例,使用@HasOne描述,如:

@Table(name="authors") public class Author extends ActiveRecordBase{ @Id private Integer id; @Column private String name; @HasOne(foreignKey="authorId") private Book book; //get,set... }

@HasOne注解的其他用法同@HasMany

4、定义了模型对象之间的关联之后,新建一个AuthorController,用于操作模型对象:

package controllers; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import models.Author; import models.Book; import models.User; import com.et.mvc.JsonView; import com.et.mvc.View; import com.et.mvc.JspView; public class AuthorController extends ApplicationController { /** * 查询全部作者及书籍 */ public JsonView index() throws Exception { List authors = Author.findAll(Author.class); //List users = User.findAll(User.class); Map result = new HashMap(); result.put("success", true); for (Author author : authors) { //result.put(author.getId().toString(), author.getName()); result.put(author.getId().toString(), author.getBooks()); // System.out.println(user.getName()); } JsonView view = new JsonView(result); view.setContentType("text/html;charset=utf-8");// 允许指定ContentType return view; } public void create() throws Exception { Author author = new Author(); author.setName("author1"); List books = new ArrayList(); for(int i=0; i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有