本文共 6183 字,大约阅读时间需要 20 分钟。
package net.zjs.lesson07.bean;import javax.persistence.*;/** * 功能:评论实体类 * 作者:zjs * 日期:2021-05-12 */@Entity(name = "t_comment")//实体注解(针对某一张表)public class Comment { @Id @GeneratedValue(strategy = GenerationType.IDENTITY)//自动生成值 @Column(name = "id") private Integer id; @Column(name = "content") private String content; @Column(name = "author") private String author; @Column(name = "a_id")//对应表的字段名 private Integer aId; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public Integer getaId() { return aId; } public void setaId(Integer aId) { this.aId = aId; } @Override public String toString() { return "Comment{" + "id=" + id + ", content='" + content + '\'' + ", author='" + author + '\'' + ", aId=" + aId + '}'; }}
package net.zjs.lesson07.bean;import javax.persistence.*;import java.util.List;/** * 功能:文章实体类 * 作者:zjs * 日期:2021-05-12 */@Entity(name = "t_article")public class Article { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private Integer id; @Column(name = "title") private String title; @Column(name = "content") private String content; //查询时将子表一并查询出来 @OneToMany(fetch = FetchType.EAGER) //一篇文章对应多个评论(FetchType.lazy是懒加载) @JoinTable(name = "t_Comment",joinColumns = {@JoinColumn(name = "a_id")}, inverseJoinColumns = {@JoinColumn(name = "id")})//表明文章表与评论表关联,joinColumns连接列(外键连接) private ListcommentList; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public List getCommentList() { return commentList; } public void setCommentList(List commentList) { this.commentList = commentList; } @Override public String toString() { return "Article{" + "id=" + id + ", title='" + title + '\'' + ", content='" + content + '\'' + ", commentList=" + commentList + '}'; }}
package net.zjs.lesson07.repository;import net.zjs.lesson07.bean.Article;import org.springframework.data.jpa.repository.JpaRepository;/** * 功能:文章仓库接口 * 作者:zjs * 日期:2021-05-12 */public interface ArticleRepository extends JpaRepository{}
com.alibaba druid 1.2.6
#配置数据源spring.datasource.url=jdbc:mysql://localhost:3306/blog?serverTimezone=UTCspring.datasource.username=rootspring.datasource.password=12465spring.datasource.druid.max-active=100spring.datasource.druid.min-idle=10spring.datasource.druid.initial-size=20
注入文章仓库
创建查询全部记录的测试方法
运行测试方法,查看结果
编写根据id查询的测试方法
运行测试方法
编写删除记录测试方法
运行测试方法
package net.zjs.lesson07.repository;import net.zjs.lesson07.bean.Comment;import org.springframework.data.domain.Page;import org.springframework.data.domain.Pageable;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.data.jpa.repository.Query;/** * 功能:评论仓库接口 * 作者:zjs * 日期:2021-05-12 */public interface CommentRepository extends JpaRepository{ /** * 据文章ID进行分页查询评论 * nativeQuery = true表示原生sql语句,否则使用的是实体对象 * @param aId 查询条件字段 * @param pageable 凡是要实现分页的查询,只需传递pageable参数即可 * @return 返回page对象,包含page的相关信息及查询结果集 */ @Query(value = "select * from t_comment where a_id = ?1", nativeQuery = true) Page findCommentPagedByArticleId01(Integer aId, Pageable pageable); @Query(value = "select c from t_comment c where c.aId = ?1") Page findCommentPagedByArticleId02(Integer aId, Pageable pageable);}
package net.zjs.lesson07;import net.zjs.lesson07.bean.Comment;import net.zjs.lesson07.repository.CommentRepository;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.data.domain.Page;import org.springframework.data.domain.PageRequest;import org.springframework.data.domain.Pageable;import java.util.List;/** * 功能:测试评论查询方法 * 作者:zjs * 日期:2021-05-12 */@SpringBootTestpublic class CommentTests { //注入评论仓库 @Autowired private CommentRepository commentRepository; //测试按文章编号分页查询评论,采用原生SQL语句 @Test public void testFindCommentPagedByArticleId01(){ // 当前页面索引 int pageIndex = 0;//当前页为第一页 // 设置页面大小 int pageSize = 2;//每页最多两条记录 // 创建分页器 Pageable pageable = PageRequest.of(pageIndex, pageSize); //查询文章编号为1的页面对象 Pagepage=commentRepository.findCommentPagedByArticleId01(1,pageable); //获取页面对象里的评论列表 List comments=page.getContent(); //获取页索引 int number=page.getNumber(); //获取总页数 int totalPages=page.getTotalPages(); System.out.println("当前页:"+(number+1));//页索引加1才是页码 System.out.println("总页数:"+totalPages); //输出当前页全部评论 for(Comment comment:comments){ System.out.println(comment); } }}
待更新
转载地址:http://antki.baihongyu.com/