application.yml
mybatis:
# mapper.xml 경로(resources 안의 mapper.xml 담을 폴더명)
mapper-locations:
- classpath:mappers/*.xml
# config.xml 경로
config-location:
- classpath:*.xml
# DTO, VO 등의 도메인 클래스가 포함된 패키지 경로
# 이 항목을 설정하지 않으면 mapper.xml에서 DTO, VO를 사용할 때 패키지 경로를 모두 작성해야 함
type-aliases-package: com.group.package
# Mybatis의 SQL 문에 null을 파라미터로 전송할 수 있게 해줌
configuration:
jdbc-type-for-null: null
config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias alias="userRequest" type="com.group.package.model.UserRequest"/>
</typeAliases>
</configuration>
mapper.xml (Mapping 파일)
<?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.group.package.UserMapper">
<!--
실행할 sql 문들
id: 선언 시 사용할 이름
parameterType: String, model 경로 기입
resultType: 반환 받을 타입 기입
-->
<select id="find" parameterType="String" resultType="UserResponse">
select id, mem_name, pw
from user
where id = #{id} and mem_name = #{name}
</select>
<insert id="create" parameterType="com.group.package.model.UserRequest">
insert into user(id, mem_name, phone_num, pw)
values (#{id}, #{memName}, #{phoneNum}, #{pw})
</insert>
</mapper>
Mapper.interface
@Mapper
public interface UserMapper {
// xml에 적었던 sql문들에 대한 id를 통해 선언
Optional<UserResponse> find(String id, String name);
boolean create(UserRequest request);
}
@Mapper
public interface BoardMapper {
@Insert("insert into user (id, name) values (#{id}, #{name})")
void create(UserRequest request) throws Exception;
}
Service
@Service
public class UserService {
// 생성자를 통해 Autowired 역할 해주기
private final SqlSession sqlSession;
public UserService(SqlSession sqlSession) {
this.sqlSession = sqlSession;
}
public void test(Request request){
sqlSession.getMapper(UserMapper.class).find(request)
}
}
max size limit 가능 여부
VARCHAR: 있다, 1~65535
TEXT: 없다, only 65535
Type | Description | Byte |
---|---|---|
CHAR | 고정형 | n ≤ 255 |
VARCHAR | 가변형 | n ≤ 65535 |
TEXT | 가변형 | n ≤ 65535 |
public T orElse(T other)
public T orElseGet(Supplier<? extends T> other)
Supplier은 함수적 인터페이스로서 get을 호출하여 결과를 리턴하는 역할
매개변수를 받지 않고 단순히 반환함