博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Springboot 数据访问之JPA深入
阅读量:6914 次
发布时间:2019-06-27

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

前言

上篇文章提及了JPA的相关简单使用,在这篇文章呢将深入探讨JPA。在配置Repository服务类时扩展了CrudRepository这个接口,而正是许许多多的接口使我们在使用JPA进行数据访问时会更加轻松

Repository接口

Repository是个空接口,需要开发者在自己定义的接口中声明需要的方法。若定义的接口继承于Repository,则该接口会被IOC容器识别为一个Bean并纳入IOC容器,进而可以在该接口中定一些符合命名规范的方法。也可用@RepositoryDefinition代替@Repository。定义的方法以find | get | read开头;涉及有条件查询时条件的属性(大写字母开头)用条件关键字连接;@Query可以自定义JPQL语句进行查询。


CrudRepository接口

不同于Repository,它是个能提供许多实现方法的接口。

T.save(T entity) 保存单个实体
iterable<T>save(iterable <?extends T>entities);保存集合
T findOne(ID id)根据ID查找实体
boolean exists(ID id)判断实体是否存在
iterable<T>findAll()查询所有实体
long count() 查询实体数量
void delete(ID id) 根据ID删除实体
void delete(T entity)删除一个实体
void delete(ilterable<?extends T>entities);删除一个实体的集合
void deleteAll()删除所有实体


PagingAndSortingRepository接口

ilterable<T>findAll(Sort sort)排序功能

Page<T>findAll(Pageable pageable)分页查询并排序


用find+大写字母编写查询方法

  • dao层
public interface person2Repository extends JpaRepository
{ public Person findByName(String name);}
  • services层
@Resource    private person2Repository person2Repository;    @Transactional    public Person findByName(String name){        return person2Repository.findByName(name);    }
  • Controller
@RequestMapping("/findByPersonName")    public Person findByName(String name){        return personService.findByName(name);    }

使用注解@Query 自定义JPQL语句进行查询

  • Dao层
public interface person2Repository extends JpaRepository
{ @Query("select P from Person P where P.name = :pname") public Person findMyName(@Param("pname")String name);}
  • 服务层
@Resource    private person2Repository person2Repository;   @Transactional    public Person findMyName(String name){        return person2Repository.findMyName(name);   }
  • 控制器
@RequestMapping("/findMyName")       public Person findMyName(String name){        return personService.findMyName(name);}

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

你可能感兴趣的文章
我的友情链接
查看>>
[置顶] Mybatis技术(四) 从配置读取到打开连接的源码分析
查看>>
约定 大于 验证
查看>>
mysql杀掉睡眠进程
查看>>
迈向高薪的阶梯
查看>>
用GDB调试程序(四)
查看>>
专用链表VS通用链表
查看>>
完美解决delphi7 安装Ehlib4.1.4报错的办法
查看>>
Mac常用快捷键
查看>>
python打包成exe程序
查看>>
Q查询
查看>>
【问题求助】PS调色师要学的东西!
查看>>
AB ABB ABC “ABCDEFG”
查看>>
sleep(),wait()区别
查看>>
自动日志清理脚本程序
查看>>
Block Object
查看>>
[转载] C#——使用RichTextBox做的一个Notepad
查看>>
c语言练习
查看>>
Android下横竖屏切换的处理
查看>>
进击的JAVA(1)
查看>>