MyBatis - µ¥ÀÌÅÍ »ðÀÔÇϱâ
Mybatis¸¦ ÀÌ¿ëÇÏ¿© µ¥ÀÌÅͺ£À̽º¿¡ µ¥ÀÌÅ͸¦ »ðÀÔÇغ¸°Ú½À´Ï´Ù.
ÀÌ ±ÛÀ» º¸½Ã±â Àü¿¡ mybatis ¼³Á¤ÀÌ ¾ÈµÇÀÖ´Ù¸é MyBatis ½ÃÀÛÇϱ⠸¦ Âü°íÇϼ¼¿ä
µ¥ÀÌÅͺ£À̽º¿¡ Å×À̺í°ú ½ÃÄö½º »ý¼ºÇϱâ
µ¥ÀÌÅ͸¦ »ðÀÔÇϱâ À§ÇØ ¾Æ·¡¿Í °°Àº Å×À̺í°ú ½ÃÄö½º¸¦ »ý¼ºÇÕ´Ï´Ù.
create table student(
student_no number primary key,
student_name varchar2(30) not null,
student_tel char(11) not null,
student_email varchar2(50),
student_addr varchar2(256),
reg_date date default sysdate
);
create sequence seq_student;
°¡»óÀÇ µ¥ÀÌÅ͵µ Çϳª ³Ö¾îÁÝ´Ï´Ù.
insert into student values (seq_student.nextval, 'È«±æµ¿', '01012345678', 'honggd@google.com','¼¿ï½Ã °³²±¸', default);
µ¥ÀÌÅÍ°¡ Àß µé¾î°¡ ÀÖ½À´Ï´Ù.
Å×½ºÆ® Ŭ·¡½º ¸¸µé±â
MVC ±¸Á¶¸¦ ÀÌ¿ëÇÏ¿© ¸î°¡Áö Ŭ·¡½ºµéÀ» ¸¸µé°Ú½À´Ï´Ù.
ÄÁÆ®·Ñ·¯¸¦ ´ã´çÇÏ´Â MybatisTestServlet ¼ºí¸´ ÀÔ´Ï´Ù.
@WebServlet("/mybatis.do")
public class MybatisTestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private MyBatisService service = new MyBatisService();
public MybatisTestServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int result = service.insertStudent();
String msg = result > 0 ? "ÀÔ·Â ¿Ï·á" : "ÀÔ·Â ½ÇÆÐ";
response.setContentType("text/html;charset=UTF-8");
response.getWriter().append(msg);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
Æ®·£Àè¼Ç 󸮸¦ ÇØÁÙ MyBatisService Ŭ·¡½ºÀÔ´Ï´Ù.
import static common.SqlSessionTemplate.getSession;
public class MyBatisService {
private MyBatisDao dao = new MyBatisDao();
public int insertStudent() {
SqlSession session = getSession();
int result = dao.insertStudent(session);
if(result > 0) {
session.commit();
}else {
session.rollback();
}
session.close();
return result;
}
}
¿¹Àü¿¡ ¸¸µé¾îµÎ¾ú´ø SqlSessionTemplate ¸¦ ÀÌ¿ëÇÏ¿© SqlSessionÀ» ¹Þ¾Æ¿É´Ï´Ù.
DB¿Í Åë½ÅÇÏ´Â MybatisDao Ŭ·¡½ºÀÔ´Ï´Ù.
public class MyBatisDao {
public int insertStudent(SqlSession session) {
int result = session.insert("mybatis.insertStudent");
return result;
}
}
JDBC¸¦ ÀÌ¿ëÇÏ¿© ÀÛ¼ºÇÒ ¶§º¸´Ù °£ÆíÇØÁø °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.
mapper ÀÛ¼ºÇϱâ
resource Æú´õ ¹Ø¿¡ mybatis\mapper ·Î Æú´õ¸¦ »ý¼ºÇÕ´Ï´Ù. (resource\mybatis\mapper ÀÇ °æ·Î°¡ µË´Ï´Ù.)
mapper Æú´õ¿¡ mybatis-mapper.xml ÆÄÀÏÀ» »ý¼ºÇսôÙ.
¿ìŬ¸¯ - New - Other¸¦ ¼±ÅÃÇÕ´Ï´Ù.
xml·Î °Ë»öÇÏ¿© XML FileÀ» ¼±ÅÃÇÕ´Ï´Ù.
ÆÄÀÏ À̸§Àº mybatis-mapper.xml ·Î Àû°í Next¸¦ ´©¸¨´Ï´Ù.
DTD ÆÄÀÏÀ» ¼±ÅÃÇÏ°í Next¸¦ ´©¸¨´Ï´Ù.
XML Catalog entry ¸¦ ¼±ÅÃÇÑ ÈÄ DTD Mapper¸¦ ¼±ÅÃÇÕ´Ï´Ù.
À̹ÌÁö¿Í °°Àº ȸéÀÌ ³ª¿À½Ã¸é µË´Ï´Ù. Finish¸¦ ´·¯ ¿Ï·áÇÕ´Ï´Ù.
xml ÆÄÀÏÀÌ »ý¼ºµÇ¾ú½À´Ï´Ù. chche-ref ű״ »ç¿ëÇÏÁö ¾ÊÀ» °ÍÀÌ´Ï Áö¿öÁÝ´Ï´Ù.
mapper ű׸¦ ¾Æ·¡¿Í °°ÀÌ ÀÛ¼ºÇÕ´Ï´Ù.
<mapper namespace="mybatis">
<insert id="insertStudent">
INSERT INTO STUDENT VALUES(SEQ_STUDENT.NEXTVAL, 'µÑ¸®', '01012345678', 'ABCD@NAVER.COM', '°æ±âµµ ¼º³²½Ã', DEFAULT)
</insert>
</mapper>
insert SQL ÀÌ ÀÛ¼ºµÇ¾ú½À´Ï´Ù.
mapper ű×ÀÇ namespace¿Í insert ű×ÀÇ id °ªÀº À§¿¡¼ ÀÛ¼ºÇÑ Dao ¿¡¼ »ç¿ëÇÏ´Â id °ª°ú µ¿ÀÏÇØ¾ß ÇÕ´Ï´Ù.
µû¶ó¼ namespace ´Â mybatis, id °ªÀº insertStudent¸¦ Àû¾îÁÖ¾ú½À´Ï´Ù.
index.jsp ÀÛ¼ºÇϱâ
Å×½ºÆ® ¼ºí¸´À¸·Î °¡´Â ¸µÅ©¸¦ °¡Áø jsp ÆÄÀÏÀ» ¸¸µé°Ú½À´Ï´Ù.
body ÅÂ±× ¾È¿¡ °£´ÜÇÏ°Ô a ű׸¸ ³Ö¾îÁÖ¾ú½À´Ï´Ù<a href="<%=request.getContextPath() %>/mybatis.do">Å×½ºÆ® Çϱâ</a>
Àß µ¿ÀÛÇÏ´ÂÁö È®ÀÎÇغ¸±â
student Å×ÀÌºí¿¡´Â ¾ÆÁ÷ ÇϳªÀÇ µ¥ÀÌÅ͸¸ µé¾îÀÖ½À´Ï´Ù.
Å×½ºÆ® Çϱ⠸µÅ©¸¦ ´·¯º¾½Ã´Ù.
ÀÔ·Â ¿Ï·á°¡ Ãâ·Â µÇ¾ú´Ù.
Á¤¸» µ¥ÀÌÅÍ°¡ »ðÀԵǾú´ÂÁö DB¿¡¼ È®ÀÎÇغ¸ÀÚ.
µ¥ÀÌÅÍ°¡ Àß µé¾î°¬´Ù.
Ãâó: https://sinna94.tistory.com/entry/Mybatis-µ¥ÀÌÅÍ-»ðÀÔÇϱâ?category=696828 [Chungs]