mybatis 프레임워크에는 XML 기반의 매퍼 파일과 Interface 기반의 매퍼 파일을 이용하여 매퍼설정이 가능하고 매퍼 바인딩사용도 가능하다.
환경설정 파일
</configuration>
...
...
<environments>...</environments>
<mappers>
<mapper resource="xyz/itwill/mapper/StudentMapper.xml"/>
<mapper resource="xyz/itwill/mapper/MyMemberXMLMapper.xml"/>
<package name="xyz.itwill.mapper"/>
</mappers>
</configuration>
xml
mapper(xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="MyMemberXMLMapper">
<insert id="insertMember" parameterType="MyMember">
insert into mymember values(#{id},#{name},#{phone},#{email})
</insert>
<update id="updateMember" parameterType="MyMember">
update mymember set name=#{name},phone=#{phone},email=#{email} where id=#{id}
</update>
<delete id="deleteMember" parameterType="string">
delete from mymember where id=#{id}
</delete>
<select id="selectMember" parameterType="string" resultType="MyMember">
select * from mymember where id=#{id}
</select>
<select id="selectMemberList" resultType="MyMember">
select * from mymember order by id
</select>
</mapper>
DAO(xml)
package xyz.itwill.dao;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import xyz.itwill.dto.MyMember;
public class MyMemberXMLDAO {
private static MyMemberXMLDAO _dao;
private MyMemberXMLDAO() {
}
static {
_dao=new MyMemberXMLDAO();
}
public static MyMemberXMLDAO getDAO() {
return _dao;
}
private SqlSessionFactory getSqlSessionFactory() {
String resource="mybatis-config.xml";
InputStream inputStream=null;
try {
inputStream=Resources.getResourceAsStream(resource);
} catch (IOException e) {
throw new IllegalArgumentException(e);
}
return new SqlSessionFactoryBuilder().build(inputStream);
}
public int insertMember(MyMember member) {
SqlSession sqlSession=getSqlSessionFactory().openSession();
try {
int rows=sqlSession.insert("MyMemberXMLMapper.insertMember",member);
if(rows>0) {
sqlSession.commit();
} else {
sqlSession.rollback();
}
return rows;
} finally {
sqlSession.close();
}
}
public int updateMember(MyMember member) {
SqlSession sqlSession=getSqlSessionFactory().openSession(true);
try {
return sqlSession.update("MyMemberXMLMapper.updateMember", member);
} finally {
sqlSession.close();
}
}
public int deleteMember(String id) {
SqlSession sqlSession=getSqlSessionFactory().openSession(true);
try {
return sqlSession.delete("MyMemberXMLMapper.deleteMember", id);
} finally {
sqlSession.close();
}
}
public MyMember selectMemeber(String id) {
SqlSession sqlSession=getSqlSessionFactory().openSession(true);
try {
return sqlSession.selectOne("MyMemberXMLMapper.selectMember",id);
} finally {
sqlSession.close();
}
}
public List<MyMember> selectMemberList() {
SqlSession sqlSession=getSqlSessionFactory().openSession(true);
try {
return sqlSession.selectList("MyMemberXMLMapper.selectMemberList");
} finally {
sqlSession.close();
}
}
}
interface
mapper(interface)
package xyz.itwill.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import xyz.itwill.dto.MyMember;
public interface MyMemberInterfaceMapper {
@Insert("insert into mymember values(#{id},#{name},#{phone},#{email})")
int insertMember(MyMember member);
@Update("update mymember set name=#{name},phone=#{phone},email=#{email} where id=#{id}")
int updateMember(MyMember member);
@Delete("delete from mymember where id=#{id}")
int deleteMember(String id);
@Select("select * from mymember where id=#{id}")
MyMember selectMember(String id);
@Select("select * from mymember order by id")
List<MyMember> selectMemberList();
}
DAO(interface)
package xyz.itwill.dao;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import xyz.itwill.dto.MyMember;
import xyz.itwill.mapper.MyMemberInterfaceMapper;
public class MyMemberInterfaceDAO {
private static MyMemberInterfaceDAO _dao;
private MyMemberInterfaceDAO() {
}
static {
_dao=new MyMemberInterfaceDAO();
}
public static MyMemberInterfaceDAO getDAO() {
return _dao;
}
private SqlSessionFactory getSqlSessionFactory() {
String resource="mybatis-config.xml";
InputStream inputStream=null;
try {
inputStream=Resources.getResourceAsStream(resource);
} catch (IOException e) {
throw new IllegalArgumentException(e);
}
return new SqlSessionFactoryBuilder().build(inputStream);
}
public int insertMember(MyMember member) {
SqlSession sqlSession=getSqlSessionFactory().openSession(true);
try {
return sqlSession.getMapper(MyMemberInterfaceMapper.class).insertMember(member);
} finally {
sqlSession.close();
}
}
public int updateMember(MyMember member) {
SqlSession sqlSession=getSqlSessionFactory().openSession(true);
try {
return sqlSession.getMapper(MyMemberInterfaceMapper.class).updateMember(member);
} finally {
sqlSession.close();
}
}
public int deleteMember(String id) {
SqlSession sqlSession=getSqlSessionFactory().openSession(true);
try {
return sqlSession.getMapper(MyMemberInterfaceMapper.class).deleteMember(id);
} finally {
sqlSession.close();
}
}
public MyMember selectMemeber(String id) {
SqlSession sqlSession=getSqlSessionFactory().openSession(true);
try {
return sqlSession.getMapper(MyMemberInterfaceMapper.class).selectMember(id);
} finally {
sqlSession.close();
}
}
public List<MyMember> selectMemberList() {
SqlSession sqlSession=getSqlSessionFactory().openSession(true);
try {
return sqlSession.getMapper(MyMemberInterfaceMapper.class).selectMemberList();
} finally {
sqlSession.close();
}
}
}
매퍼 바인딩(Mapper Binding)(xml + interface)
mapper(매퍼 바인딩xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="xyz.itwill.mapper.MyMemberMapper">
<insert id="insertMember" parameterType="MyMember">
insert into mymember values(#{id},#{name},#{phone},#{email})
</insert>
<update id="updateMember" parameterType="MyMember">
update mymember set name=#{name},phone=#{phone},email=#{email} where id=#{id}
</update>
<delete id="deleteMember" parameterType="string">
delete from mymember where id=#{id}
</delete>
<select id="selectMember" parameterType="string" resultType="MyMember">
select * from mymember where id=#{id}
</select>
<select id="selectMemberList" resultType="MyMember">
select * from mymember order by id
</select>
</mapper>
mapper(매퍼 바인딩interface)
package xyz.itwill.mapper;
import java.util.List;
import xyz.itwill.dto.MyMember;
public interface MyMemberMapper {
int insertMember(MyMember member);
int updateMember(MyMember member);
int deleteMember(String id);
MyMember selectMember(String id);
List<MyMember> selectMemberList();
}
DAO(매퍼 바인딩)
package xyz.itwill.dao;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import xyz.itwill.dto.MyMember;
import xyz.itwill.mapper.MyMemberMapper;
public class MyMemberDAO {
private static MyMemberDAO _dao;
private MyMemberDAO() {
}
static {
_dao=new MyMemberDAO();
}
public static MyMemberDAO getDAO() {
return _dao;
}
private SqlSessionFactory getSqlSessionFactory() {
String resource="mybatis-config.xml";
InputStream inputStream=null;
try {
inputStream=Resources.getResourceAsStream(resource);
} catch (IOException e) {
throw new IllegalArgumentException(e);
}
return new SqlSessionFactoryBuilder().build(inputStream);
}
public int insertMember(MyMember member) {
SqlSession sqlSession=getSqlSessionFactory().openSession(true);
try {
return sqlSession.getMapper(MyMemberMapper.class).insertMember(member);
} finally {
sqlSession.close();
}
}
public int updateMember(MyMember member) {
SqlSession sqlSession=getSqlSessionFactory().openSession(true);
try {
return sqlSession.getMapper(MyMemberMapper.class).updateMember(member);
} finally {
sqlSession.close();
}
}
public int deleteMember(String id) {
SqlSession sqlSession=getSqlSessionFactory().openSession(true);
try {
return sqlSession.getMapper(MyMemberMapper.class).deleteMember(id);
} finally {
sqlSession.close();
}
}
public MyMember selectMemeber(String id) {
SqlSession sqlSession=getSqlSessionFactory().openSession(true);
try {
return sqlSession.getMapper(MyMemberMapper.class).selectMember(id);
} finally {
sqlSession.close();
}
}
public List<MyMember> selectMemberList() {
SqlSession sqlSession=getSqlSessionFactory().openSession(true);
try {
return sqlSession.getMapper(MyMemberMapper.class).selectMemberList();
} finally {
sqlSession.close();
}
}
}