아악 오류 개킹받아
여기서 돌려보고 안돌아가면 java에서도 안돌아간다.
SELECT * FROM MEMBER;
--- 테이블 컬럼에 값이 있으면 업데이트하고 없으면 업데이트 하지 않기
-- 가변부분이 if문에 의해 처리 됨
UPDATE member SET username='a', userage=12, userphone='M', userid='a';
UPDATE member SET username='a', userage=12, userphone='M';
UPDATE member SET username='a', userage=12;
UPDATE member SET username='a';
-- (자바 오류)(해결)
MyBatisContext가 dto(private~블라블라)와 junit 혹은 main과 Mapper를 이어준다.
MyBatis란?
쿼리 기반 웹 애플리케이션을 개발할 때 가장 많이 사용되는 SQL 매퍼(Mapper) 프레임워크이다.
- 마이바티스를 사용하지 않고 직접 JDBC를 이용할 경우 문제점:
개발자가 반복적으로 작성해야 할 코드가 많고, 서비스 로직 코드와 쿼리를 분리하기가 어렵다. 또한 커넥션 풀의 설정 등 개발자가 신경 써야 할 부분이 많아 여러 가지 어려움이 있다. 따라서, JDBC를 이용해서 직접 개발하기보다는 마이바티스와 같은 프레임워크를 사용하는 게 일반적이다.- JDBC를 이용하여 프로그래밍을 하는 방식:
클래스나 JSP와 같은 코드 안에 SQL문을 작성하는 방식
따라서 SQL의 변경 등이 발생할 경우 프로그램을 수정해야 한다.
-> 유연하지 않다, 코드가 복잡하게 섞여 있어서 가독성도 떨어짐
마이바티스에서는 SQL을 XML 파일에 작성하기 때문에, SQL의 변환이 자유롭고 가독성도 좋다.
마이바티스(MyBatis)란?
가독성이 좋구나 그게 좋은거구나
// 있으면 바꾸고 없으면 안바꾸는 걸 할거임
// 가변부분이 if문에 의해 처리 됨
@Update({
" <script> ",
" UPDATE member SET username=#{obj.username} ",
" <if test = 'obj.userage !=0'> ",
" , userage=#{obj.userage} ",
" </if> ",
" <if test = 'obj.userphone != null'> ",
" , userphone=#{obj.userphone} ",
" </if> ",
" <if test = 'obj.usergender !=null'> ",
" , usergender=#{obj.usergender} ",
" </if> ",
"WHERE userid = #{obj.userid}",
" </script> "
})
public int memberUpdateOne(@Param("obj") Member obj);
//이게 좋은거였어
Junit test case 파일에서 돌리기(일종의 main, 그러나 주석을 안잡아도 되는)
JUnit을 활용한 Java 단위 테스트 코드 작성법
@Test
void memberUpdateOne() {
Member m = new Member();
m.setUserid("a2");
m.setUsername("aaaa");
m.setUserage(12);
m.setUserphone("051");
m.setUsergender("M");
int ret = mapper.memberUpdateOne(m);
System.out.println(ret);
}