注册外贸网站有哪些,局域网搭建的步骤,珠海建站网站模板,免费自动生成小程序PA的全称是Java Persistence API (JPA)#xff0c;他是一个存储API的标准#xff0c;而Spring data JPA就是对JPA的一种实现#xff0c;可以让我们方便的对数据进行存取。按照约定好的方法命名规则写dao层接口#xff0c;从而在不实现接口的情况下#xff0c;实现对数据库…PA的全称是Java Persistence API (JPA)他是一个存储API的标准而Spring data JPA就是对JPA的一种实现可以让我们方便的对数据进行存取。按照约定好的方法命名规则写dao层接口从而在不实现接口的情况下实现对数据库的访问和操作。同时提供了很多除了CRUD之外的功能如分页、排序、复杂查询等等。Spring data JPA可以看做是对Hibernate的二次封装。本文将会以一个具体的例子来讲解怎么在Spring Boot中使用Spring data JPA。添加依赖我们要添加如下的Spring data JPA依赖为了方便测试我们添加一个h2的内存数据库org.springframework.boot spring-boot-starter-data-jpa com.h2database h2 runtime添加entity bean我们来创建一个entity beanEntityDatapublic class Book { Id GeneratedValue(strategy GenerationType.AUTO) private long id; Column(nullable false, unique true) private String title; Column(nullable false) private String author;}创建 Daopublic interface BookRepository extends JpaRepository { List findByTitle(String title); Query(SELECT b FROM Book b WHERE LOWER(b.title) LOWER(:title)) Book retrieveByTitle(Param(title) String title);}所有的Dao都需要继承Repository接口Repository是一个空的接口Indexedpublic interface Repository {}如果要使用默认的通用的一些实现则可以继承CrudRepository PagingAndSortingRepository和JpaRepository。上面的例子中我们继承了JpaRepository。上面的例子中我们创建了一个按Title查找的方法List findByTitle(String title);这个方法我们是不需要自己去实现的Spring Data JPA会帮我们去实现。我们可以使用find…By, read…By, query…By, count…By,和 get…By的格式定义查询语句By后面接的就是Entity的属性。除了And我们还可以使用Or来拼接方法下面我们再举个例子interface PersonRepository extends Repository { List findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname); // Enables the distinct flag for the query List findDistinctPeopleByLastnameOrFirstname(String lastname, String firstname); List findPeopleDistinctByLastnameOrFirstname(String lastname, String firstname); // Enabling ignoring case for an individual property List findByLastnameIgnoreCase(String lastname); // Enabling ignoring case for all suitable properties List findByLastnameAndFirstnameAllIgnoreCase(String lastname, String firstname); // Enabling static ORDER BY for a query List findByLastnameOrderByFirstnameAsc(String lastname); List findByLastnameOrderByFirstnameDesc(String lastname);}当然处理方法拼接外我们还可以自定义sql查询语句 Query(SELECT b FROM Book b WHERE LOWER(b.title) LOWER(:title)) Book retrieveByTitle(Param(title) String title);自定义查询语句给Spring data JPA提供了更大的想象空间。Spring Data Configuration要使用Spring Data JPA, 我们还需要在配置文件中指定要扫描的目录使用EnableJpaRepositories注解来实现ConfigurationEnableJpaRepositories(basePackages com.flydean.repository)public class PersistenceConfig {}我们还需要在配置文件中指定数据源的属性spring.datasource.urljdbc:h2:mem:db;DB_CLOSE_DELAY-1spring.datasource.usernamesaspring.datasource.passwordsa测试有了上面的一切我们就可以测试我们的数据源了Slf4jRunWith(SpringRunner.class)SpringBootTest(classes {JpaApp.class})public class BookRepositoryTest { Autowired private BookRepository bookRepository; Test Transactional(readOnlyfalse) public void testBookRepository(){ Book book new Book(); book.setTitle(randomAlphabetic(10)); book.setAuthor(randomAlphabetic(15)); bookRepository.save(book); bookRepository.findByTitle(book.getTitle()).forEach(e - log.info(e.toString())); log.info(bookRepository.retrieveByTitle(book.getTitle()).toString()); }}欢迎关注我的公众号:程序那些事更多精彩等着您更多内容请访问:flydean的博客 flydean.com