config.xml
: DB를 연동하기 위한 설정값들과mapper.xml
을 등록하기 위한 xml
mapper.xml
: SQL 구문을 담고 있는 xml
- JDBC의 모든 기능을 Mybatis가 대부분 제공한다.
- 복잡한 JDBC코드를 걷어내며 깔끔한 소스코드를 유지할 수 있다.
- 수동적인 파라미터 설정과 쿼리 결과에 대한 맵핑 구문을 제거할 수 있다.
- SQL에 변경이 있을 때마다 자바 코드를 수정하거나 컴파일하지 않아도 된다
<?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>
<environments default="developerment">
<environment id="developerment">
<transactionManager type="JDBC" />
<dataSource type="POOLED"> <!-- 데이터베이스의 풀, 영역-->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/> <!-- DB에 대한 정보 -->
<property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mybatis/mapper.xml"/>
</mappers>
</configuration>
<select id="외부에서 접근할 문자열" parameterType="object" resultType="object">
<!-- 쿼리문 -> #{문자열(값)} / ${숫자} -->
select id, name, email
where id = ''
</select>
<?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">
<!-- Query -->
<mapper namespace="mybatis.mapper">
<insert id="addmember" parameterType="dto.MemberDto">
insert into member(id, pwd, name, email, auth)
value(#{id}, #{pwd}, #{name}, #{email}, 3)
</insert>
<select id="getMember" parameterType="java.lang.String"
resultType="dto.MemberDto">
select id, pwd, name, email, auth
from member
where id = #{id}
</select>
<!-- parameterType 생략 가능 -->
<select id="allMember" resultType="dto.MemberDto">
select * from member
</select>
<delete id="deleteMember" parameterType="String">
delete from member
where id = #{id}
</delete>
<update id="updateMember" parameterType="dto.MemberDto">
update member
set name = #{name}, email = #{email}
where id = #{id}
</update>
</mapper>
// 설정파일 read
InputStream is = Resources.getResourceAsStream("mybatis/config.xml");
// SqlSessionFactory 객체를 생성
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
// SqlSession 객체를 취득
SqlSession session = factory.openSession();
mapper.xml
에 작성했던 쿼리문 실행// insert
MemberDto dto = new MemberDto("abc", "123", "무민", "abc@naver.com", 0);
int count = session.insert("addmember", dto);
if(count > 0) {
session.commit();
System.out.println("추가성공!");
}else {
session.rollback();
System.out.println("추가실패!");
}
// select (1개의 데이터)
String id = "abc";
MemberDto dto = session.selectOne("getMember", id);
System.out.println(dto.toString());
// select (다수의 데이터)
List<MemberDto> list = session.selectList("allMember");
for (MemberDto m : list) {
System.out.println(m.toString());
}
https://velog.io/@woody_/Mybatis-%EC%B4%88%EA%B8%B0-%EC%84%A4%EC%A0%95-%EB%B0%8F-xml-%ED%8C%8C%EC%9D%BC-%EC%84%A4%EC%A0%95
https://velog.io/@changyeonyoo/Mybatis%EB%9E%80-%EC%9E%A5%EC%A0%90-%ED%8A%B9%EC%A7%95-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8