jpa (Java Persistence API) 是 Sun 官方提出的 Java 持久化规范。它为 Java 开发人员提供了一种对象/关联映射工具来管理 Java 应用中的关系数据。它的出现主要是为了简化现有的持久化开发工作和整合 ORM 技术,结束现在 Hibernate,TopLink,JDO 等 ORM 框架各自为营的局面
现在pom.xml 配置下面代码
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
- 继承 JpaRepository
package com.wxx.springboot.model;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @authorxxw
*/
public interface UserRepository extends JpaRepository<User1,Long> {
User1 findByUserName(String userName);
User1 findByUserNameOrEmail(String username, String email);
}
查看里面的默认方法
package org.springframework.data.jpa.repository;
import java.util.List;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Sort;
import org.springframework.data.repository.NoRepositoryBean;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.QueryByExampleExecutor;
@NoRepositoryBean
public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {
List<T> findAll();
List<T> findAll(Sort var1);
List<T> findAllById(Iterable<ID> var1);
<S extends T> List<S> saveAll(Iterable<S> var1);
void flush();
<S extends T> S saveAndFlush(S var1);
void deleteInBatch(Iterable<T> var1);
void deleteAllInBatch();
T getOne(ID var1);
<S extends T> List<S> findAll(Example<S> var1);
<S extends T> List<S> findAll(Example<S> var1, Sort var2);
}
根据方法名生成SQL
User1 findByUserName(String userName);
分页查询
@Test
public void testPageQuery() throws Exception {
int page=1,size=10;
Sort sort = Sort.by("id");
Pageable pageable = PageRequest.of(page, size, sort);
userRepository.findALL(pageable);
userRepository.findByUserName("testName", pageable);
}
自定义sql 查询
@Modifying
@Query("update User u set u.userName = ?1 where u.id = ?2")
int modifyByIdAndUserId(String userName, Long id);
/**
* @Transactional 对事务的支持,查询超时的设置等
* @Modifying 删除和修改在需要加
* @Query 查询注解
* @param id
*/
@Transactional
@Modifying
@Query("delete from User where id = ?1")
void deleteByUserId(Long id);
@Transactional(timeout=10)
@Query("select u from User u where u.emailAddress = ?1")
User1 findByEmailAddress(String emailAddress);
网友评论