일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- git
- Deep
- java
- Numpy
- Github
- Web
- 함수
- centos
- interface
- Linux
- Analysis
- data
- Spring
- Server
- mariaDB
- db
- ai
- javascript
- 자바
- DeepLearning
- framework
- Python
- Pattern
- mysql
- SSH
- 인공지능
- LIST
- learning
- Security
- error
- Today
- Total
PostIT
[Spring/MyBatis]스프링 프레임워크 활용한 Mapper 작성 - iBatis와 MyBatis / Annotation과 XML의 차이 본문
[Spring/MyBatis]스프링 프레임워크 활용한 Mapper 작성 - iBatis와 MyBatis / Annotation과 XML의 차이
shun10114 2016. 8. 27. 22:33개발 면접을 보면서 Spring 2.0버전에 iBatis를 연결하는 프로젝트를 시험보게 되었다.
Java 요구 버전
iBatis에서는 JDK 1.4 이상에서 사용이 가능 하였으나,
MyBatis에서는 JDK 1.5 이상을 요구 한다.(MyBatis 3.2 이상 버전은 JDK 1.6 이상을 요구한다.
Package 내부 구조의 변경
iBatis : com.ibatis.*
MyBatis : org.apache.ibatis.*(이름은 변경되었지만 내부적으로는 여전히 iBatis를 사용하고 있다.)
SqlMap.xml 내부 구조의 변경
가장 큰 변경점은 parameterMap이 Deprecated된 점이라고 할 수 있다.
parameterMap을 사용하지 못하게 되며 기존 parameterMap을 사용하던 부분은 아래와 같이 parameterType에 정의하게 되었다.
ex)
<
insert
id
=
"insertBlobData"
parameterType
=
"LobVo"
>
insert into test_blob(user_no, user_name, blob_data, clob_data, reg_date)
values(#{userNo}, #{userName}, #{blobData,jdbcType=BLOB}, #{clobData,jdbcType=CLOB}, #{regDate})
</
insert
>
사용 용어의 변경
SqlMapConfig -> Configuration
sqlMap -> mapper로 변경됨.
네임스페이스 방식의 변경
sqlMap 별로 줄여놓은 이름을 사용할 수 없게 되며 경로를 모두 명시해 주어야 함.
또한 iBatis에서는 namespace가 선택이었지만 MyBatis는 필수 항목이다.
Ex)
iBatis : <
sqlMap
namespace
=
"Lob"
>
MyBatis : <
mapper
namespace
=
"com.altibase.sample.mapper.LobMapper"
>
참조 : http://aid.altibase.com/pages/viewpage.action?pageId=7340858
1. Xml로 작성하였을 시, ParameterType, resultSet 등을 지정해주어야 한다.
<resultMap id="userMap" type="com.shun.user.dao.UserVO">
<id property="account" column="account" />
<result property="pwd" column="pwd" />
<result property="regdate" column="regdate" />
<result property="grade" column="grade" />
</resultMap>
<insert id="userInsert" parameterMap="userMap">
INSERT INTO userVO VALUES(#{signAccount},#{signPwd},now(),1)
</insert>
<select id="userLogin" parameterMap="String">
SELECT pwd from userVO where account=#{logAccount}
</select>
<select id="signAccountCheck" parameterType="String">
SELECT COUNT(*) FROM userVO WHERE account=#{signAccount}
</select>
<select id="loginAccountCheck" parameterType="String">
SELECT COUNT(*) FROM userVO WHERE account=#{logAccount}
</select>
2.Class(Java)로 작성하였을 시, class자체 메소드를 통해 매개변수와 타입을 지정하고 Annotation을 통해 DB와 접속한다.
@Insert("INSERT INTO userVO VALUES(#{signAccount},#{signPwd},now(),1)")
public void userInsert(Map map);
@Select("SELECT pwd from userVO where account=#{logAccount}")
public String userLogin(String logAccount);
@Select("SELECT COUNT(*) FROM userVO WHERE account=#{signAccount}")
public int signAccountCheck(String signAccount);
@Select("SELECT COUNT(*) FROM userVO WHERE account=#{logAccount}")
public int loginAccountCheck(String logAccount);
위 2가지는 결국 같은 결과값을 가져온다.
이 두가지를 일단 이해할 수 있었으며, 처음 설정에서 Service와 Resource 등 많은 변화가 있다
Annotation에서는 Autowired를 통해 자동할당을 시켜주면되지만 이부분은 차차 공부하면서 이해해봐야 할 것 같다.
'Spring > Config' 카테고리의 다른 글
[Spring/Lib] DBCP에 대해서 - 퍼옴 (0) | 2016.12.14 |
---|---|
[Spring/Java]Spring에서 다국어처리. LocaleResolver - 퍼옴 (0) | 2016.12.08 |
[Spring/Boot] 스프링 부트관련 정보 - URL만 퍼옴. 참고하기. (0) | 2016.11.23 |
[Java/자바]Spring에서 Java로 Mybatis연동 (0) | 2016.09.09 |