欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 宝鼎售后问题提交 | 后台管理


新闻资讯

MENU

软件开发知识

SpringBoot(五) : 劳务派遣信息管理系统 spring data jpa 的利用

点击: 次  来源:宝鼎软件 时间:2017-07-27

原文出处: 纯洁的微笑

在上篇文章springboot(二):web综合开拓中简朴先容了一下spring data jpa的基本性利用,这篇文章将越发全面的先容spring data jpa 常见用法以及留意事项。

利用spring data jpa 开拓时,发明海内对spring boot jpa全面先容的文章较量少案例也较量琐屑,因此写文章总结一下。本人也正在翻译Spring Data JPA 参考指南,有乐趣的同学接待接洽我,一起插手翻译中!

spring data jpa先容

首先相识JPA是什么?

JPA(Java Persistence API)是Sun官方提出的Java耐久化类型。它为Java开拓人员提供了一种工具/关联映射东西来打点Java应用中的干系数据。他的呈现主要是为了简化现有的耐久化开拓事情和整合ORM技能,竣事此刻Hibernate,TopLink,JDO等ORM框架各自为营的排场。值得留意的是,JPA是在充实接收了现有Hibernate,TopLink,劳务派遣管理系统,JDO等ORM框架的基本上成长而来的,具有易于利用,伸缩性强等利益。从今朝的开拓社区的回响上看,JPA受到了极大的支持和赞扬,个中就包罗了Spring与EJB3.0的开拓团队。

留意:JPA是一套类型,不是一套产物,那么像Hibernate,TopLink,JDO他们是一套产物,假如说这些产物实现了这个JPA类型,那么我们就可以叫他们为JPA的实现产物。

spring data jpa

Spring Data JPA 是 Spring 基于 ORM 框架、JPA 类型的基本上封装的一套JPA应用框架,可使开拓者用极简的代码即可实现对数据的会见和操纵。它提供了包罗增删改查等在内的常用成果,且易于扩展!进修并利用 Spring Data JPA 可以极大提高开拓效率!

spring data jpa让我们摆脱了DAO层的操纵,根基上所有CRUD都可以依赖于它来实现。

根基查询

根基查询也分为两种,软件开发,一种是spring data默认已经实现,一种是按照查询的要领来自动理会成SQL。

预先生成要领

spring data jpa 默认预先生成了一些根基的CURD的要领,譬喻:增、删、改等等。

1 担任JpaRepository

public interface UserRepository extends JpaRepository<User, Long> {
}

2 利用默认要领

@Test
public void testBaseQuery() throws Exception {
	User user=new User();
	userRepository.findAll();
	userRepository.findOne(1l);
	userRepository.save(user);
	userRepository.delete(user);
	userRepository.count();
	userRepository.exists(1l);
	// ...
}

就不表明白按照要领名就看出意思来。

自界说简朴查询

自界说的简朴查询就是按照要领名来自动生成SQL,主要的语法是findXXBy,readAXXBy,queryXXBy,countXXBy, getXXBy后头跟属性名称:

User findByUserName(String userName);

也利用一些加一些要害字And、 Or。

User findByUserNameOrEmail(String username, String email);

修改、删除、统计也是雷同语法。

Long deleteById(Long id);

Long countByUserName(String userName)

根基上SQL体系中的要害词都可以利用,譬喻:LIKE、 IgnoreCase、 OrderBy。

List<User> findByEmailLike(String email);

User findByUserNameIgnoreCase(String userName);
    
List<User> findByUserNameOrderByEmailDesc(String email);

详细的要害字,利用要领和出产成SQL如下表所示:

SpringBoot(五) : 劳务调派信息打点系统 spring data jpa 的操作SpringBoot(五) : 劳务调派信息打点系统 spring data jpa 的操作

巨大查询

在实际的开拓中我们需要用到分页、删选、连表等查询的时候就需要非凡的要领可能自界说SQL

分页查询

分页查询在实际利用中很是普遍了,spring data jpa已经帮我们实现了分页的成果,图纸加密,在查询的要领中,需要传入参数Pageable ,当查询中有多个参数的时候Pageable发起做为最后一个参数传入

Page<User> findALL(Pageable pageable);
    
Page<User> findByUserName(String userName,Pageable pageable);

Pageable 是spring封装的分页实现类,利用的时候需要传入页数、每页条数和排序法则

@Test
public void testPageQuery() throws Exception {
	int page=1,size=10;
	Sort sort = new Sort(Direction.DESC, "id");
    Pageable pageable = new PageRequest(page, size, sort);
    userRepository.findALL(pageable);
    userRepository.findByUserName("testName", pageable);
}

限制查询

有时候我们只需要查询前N个元素,可能支取前一个实体。

ser findFirstByOrderByLastnameAsc();

User findTopByOrderByAgeDesc();

Page<User> queryFirst10ByLastname(String lastname, Pageable pageable);

List<User> findFirst10ByLastname(String lastname, Sort sort);

List<User> findTop10ByLastname(String lastname, Pageable pageable);

自界说SQL查询