一、接口方法整理速查
站在用户的角度思考问题,与客户深入沟通,找到东海网站设计与东海网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计制作、成都网站制作、企业官网、英文网站、手机端网站、网站推广、域名注册、虚拟主机、企业邮箱。业务覆盖东海地区。下表针对于简单查询,即JpaRepository接口(继承了CrudRepository接口、PagingAndSortingRepository接口)中的可访问方法进行整理。(1)先按照功能进行分类整理,分为保存、删除、查找单个、查找多个、其他5类。(2)再将不建议使用的方法置灰,此类方法多为CrudRepository接口、PagingAndSortingRepository接口中定义,后来JpaRepository接口中又定义了替代方法,更方便使用,比如:查找多个对象时,返回 List 比返回 Iterable 更容易处理。
二、五个接口详解
1、CrudRepository接口。
其中T是要操作的实体类,ID是实体类主键的类型。该接口提供了11个常用操作方法。
@NoRepositoryBean public interface CrudRepositoryextends Repository { S save(S entity);//保存Iterablesave(Iterableentities);//批量保存 T findOne(ID id);//根据id 查询一个对象。返回对象本身,当对象不存在时,返回null IterablefindAll();//查询所有的对象 Iterable findAll(Iterable ids);//根据id列表 查询所有的对象 boolean exists(ID id);//根据id 判断对象是否存在 long count();//计算对象的总个数 void delete(ID id);//根据id 删除 void delete(T entity);//删除一个对象 void delete(Iterable extends T> entities);//批量删除,集合对象(后台执行时,一条一条删除) void deleteAll();//删除所有 (后台执行时,一条一条删除)}
2、PagingAndSortingRepository接口。
该接口继承了CrudRepository接口,提供了两个方法,实现了分页和排序的功能了。
@NoRepositoryBeanCrudRepository { Iterable findAll(Sort sort); Page findAll(Pageable pageable);}
3、JpaRepository接口。
该接口继承了PagingAndSortingRepository接口。
同时也继承QueryByExampleExecutor接口,这是个用“实例”进行查询的接口,后续再写文章详细说明。
@NoRepositoryBeanpublic interface JpaRepositoryextends PagingAndSortingRepository , QueryByExampleExecutor { List findAll(); //查询所有对象,返回List List findAll(Sort sort); //查询所有对象,并排序,返回List List findAll(Iterable ids); //根据id列表 查询所有的对象,返回List void flush(); //强制缓存与数据库同步 Listsave(Iterableentities); //批量保存,并返回对象ListS saveAndFlush(S entity); //保存并强制同步数据库 void deleteInBatch(Iterableentities); //批量删除 集合对象(后台执行时,生成一条语句执行,用多个or条件) void deleteAllInBatch();//删除所有 (执行一条语句,如:delete from user) T getOne(ID id); //根据id 查询一个对象,返回对象的引用(区别于findOne)。当对象不存时,返回引用不是null,但各个属性值是null @Override ListfindAll(Exampleexample); //根据实例查询 @OverrideListfindAll(Exampleexample, Sort sort);//根据实例查询,并排序。}
几点说明:
(1)几个查询、及批量保存方法,和 CrudRepository 接口相比,返回的是 List,使用起来更方便。
(2)增加了 InBatch 删除, 实际执行时,后台生成一条sql语句,效率更高些。相比较而言,CrudRepository 接口的删除方法,都是一条一条删除的,即便是 deleteAll 也是一条一条删除的。
(3)增加了 getOne() 方法,切记,该方法返回的是对象引用,当查询的对象不存在时,它的值不是Null。
4、JpaSpecificationExecutor接口
该接口提供了对JPA Criteria查询(动态查询)的支持。这个接口很有用,具体不粘源码了。
5、Repository接口
这个接口是最基础的接口,只是一个标志性的接口,没有定义任何的方法,那这个接口有什么用了?既然Spring data JPA提供了这个接口,自然是有它的用处,例如,我们有一部分方法是不想对外提供的,比如我们只想提供增加和修改方法,不提供删除方法,那么前面的几个接口都是做不到的,这个时候,我们就可以继承这个接口,然后将CrudRepository接口里面相应的方法拷贝到Repository接口就可以了。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
当前标题:SpringDataJPA简单查询-创新互联
URL分享:http://lswzjz.com/article/gpess.html