이틀간 설정때문에 고생해서.........
드디어 돌아가는 게 너모 기뻐서 저장용으로 써두기
일단 나는
1 매퍼(dao) 인터페이스 사용
2 mapper.xml 사용
3 application.properties 설정 사용
일단 나의 프로젝트 경로
이렇게 되어 있다
UsersMapper.java (인터페이스)
package com.with.hyuil.dao;
import com.with.hyuil.model.UsersVo;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface UsersMapper {
int insertUser(UsersVo usersVo);
}
얘는 따로 datasource 주입이나 session 만들 필요 없이
인터페이스에
내 mapper.xml 쿼리 id와 파라미터, 또는 resultType을 매핑해주는 용도로만 사용한다
UsersMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.with.hyuil.dao.UsersMapper">
<insert id="insertUser" parameterType="UsersVo">
INSERT INTO USERS
( ID, USER_ID, PASSWORD, EMAIL, TEL, NAME, WHERES, ROLE )
VALUES
( USERS_SEQ.NEXTVAL, #{userId}, #{password}, #{email}, #{tel}, #{name}, #{wheres}, #{role} )
</insert>
<select id="count" resultType="Integer">
SELECT COUNT(*)
FROM USERS
</select>
</mapper>
mapper namespace 를 주목하자 ! ㅅ !
나의 mapper 인터페이스의 경로와 동일하게 설정한다 !
id와 parameterType , resultType의 이름과 타입을
꼭 매퍼 인터페이스와 동일하게 설정해주자
UsersVo
package com.with.hyuil.model;
import lombok.Getter;
import javax.validation.constraints.Email;
@Getter
public class UsersVo {
private Long id;
private String userId;
private String password;
@Email
private String email;
private String tel;
private String name;
private Wheres wheres;
private Role role;
protected UsersVo() {}
public UsersVo(String userId, String password, String email, String tel, String name, Wheres wheres, Role role) {
this.userId = userId;
this.password = password;
this.email = email;
this.tel = tel;
this.name = name;
this.wheres = wheres;
this.role = role;
}
}
다른 설정에서는
@Mapper 애너테이션 붙여주는 경우도 많던데
내 경우엔 안 붙여줘도 잘 돌아가긴 한다
application.properties 에 설정해줘서 그런듯! (다음에 나옴)
application.properties
# MyBatis
mybatis.type-aliases-package=com.with.hyuil.model
mybatis.mapper-locations=classpath:/mapper/*.xml
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.type-aliases-package= 내 Vo 패키지 경로(UsersVo 경로)
mybatis.mapper-locations= mapper.xml의 경로
mybatis.configuration.map-underscore-to-camel-case= 카멜케이스 사용 여부
-----
참고로 나는 얘네 다 설정해도 해맸는데
ㅇㅖ전에 레거시프로젝트할때 기억이 혼합돼서
SqlSerssionFactory 에 datasource 주입하고 빈 등록도 해줬는데
걔를 등록하니까
스프링이 매퍼가 아닌 저 빈을 덮어서 읽어버려서
매퍼 경로를 못찾는 거였다....
컨피그레이션 삭제하니 잘 동작함 ^오^
'개발공부 개발새발 > DB' 카테고리의 다른 글
DB ) 인덱스 (0) | 2023.08.08 |
---|---|
DB ) 트랜잭션(의 격리수준) (0) | 2023.08.07 |
JPA ) JPA 요약 (내가 검색하는 용도) (2) | 2022.11.29 |
JPA ) 여러가지 값 타입~ (0) | 2022.11.25 |
JPA ) 영속성 전이, 고아 객체 (0) | 2022.11.25 |