1. MyBatis
1) MyBatis 특징
- Java Object와 SQL문 사이의 자동 Mapping 기능을 지원하는 ORM 프레임워크
- SQL을 별도의 파일 분리해서 관리
- Object - SQL 사이의 parameter mapping 작업을 자동으로 해 줌
2. 코드 예제
1) mybatis-config
<?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>
<properties resource="com/ssafy/mybatis/config/dbinfo.properties"/>
<typeAliases>
<typeAlias type="com.ssafy.mybatis.model.MemberDto" alias="memberDto" />
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/ssafy/mybatis/config/MemberMapper.xml" />
</mappers>
</configuration>
2) MemberMapper.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.ssafy.mybatis.model.dao.MemberDao">
<resultMap type="memberDto" id="user">
<result column="user_id" property="userId" />
<result column="user_name" property="userName" />
<result column="user_password" property="userPwd" />
<result column="email_id" property="emailId" />
<result column="email_domain" property="emailDaomin" />
<result column="join_date" property="joinDate" />
</resultMap>
<insert id="joinMember" parameterType="memberDto">
insert into members
(user_id, user_name, user_password, email_id, email_domain, join_date)
values(#{userId}, #{userName}, #{userPwd}, #{emailId}, #{emailDomain},
now())
</insert>
<!-- <select id="listMember" resultType="memberDto"> select user_id userId,
user_name userName, user_password userPwd, email_id emailId, email_domain
emailDomain, join_date joinDate from members; </select> -->
<select id="listMember" resultType="user">
select *
from
members;
</select>
</mapper>
3) dbinfo.properties
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/ssafyweb?serverTimezone=UTC&useUniCode=yes&characterEncoding=UTF-8
username=ssafy
password=ssafy
4) SqlMapconfig.java
package com.ssafy.mybatis.config;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class SqlMapConfig {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "com/ssafy/mybatis/config/mybatis-config.xml";
Reader reader = Resources.getResourceAsReader(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession();
}
}
5) MemberDao.impl
package com.ssafy.mybatis.model.dao;
import java.sql.SQLException;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.ssafy.mybatis.config.SqlMapConfig;
import com.ssafy.mybatis.model.MemberDto;
public class MemberDaoImpl implements MemberDao {
@Override
public void joinMember(MemberDto memberDto) throws SQLException {
try (SqlSession sqlSession = SqlMapConfig.getSqlSession()){
sqlSession.insert("com.ssafy.mybatis.model.dao.MemberDao.joinMember", memberDto);
sqlSession.commit();
}
}
@Override
public List<MemberDto> listMember() throws SQLException {
try (SqlSession sqlSession = SqlMapConfig.getSqlSession()){
List<MemberDto> list = sqlSession.selectList("com.ssafy.mybatis.model.dao.MemberDao.listMember");
return list;
}
}
}
'Web > Spring' 카테고리의 다른 글
Rest API (0) | 2024.04.23 |
---|---|
MyBatis-Spring (0) | 2024.04.22 |
Interceptor, Filter, AOP (0) | 2024.04.18 |
SpringMVC (0) | 2024.04.17 |
AOP(관점 지향 프로그래밍) (0) | 2024.04.16 |