>Java >java지도 시간 >PlayFramework는 APP를 완벽하게 구현합니다. (3)

PlayFramework는 APP를 완벽하게 구현합니다. (3)

黄舟
黄舟원래의
2016-12-23 16:37:511264검색

1. Post 클래스 추가

패키지 모델,

import java.util.*;
import javax.persistence.*;
import play.db.jpa. *;

@Entity
@Table(name = "blog_post")
public class Post 확장 모델 {
public String title;
public Date listedAt;

@Lob
public String content;

@ManyToOne
public User 작성자;

public Post(사용자 작성자, 문자열 제목, 문자열 콘텐츠) {
this.author = 작성자;
this.title = title;
this.content = title;
}
}

@Lob 식별자, 필드는 큰 텍스트 유형입니다. @ManyToOne은 각 게시물이 한 명의 사용자에만 해당할 수 있고 한 명의 사용자가 여러 게시물에 해당할 수 있음을 식별합니다.

2. 테스트 케이스 추가

@Test
공개 void createPost () {
// 새로운 사용자를 생성하고 저장합니다
User user = new User("bob@Gmail.com", "####", "Bob").save();

// 새 게시물 만들기
new Post(user, "My first post", "Hello world").save();

// 게시물이 작성되었는지 테스트 created
주장Equals(1, Post.count());

// 사용자가 작성한 모든 게시물 검색
List 게시물 = Post.find("byAuthor", user).fetch () ;

// 테스트
ertEquals(1,posts.size());
PostfirstPost=posts.get(0);
assertNotNull(firstPost);
주장Equals( user, firstPost.author);
주장Equals("내 첫 게시물", firstPost.title);
주장Equals("Hello world", firstPost.content);
주장NotNull(firstPost.postedAt);
}

 

3. 코멘트 클래스 추가

@Entity
public 클래스 Comment 확장 모델 {
public String 작성자 ;
공개 게시 날짜;

@Lob
public String content;

@ManyToOne
공개 게시물 게시물;

공개 댓글(게시물, 문자열 작성자, 문자열 내용) {
this.post = post;
this.author = 작성자;
this.content = content;
this.postedAt = new Date();
}
}

 

4. 테스트 케이스 추가

@Test
public void postComments() {
// 새로운 사용자 생성 그리고 저장하세요
User bob = new User("bob@gmail.com", "secret", "Bob").save();

// 새 게시물 만들기
Post bobPost = new Post(bob, "My first post", "Hello world").save();

// 첫 댓글 게시
new Comment(bobPost, "Jeff", "Nice post" ).save();
new Comment(bobPost, "Tom", "I Know that !").save();

// 모든 댓글 검색
List Comment.find("byPost", bobPost).fetch();

// 테스트
ertEquals(2, bobPostComments.size());

댓글 firstComment = bobPostComments.get (0 );
ertNotNull(firstComment);
assertEquals("Jeff",firstComment.author);
assertEquals("좋은 게시물", firstComment.content);
assertNotNull(firstComment.postedAt) ;

댓글 secondComment = bobPostComments.get(1);
ertNotNull(secondComment);
assertEquals("Tom", secondComment.author);
assertEquals("알고 있었어!" , secondComment .content);
ertNotNull(secondComment.postedAt);
}

 

5. 댓글 추가

@OneToMany( mappedBy= "post", cascade=CascadeType.ALL)
공개 목록 댓글;

공개 게시물(사용자 작성자, 문자열 제목, 문자열 내용) {
this.comments = new ArrayList< ;Comment> ;();
this.author = 작성자;
this.title = 제목;
this.content = 제목;
this.postedAt = new Date();
}

 

6. Post 클래스에 메소드 추가

public Post addComment(String 작성자, String 내용) {
Comment newComment = new Comment(this, 작성자, 내용 ).save();
this.comments.add(newComment);
this.save();
return this;
}

 

7. 테스트 케이스 추가

@Test
public void useTheCommentsRelation() {
   // 새 사용자를 생성하고 저장
   User bob = new User("bob@gmail.com", "secret", "Bob" ).save();

   // 새 게시물 만들기
   Post bobPost = new Post(bob, "My first post", "Hello world").save();

   // 첫 번째 댓글 게시
   bobPost.addComment("Jeff", "Nice post");
   bobPost.addComment("Tom", "그럴 줄 알았어 !");

   / / 개수 계산
   assertEquals(1, User.count());
   assertEquals(1, Post.count());
   assertEquals(2, Comment.count());

   // Bob의 게시물 검색
   bobPost = Post.find("byAuthor", bob).first();
   assertNotNull(bobPost);

   // 댓글로 이동
   assertEquals( 2, bobPost.comments.size());
   assertEquals("Jeff", bobPost.comments.get(0).author);
   
   // 게시물 삭제
   bobPost.delete( );
   
   // 모든 댓글이 삭제되었는지 확인
   assertEquals(1, User.count());
   assertEquals(0, Post.count());
   assertEquals( 0, Comment.count());
}

  

 

运行Test,如有异常会take现下方提示

PlayFramework는 APP를 완벽하게 구현합니다. (3)

 以上就是PlayFramework完整实现一个APP(三)的内容,更多敳关容请关注PHP中文网(www.php.cn)!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.