- 1211 WebServer 4일차2023년 12월 11일 16시 07분 14초에 업로드 된 글입니다.작성자: 삶은고구마
명시적 초기화 clean ->이전에 빌드된 파일을 없앤다.
module - mybatis 이어서..
모듈 구조 entity
멤버 클래스 Member
enum 클래스 Gender , Role
참고 용 블로그:
☕ 자바 Enum 열거형 타입 문법 & 응용 💯 정리
Enum 열거 타입 먼저 Enum은 "Enumeration"의 약자다. Enumeration은 "열거, 목록, 일람표" 라는 뜻을 가지고 있으며, 보통 한글로는 열거형이라고 부른다. 즉, 열거형(enum)은 요소, 멤버라 불리는 명명된 값
inpa.tistory.com
상수 대신 enum을 사용하는 이유
아이디, 멤버 타입, 성별 필드를 가진 멤버객체를 생성시..
평소처럼 상수를 사용하면.. 혼용될 가능성이 높다.
public static final String TPYE = "M"; //MANAGER 의 뜻
public static final String GENDER = "M"; //MALE 의 뜻
해당필드에는 String만 오면 ok인데다가,
type과 gender변수는 같은 문자열을 갖고 있으므로 둘의 위치가 바뀌어도 test 시 이상이 없다고 판별된다.
혹은 엉뚱한 String값이 오거나, 값이 없어도 문제가 없다고 판단할 때도있음.
그럼 언제 enum을 사용할까?
1.필드값을 좀 더 명확하게 구분하고/사용하고싶을 때.
2.DB에서 check 제약조건이 걸려있는 경우에 나는 성별 컬럼에 Male / Female만 쓰겠다.
할 때.
그 동안 상수를 사용했는데 앞으로는 enum클래스를 사용해야겠다..
//상수 변수를 사용하면 전혀 다른 의미로 사용된 변수인데도 //변수의 값이 같으면 유효성검증에서 이상이 없다 판단 // @Test public void test1() { // Member member = new Member("sinsa",Gender.M,Gender.F); //컴파일오류 Member member = new Member("sinsa",Type.M,Gender.F); assertThat(member.type).isEqualTo(Type.M); assertThat(member.gender).isEqualTo(Gender.F); Member admin = new Member("damgom",Type.A,Gender.M); assertThat(admin.type).isEqualTo(Type.A); assertThat(admin.gender).isEqualTo(Gender.M); }
annotaion - disable 시 해당 코드블럭은 작동하지 않는다.
@Disabled @DisplayName("회원 비밀번호 수정하기") @Test public void test10() { String id = "honggd"; //일단, honggd란 id를 가진 멤버를 조회한다... Member member = memberService.findById(id); //새 패스워드를 해당 멤버 객체에 set한다. String newPassword = "9999"; member.setPassword(newPassword); int result = memberService.updateMember(member); assertThat(result).isGreaterThan(0); //다시 멤버 조회를 해서 newPassword와 getPassword가 일치하는지 확인. Member member2 = memberService.findById(id); assertThat(member2.getPassword()).isEqualTo(newPassword); }
결과 TestMethodOrder로 Test 순서를 지정 할 수 있다.
테스트 할 클래스 상단에 TestMethodOrder를 선언한 후,
원하는 순서대로 Order(순번)을 지정해주면 된다.
@TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class MemberServiceTest { MemberService memberService; //test 대상(fixture) . . . @Order(1) @DisplayName("회원 가입") @Test public void test7() { String id = "honggd"; . . } @Order(2) @DisplayName("회원 가입 시 오류 체크") @Test public void test8() { . .
https://effortguy.tistory.com/120
[Java] JUnit 5 사용법 (7) - 테스트 순서 (@TestMethodOrder)
이번 시간엔 JUnit 5 의 테스트 간 순서를 정하는 방법에 대해 알아보겠습니다. JUnit 5의 테스트 순서 @TestMethodOrder에 쓰여져있는 주석으로 설명드리겠습니다. "@TestMethodOrder가 선언되어있지 않다면
effortguy.tistory.com
member-mapper.xml - sql문 작성
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="member"> <!-- <select id="findById" resultType="com.sh.mybatis.member.model.entity.Member">--> <select id="findById" resultType="member"> <!-- 멀티 라인 가능 #{id} 전달된 id값으로 치환 java jdbc에선 ?로 사용했었음. id="findById" 에서 id는 태그 식별자 resultType ResultSet이 한행이 변환될 타입 (fullname or alias) 위에 패키지명까지 합쳐서 풀로 적는게 fullname 1211 full name에서 alias로 변경. (config에서 별칭설정해줘야한다) --> select * from member where id = #{id} </select> <!-- 1.resultType은 꼭 작성하자. 2.resultType의 속성은 한 행과 매칭되는 타입을 작성한다. 3.내가 받고 싶은건 리스트이지만, member 한행 한행이 모여서 list가 되는 것 --> <select id="findAll" resultType="member"> select * from member order by reg_date desc </select> <select id="findByName" resultType="member"> select * from member where name like '%' ||#{name} ||'%' </select> <select id="findByGender" resultType="member"> select * from member where gender = #{gender} </select> <!-- select문에만 resultType 명시, insert에는 기본이라 안적어도 됨 insert시 넘어가는건 member객체라 필드값만 적어주면 ok --> <insert id="insertMember"> insert into member values( #{id},#{password},#{name},#{role},#{gender},#{birthday}, #{email},#{phone},#{hobby, typeHandler=ListStringTypeHandler},default,default ) </insert> <update id = "updateMember"> update member set name = #{name}, password = #{password}, role = #{role}, gender = #{gender}, birthday = #{birthday}, email = #{email}, phone = #{phone} where id = #{id} </update> <delete id="deleteMember"> delete from member where id = #{id} </delete> </mapper>
mvc 패턴 연습
1.모듈 생성
2.구조
오타나서 helloo가 되어버림. 3.이번 모듈에서는 header / main(content) / footer 영역을 나눌 수 있다.
예제로 받은 index.jsp를 3등분으로 나누자.
1.머리를 가져가는 header.jsp 👱🏻♀️
2.몸통을 가진 index.jsp (main)
3.다리를 가져간 footer.jsp 🦵🏻
3등분 한 뒤 index.jsp를 확인하면 나누기 전과 동일한 구조로 웹 브라우저에 출력된다.
'공부 > web-server' 카테고리의 다른 글
1214 WebServer 7일차 (1) 2023.12.14 1212 WEB SERVER 5일차 (0) 2023.12.12 1208 WEB SERVER 3일차 (0) 2023.12.08 1207 WEB SERVER 2일차 (2) 2023.12.07 1205 정규화&UML (0) 2023.12.05 다음글이 없습니다.이전글이 없습니다.댓글