1. 프로젝트 생성 및 설정
1) bulid.gradle
2) application.properties
server.port = 8081
# JSP
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
# oracle set
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521/xe
spring.datasource.username=(db 생성 id)
spring.datasource.password=(db 생성 pw)
spring.datasource.hikari.maximum-pool-size=5
spring.jpa.database-platform=org.hibernate.dialect.OracleDialect
spring.jpa.open-in-view=false
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true
# none, create, create-drop, update, validate
spring.jpa.properties.hibernate.hbm2ddl.auto=create #처음 생성 1회 이후 none으로 변경
# show sql data binding
logging.level.org.hibernate.SQL=debug
logging.level.org.hibernate.orm.jdbc.bind=trace
2. 코드 작성
1) Member
package com.study.springboot.jpa;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Getter
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Builder
@Entity(name = "JPAREPO")
public class Member {
@Id
@GeneratedValue
private Long id;
private String name;
private String email;
}
2) MemberRepository 인터페이스
package com.study.springboot.jpa;
import java.util.List;
import java.util.Optional;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface MemberRepository extends JpaRepository<Member, Long> {
Optional<Member> findByName(String keyword);
Optional<Member> findByEmail(String keyword);
List<Member> findByNameLike(String keyword);
}
3) MemberService
package com.study.springboot.jpa;
import java.util.List;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
@Service
public class MemberService {
@Autowired
private MemberRepository memberRepository;
public void insert() {
Member member;
member = Member.builder().name("홍길동").email("test01@test.com").build();
memberRepository.save(member);
member = Member.builder().name("김철수").email("test02@test.com").build();
memberRepository.save(member);
member = Member.builder().name("이영희").email("test03@test.com").build();
memberRepository.save(member);
member = Member.builder().name("박길동").email("test04@test.com").build();
memberRepository.save(member);
member = Member.builder().name("최길동").email("test05@test.com").build();
memberRepository.save(member);
}
public List<Member> selectAll() {
return memberRepository.findAll();
}
public Optional<Member> selectId(Long search) {
Optional<Member> member = memberRepository.findById(search);
return member;
}
public Optional<Member> selectName(String search) {
Optional<Member> member = memberRepository.findByName(search);
return member;
}
public Optional<Member> selectEmail(String search) {
Optional<Member> member = memberRepository.findByEmail(search);
return member;
}
public List<Member> selectNameLike(String search) {
List<Member> member = memberRepository.findByNameLike(search);
return member;
}
}
4) MyController
package com.study.springboot.jpa;
import java.util.List;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class MyController {
@Autowired
private MemberService memberService;
@RequestMapping("/")
public String root() throws Exception {
return "menu";
}
@RequestMapping("/insert")
public String insert(Member member, Model model) {
memberService.insert();
return "insert";
}
@RequestMapping("/selectAll")
public String selectAll(Model model) {
List<Member> result = memberService.selectAll();
model.addAttribute("members", result);
return "selectAll";
}
@RequestMapping("/selectId")
public String selectById(@RequestParam("id") Long search, Model model) {
Optional<Member> result = memberService.selectId(search);
model.addAttribute("member", result.get());
return "select_id";
}
@RequestMapping("/selectName")
public String selectByName(@RequestParam("name") String search, Model model) {
Optional<Member> result = memberService.selectName(search);
model.addAttribute("member", result.get());
return "select_name";
}
@RequestMapping("/selectEmail")
public String selectByEmail(@RequestParam("email") String search, Model model) {
Optional<Member> result = memberService.selectEmail(search);
model.addAttribute("member", result.get());
return "select_email";
}
@RequestMapping("/selectByNameLike")
public String selectByNameLike(@RequestParam("name") String search, Model model) {
String name = search + "%";
List<Member> result = memberService.selectNameLike(name);
model.addAttribute("member", result);
return "select_name_list";
}
}
3. 화면 구성 및 실행 결과
1) menu.jsp
2) insert.jsp
insert 실행 후 설정 변경
3) selectAll.jsp
4) select_id.jsp
5) select_name.jsp
6) select_email.jsp
7) select_name_list.jsp
'Framework > SpringBoot' 카테고리의 다른 글
[Spring Boot] CrudRepository, RestController (0) | 2023.11.30 |
---|---|
[Spring Boot] JPA로 게시판 구현하기 (0) | 2023.11.29 |
[Spring Boot] JPA로 CRUD 적용하기 (0) | 2023.11.27 |
[Spring Boot] JPA 사용하기② (1) | 2023.11.23 |
[Spring Boot] JPA 사용하기 (0) | 2023.11.22 |