Spring Data JPA 提供的核心接口
1、Repository接口
2、CrudRepository接口
3、PagingAndSortingRepository接口
4、JpaRepository接口
5、JpaSpecificationExecutor接口
Repository接口使用
1、提供了方法名称命名方式
持久层接口编写:
/**
* Repository接口的方法名称命名查询
*/
public interface UsersRepositoryByName extends Repository<Users, Integer> {
//方法名称必须要遵循驼峰式命名规则。findBy(关键字)+属性名称(首字母要大写)+查询条件
/**
* 通过name查询人名
*
* @param name
* @return
*/
List<Users> findByName(String name);
/**
* 通过name和age,都满足的数据
*
* @param name
* @param age
* @return
*/
List<Users> findByNameAndAge(String name, Integer age);
/**
* 查询like name
* 测试的参数可以是{"zhang%","%zhang%"}
* 测试的参数如果是{"zhang"},意味着精确查找name为zhang的数据
*
* @param name
* @return
*/
List<Users> findByNameLike(String name);
/**
* 查询以name开头的,满足条件的数据
*
* @param name
* @return
*/
List<Users> findByNameStartsWith(String name);
/**
* 查询以name结尾的数据
*
* @param name
* @return
*/
List<Users> findByNameEndingWith(String name);
}
测试类:
@RunWith(SpringRunner.class)
@SpringBootTest
public class UsersRepositoryByNameTest {
@Autowired
private UsersRepositoryByName usersRepositoryByName;
//通过name查询人名
@Test
public void findByName() {
List<Users> list = usersRepositoryByName.findByName("zhangsan");
for (Users u : list) {
System.out.println(u);
}
}
//通过name和age,都满足的数据
@Test
public void findByNameAndAge() {
List<Users> list = usersRepositoryByName.findByNameAndAge("zhangsan", 22);
for (Users u : list) {
System.out.println(u);
}
}
//查询一zhang开头的name
@Test
public void findByNameLike() {
List<Users> list = usersRepositoryByName.findByNameLike("zhang");
for (Users u : list) {
System.out.println(u);
}
}
//查询以name开头的,满足条件的数据
@Test
public void findByNameStartsWith() {
List<Users> list = usersRepositoryByName.findByNameStartsWith("zhang");
for (Users u : list) {
System.out.println(u);
}
}
//查询以name结尾的数据
@Test
public void findByNameEndingWith() {
List<Users> list = usersRepositoryByName.findByNameEndingWith("a");
for (Users u : list) {
System.out.println(u);
}
}
}
本文源码下载:
github地址:
https://github.com/gb-heima/Spring-Boot-Actual-Combat/tree/master/parent/spring-boot-chapter-9