
@Override
public void run(ApplicationArguments args) throws Exception {
Example<Member> example=Example.of(
Member.builder().name("길동"). age(10).build(),
ExampleMatcher.matchingAll()
);
List<Member> members=memberRepository.findAll(Example);
members.forEach(member => log.info("{}", member);
}
in 레포지터리
@Repository
public interface MemberRepository extends JpaRepository<Member, Long> {
List<Member> findAllByName(String name);
List<Member> findByName(String name);
List<Member> findByNameIs(String name);
List<Member> findByNameEquals(String name);
public void saveUser(UserCreateRequest request) {
userRepository.save(new User(request.getName(), request.getAge()));
save 메소드에 객체를 넣어주면 INSERT SQL이 자동으로 날라간다.
이때 id가 담겨있다.
public List<UserResponse> getUsers() {
return users.stream()
.map(user -> new UserResponse(user.getId(), user.getName(), user.getAge()))
.collect(Collectors.toList());
}
모든 데이터 조회
public void updateUser(UserCreateRequest request) {
User user = userRepository.findById(request.getId())
.orElseThrow(IllegalArgumentException::new);
user.updateName(request.getName());
userRepository.save(user);
User 객체에 .updateName(String name)을 만들고 .save()로 처리
*참고로 예외처리도 해야한다.
.delete(삭제할 곳 입력)
.deletById()
.deletAll()
= DELETE FROM user WHERE name = ?
인터페이스 내에 findByName 함수 만들기
= select * from 테이블명 WHERE 필드이름 = ?;
public interface UserRepository extends JpaRepository<User, Long> {
User findByName(String name);
}
By 뒤에 붙는 필드 이름으로 SELECT 쿼리의 WHERE문이 작성된다.
//ex
List<User> findAllByAgeBetween(int starAge, int endAge);
// = SELECT * FROM user WHERE age BETWEEN ? AND ?
직접 SQL문 입력 가능
@Query("SELECT * FROM member WHERE age >=13 AND age <= 19")
List<member> findTeenAge;