博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot整合JPA
阅读量:3970 次
发布时间:2019-05-24

本文共 6183 字,大约阅读时间需要 20 分钟。

文章目录

一、Spring Boot整合JPA

  • Spring Data JPA是Spring基于ORM框架、JPA规范的基础上封装的一套JPA应用框架,它提供了增删改查等常用功能,使开发者可以用较少的代码实现数据操作,同时还易于扩展。

1、创建项目文件

  • 设置项目元数据
    在这里插入图片描述
  • 添加依赖

在这里插入图片描述

2、创建ORM实体类

(1)创建评论实体类

在这里插入图片描述

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 +                '}';    }}

(2)创建文章实体类

在这里插入图片描述

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 List
commentList; 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 + '}'; }}

3、创建自定义JpaRepository接口

(1)创建文章仓库接口

在这里插入图片描述

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
{}

4、添加数据源依赖,配置数据源属性

(1)在pom.xml里添加阿里巴巴数据源依赖

在这里插入图片描述

com.alibaba
druid
1.2.6

(2)在全局配置文件里配置数据源

在这里插入图片描述

#配置数据源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

(3)在测试类里编写测试方法

  • 注入文章仓库

    在这里插入图片描述

  • 创建查询全部记录的测试方法

    在这里插入图片描述

  • 运行测试方法,查看结果

    在这里插入图片描述

  • 编写根据id查询的测试方法

    在这里插入图片描述

  • 运行测试方法

    在这里插入图片描述

  • 编写删除记录测试方法

  • 运行测试方法

在这里插入图片描述

  • 编写添加记录测试方法

在这里插入图片描述

  • 运行测试方法
    在这里插入图片描述

二、利用JPA实现个性化操作

案例1 - 根据文章编号分页查询评论

(1)创建评论仓库接口CommentRepository

在这里插入图片描述

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);}

(2)创建测试类

在这里插入图片描述

  • 注入评论仓库
    在这里插入图片描述

(3)编写测试方法

在这里插入图片描述

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的页面对象        Page
page=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); } }}

(4)运行测试方法

在这里插入图片描述

(5)创建测试方法testFindCommentPagedByArticleId02()

在这里插入图片描述

(6)运行测试方法

在这里插入图片描述

案例2 - 根据文章编号更新作者

待更新

转载地址:http://antki.baihongyu.com/

你可能感兴趣的文章
url 特殊字符 传递参数解决方法
查看>>
实际开发中体会到的技巧(连载)
查看>>
js中页面刷新和页面跳转的方法总结
查看>>
Myeclipse 6.0 + Birt 在线Update安装
查看>>
Birt与MyEclipse的集成及Birt的安装部署问题
查看>>
如何构建Birt报表应用程序?
查看>>
BIRT的文档生成,渲染技术
查看>>
Class.forName() 初始化、Thread.currentThread().getContextClassLoader().getResourceAsStream
查看>>
spring 错误(org.springframework.beans.NotWritablePropertyException)依赖注入配置
查看>>
BIRT使用ScriptDataSet从POJO中获得数据
查看>>
JSP传参数给Birt的两种方法
查看>>
birt学习笔记(连载)
查看>>
理解Birt中API
查看>>
MyEclipse SVN 修改用户名和密码
查看>>
BIRT报表技术
查看>>
birt标签的使用
查看>>
给birt的表格添加表格线
查看>>
BIRT Viewer 2.2 参数设置详解
查看>>
开发Birt过程中遇到的两个困扰我很久的问题?
查看>>
时间格式及关于时间的操作(SimpleDateFormat)
查看>>