转载自:https://www.cnblogs.com/vincentren/p/8336435.html
第一章
Maven
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
entity
@Entity
@Table(name = "student")
@Data
@ToString
public class Student {
@Id
private Long id;
private String name;
private Integer age;
private Long schoolId;
}
Repository
public interface StudentRepository extends CrudRepository<Student,Long> {
}
CrudRepository类
@NoRepositoryBean
public interface CrudRepository<T, ID extends Serializable> extends Repository<T, ID> {
<S extends T> S save(S var1);
<S extends T> Iterable<S> save(Iterable<S> var1);
T findOne(ID var1);
boolean exists(ID var1);
Iterable<T> findAll();
Iterable<T> findAll(Iterable<ID> var1);
long count();
void delete(ID var1);
void delete(T var1);
void delete(Iterable<? extends T> var1);
void deleteAll();
}
这边已经定义好了很多方法。
在开发中,我们可以直接通过注入StudentRepository的方式来对Student这个表进行操作。
@RestController
public class DemoController {
@Autowired
private StudentRepository studentRepository;
@RequestMapping("/studentTest")
public String studentTest(){
return studentRepository.findAll().toString();
}
}
原理就是在spring启动的时候会创建StudentRepository的动态代理类。
除了CrudRepository定义的类之外,我们可以自定义些查询方法。
根据条件查询前几个
在StudentRepository中加入下面方法。根据age查询匹配的前2个。
List<Student> findTop2ByAge(Integer age);