본문 바로가기
Web/Spring

MyBatis

by 당진개발자 2024. 4. 19.

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