一、Spring Data JPA的基本使用

1、编写ORM实体类

 实体类与数据表进行映射,并且配置好映射关系。

1.1 创建实体类

举个例子


@Entity(name=" <mysql数据库里对应的表名> ")  //该注解表示当前实体类是与表有映射关系的实体类
public class discuss{@Id  //该注解表示配置该属性对应的字段为主键@GeneratedValue(strategy=GenerationType.IDENTITY) //表示当前主键生成策略为自增长private Integer id;@Column(name="content")private String content;@Column(name="Author")private String Author;@Column(name="aId")private Integer aId;.....//等等一些get/set方法啥的
}

1.2 编写Repository接口

针对不同的表数据操作编写各自对应的Repositor接口,并根据需要编写对应的数据操作方法。
public interface DiscussRepository extends JpaRepository<Discuss, Integer>
{//查询author非空的Discuss评论集合public List<Discuss> FindByAuthorNotNull();//根据文章id分页查询Discuss评论集合//通过“@Query”注解来执行这条SQL语句,"?"代表将第一个参数赋值给占位符“1”@Query("SELECT c FROM t_comment c WHERE c.aId = ?1") public List<Discuss> getDiscussPaged(Integer aid, Pageable pageable);//使用元素SQL语句,根据文章id分页查询Discuss评论集合//nativeQuery = true表示写的是SQL语句@Query(value="SELECT * FROM t_comment WHERE n_Id = ?1", nativeQuery = true)public List<Discuss> getDiscussPaged(Integer aid, Pageable pageable);//根据评论id修改评论作者author@Transactional  //进行事务控制@Modifying  //如果对数据库做出了一些操作,就要添加这个注解@Query("UPDATE t_comment c SET c.author = ?1 WHERE c.id = ?2")public int updateDiscuss(String author,Integer id);//根据评论id删除评论@Transactional@Modifying@Query("DELETE FROM t_comment c WHERE c.id = ?1")public int deleteDiscuss(Integer id);}

1.3 编写测试类

@Test
public void test1()
{Optional<Discuss> byId = discussRepository.findById(1);System.out.println(byId.get());
}
@Test
public void test2()
{List<Discuss> byAuthorNotNull = discussRepository.findByAuthorNotNull();for(Discuss discuss : byAuthorNotNull){System.out.println(discuss);}
}
@Test
public void test3()
{int i = discussRepository.deleteDiscuss(4);System.out.println(i);
}

2、Repository部分简略继承关系

(1)顶层接口:Repository //没有包含任何方法
(2)次级接口:CrudRepository //继承了Repository,包含了增删改查方法
(3)下级接口:PagingAndSortingRepository //继承了CrudRepository, 包含了分页和排序方法
(4)下级接口:QueryByExampleExecutor //额外提供数据操作方法
(5)底层接口:JpaRepository //继承了PagingAndSortingRepository 和 QueryByExampleExecutor 。引用时,直接继承JpaRepository, 那么基本上相关方法都继承了

3、使用Spring Data JPA进行数据操作的多种实现方式

(1)如果自定义接口继承了JpaRepository接口,则默认包含了一些常用的CRUD方法。
(2)自定义Repository接口中,可以使用@Query注解配合SQL语句进行数据的查、改、删操作。
(3)自定义Repository接口中,可以直接使用方法名关键字进行查询操作。

4、自定义Repository接口中的@Transactional注解

(1) 在自定义的Repository接口中,针对数据的变更操作(修改、删除),无论是否使用了@Query注解,都必须在方法上方添加@Transactional注解进行事务管理,否则程序执行就会出现InvalidDataAccessApiUsageException异常。
(2)如果在调用Repository接口方法的业务层Service类上已经添加了@Transactional注解进行事务管理,那么Repository接口文件中就可以省略@Transactional注解。

SpringBoot之SpringData JPA的基本使用相关推荐

  1. 解决SpringBoot整合SpringData JPA的PagingAndSortingRepository的Sort排序时遇到的错误:has protected access in ‘org.sp

    问题: 原因: pringboot2.2.1(含)以上的版本Sort已经不能再实例化了,构造方法已经是私有的了! 解决方法: 我们可以改用Sort.by获得Sort对象

  2. 带你搭一个SpringBoot+SpringData JPA的环境

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 不知道大家对SpringBoot和Spring Da ...

  3. idea加入springboot插件_带你搭一个SpringBoot+SpringData JPA的环境

    前言 只有光头才能变强. 不知道大家对SpringBoot和Spring Data JPA了解多少,如果你已经学过Spring和Hibernate的话,那么SpringBoot和SpringData ...

  4. SpringBoot简介、SpringBoot 入门程序搭建、与JDBC、Druid、Mybatis和SpringData JPA的整合

    一.SpringBoot 简介: spring boot并不是一个全新的框架,它不是spring解决方案的一个替代品,而是spring的一个封装.所以,你以前可以用spring做的事情,现在用spri ...

  5. spring boot 整合多数据源JDBC、多数据源mybatis、多数据源springdata jpa

    目录 代码地址:(spring-boot github地址) 1.springboot整合JDBC 2.springboot整合mybatis 3.springboot整合springdata jpa ...

  6. SpringData JPA 之疑难杂症

    SpringData JPA 之疑难杂症 1.JPA自动建表不生成外键 SpringBoot项目搭配的JPA使用时候,有一对多的关系注解,那么自动会生成外键.外键在有些时候,会导致代码不能走通,我们不 ...

  7. SpringData JPA条件查询、排序、分页查询

    前言 在刚开始学习的时候,在dao的定义的接口需要继承JpaRepository<T, ID>接口和JpaSpecificationExecutor< T >接口,但是一直以来 ...

  8. jeecg boot一对多新增的附表不会主键是一个string_测试开发专题:spring-boot如何使用JPA进行双向一对多配置...

    本片文章我们主要介绍spring-boot如何进行JPA的配置以及如何进行实体间的一对多配置. 依赖准备 要在spring-boot使用jpa需要在项目中有进入相关的依赖,pom文件里加入下面内容 & ...

  9. SpringData+JPA+mysql, cannot be null when ‘hibernate.dialect‘ not set

    SpringData+JPA+mysql 8, 报错 cannot be null when 'hibernate.dialect' not set 是因为Hibernate SQL方言没有设置导致的 ...

  10. 【持久层框架】- SpringData - JPA

    SpringData - JPA

最新文章

  1. redhat 6.0 Enterprise企业版如何使用yum安装软件
  2. mysql 审核引擎 goInception 的基本使用
  3. TCP的三次握手、四次挥手,干货满满!
  4. 好文转载——追求卓越之旅
  5. 文本查重:difflib.SequenceMatcher
  6. python生成器、迭代器、__call__、闭包简单说明
  7. html提交本页面,将文本提交到相同的HTML页面
  8. ubuntu下终端提示符设置
  9. error: gnu/stubs-32.h: No such file or directory
  10. mongodb3.4 安装及用户名密码设置
  11. springMVC实现增删改查
  12. innodb_pool_buffer_size对innodb性能的影响
  13. 穹顶之下 众信金融邀您共植树助环保
  14. SQL 对大小写不敏感!
  15. Spring-day02
  16. php 数组去impload,你真的了解 load 方法么?
  17. 使用微PE工具箱制作U盘启动盘
  18. java工具类书写规范
  19. 《东周列国志》第九十六回 蔺相如两屈秦王 马服君单解韩围
  20. 嘛:如何远视 还有遥远的未来

热门文章

  1. 骗子华中帝国,诈骗犯QQ860100371
  2. 中国LVDT RVDT传感器市场现状研究分析与发展前景预测报告(2022)
  3. 我不恨你,我只恨我们有缘无分
  4. CF487E Tourists (圆方树,LCT)
  5. 查看页面滚动条滚动距离,可视区窗口尺寸
  6. 简单的CSS3动画案例——奔跑的熊哥
  7. Android平板/手机,使用qq视频通话图像旋转90度
  8. 芯片级维修学习课程安排
  9. 网络攻击与防御-常用网络命令的使用
  10. “逃离”北京来到二线城市,谈谈面试和职业规划