ibatisとmybatisの違い
1.ibatis 3.*バージョン以降は正式にmybaitsと改名し、apacheからgoogle codeに移行しました。つまりibatis 2.*,mybatis 3.*。
2.マッピングファイルの違い
ibatisのプロファイルは以下の通りです。
2.マッピングファイルの違い
ibatisのプロファイルは以下の通りです。
mybatis
の つの ファイルから、どのような いがあるかを まかに します。
2.1 dtd ファイルが なる
2.2 ibatisの の の はsql MapConfigで、mybatisの でconfigrationです。
2.3 settings の なる
ibatisでは
2=「 2」 x=「 x」/>
mybatisの では
2.4 ibatisはsql Map を しています。mybatisはmappers を しています。
2.5データベーステーブルのマッピングの い
ibatisにあるテーブルのマッピングファイル
ID, CLASS_ID, PROPERTY_ID, INPUT_TYPE, SORT_NUM,
DESCRIPTION,
CREATED_DATE, CREATED_BY,
UPDATED_DATE, UPDATED_BY, STATUS,
IS_KEY, IS_SPU, IS_SALE, IS_PRODUCT,CHANNEL_ID,COMPANY_ID
P.ID, P.CLASS_ID, P.PROPERTY_ID, P.INPUT_TYPE, P.SORT_NUM,
P.DESCRIPTION,
P.CREATED_DATE,
P.CREATED_BY, P.UPDATED_DATE,
P.UPDATED_BY, P.STATUS, P.IS_KEY, P.IS_SPU,
P.IS_SALE,
P.IS_PRODUCT,P.CHANNEL_ID,P.COMPANY_ID
UPDATE
PP_CLASS_PROPERTY
SET STATUS = 1
where ID = #id:VARCHAR# AND
INSERT INTO PP_CLASS_PROPERTY
(
)
VALUES (#id:VARCHAR#, #classId:VARCHAR#,
#propertyId:VARCHAR#,
#inputType:VARCHAR#,
#sortNum:DECIMAL#,
#description:VARCHAR#,
#createdDate:TIMESTAMP#,
#createdBy:VARCHAR#,
#updatedDate:TIMESTAMP#,
#updatedBy:VARCHAR#, 0,#isKey:DECIMAL#,
#isSpu:DECIMAL#,
#isSale:DECIMAL#, #isProduct:DECIMAL#,
#channelId:VARCHAR#,
#companyId:VARCHAR#)
UPDATE PP_CLASS_PROPERTY
CLASS_ID =
#classId:VARCHAR#
PROPERTY_ID =
#propertyId:VARCHAR#
INPUT_TYPE =
#inputType:VARCHAR#
SORT_NUM =
#sortNum:DECIMAL#
DESCRIPTION =
#description:VARCHAR#
CREATED_DATE =
#createdDate:TIMESTAMP#
CREATED_BY =
#createdBy:VARCHAR#
UPDATED_DATE =
#updatedDate:TIMESTAMP#
UPDATED_BY =
#updatedBy:VARCHAR#
STATUS = #status:DECIMAL#
IS_KEY = #isKey:DECIMAL#
IS_SPU = #isSpu:DECIMAL#
IS_SALE = #isSale:DECIMAL#
IS_PRODUCT =
#isProduct:DECIMAL#
WHERE ID = #id:VARCHAR# AND
mybatisのデータベーステーブルマッピングファイル
ID ,
LOGIN_NAME ,
LOGIN_PASS ,
USER_TYPE ,
REG_DATE ,
EMAIL ,
MOBILE ,
QQ ,
PHOTO ,
CARD_TYPE ,
CARD_VALUE ,
USER_NAME ,
USER_SEX ,
USER_BIR ,
USER_ADDR ,
JOB_NAME ,
JOB_ADDR ,
JOB_TEL ,
BORN_ADDR ,
USER_STATUS ,
ROLE_TYPE
order by ${orderByClause}
insert into SYS_USER (
)
values (
#{id,jdbcType=VARCHAR},
#{loginName,jdbcType=VARCHAR},
#{loginPass,jdbcType=VARCHAR},
#{userType,jdbcType=VARCHAR},
#{regDate,jdbcType=CHAR},
#{email,jdbcType=VARCHAR},
#{mobile,jdbcType=VARCHAR},
#{qq,jdbcType=VARCHAR},
#{photo,jdbcType=VARCHAR},
#{cardType,jdbcType=VARCHAR},
#{cardValue,jdbcType=VARCHAR},
#{userName,jdbcType=VARCHAR},
#{userSex,jdbcType=VARCHAR},
#{userBir,jdbcType=CHAR},
#{userAddr,jdbcType=VARCHAR},
#{jobName,jdbcType=VARCHAR},
#{jobAddr,jdbcType=VARCHAR},
#{jobTel,jdbcType=VARCHAR},
#{bornAddr,jdbcType=VARCHAR},
#{userStatus,jdbcType=INTEGER},
#{roleType,,jdbcType=VARCHAR}
)
insert into SYS_USER ()
values
(
#{item.id,jdbcType=VARCHAR},
#{item.loginName,jdbcType=VARCHAR},
#{item.loginPass,jdbcType=VARCHAR},
#{item.userType,jdbcType=VARCHAR},
#{item.regDate,jdbcType=CHAR},
#{item.email,jdbcType=VARCHAR},
#{item.mobile,jdbcType=VARCHAR},
#{item.qq,jdbcType=VARCHAR},
#{item.photo,jdbcType=VARCHAR},
#{item.cardType,jdbcType=VARCHAR},
#{item.cardValue,jdbcType=VARCHAR},
#{item.userName,jdbcType=VARCHAR},
#{item.userSex,jdbcType=VARCHAR},
#{item.userBir,jdbcType=CHAR},
#{item.userAddr,jdbcType=VARCHAR},
#{item.jobName,jdbcType=VARCHAR},
#{item.jobAddr,jdbcType=VARCHAR},
#{item.jobTel,jdbcType=VARCHAR},
#{item.bornAddr,jdbcType=VARCHAR},
#{item.userStatus,jdbcType=INTEGER},
#{item.roleType,jdbcType=VARCHAR}
)
update SYS_USER
ID = #{id,jdbcType=VARCHAR},
LOGIN_NAME = #{loginName,jdbcType=VARCHAR},
LOGIN_PASS = #{loginPass,jdbcType=VARCHAR},
USER_TYPE = #{userType,jdbcType=VARCHAR},
REG_DATE = #{regDate,jdbcType=CHAR},
EMAIL = #{email,jdbcType=VARCHAR},
MOBILE = #{mobile,jdbcType=VARCHAR},
QQ = #{qq,jdbcType=VARCHAR},
PHOTO = #{photo,jdbcType=VARCHAR},
CARD_TYPE = #{cardType,jdbcType=VARCHAR},
CARD_VALUE = #{cardValue,jdbcType=VARCHAR},
USER_NAME = #{userName,jdbcType=VARCHAR},
USER_SEX = #{userSex,jdbcType=VARCHAR},
USER_BIR = #{userBir,jdbcType=CHAR},
USER_ADDR = #{userAddr,jdbcType=VARCHAR},
JOB_NAME = #{jobName,jdbcType=VARCHAR},
JOB_ADDR = #{jobAddr,jdbcType=VARCHAR},
JOB_TEL = #{jobTel,jdbcType=VARCHAR},
BORN_ADDR = #{bornAddr,jdbcType=VARCHAR},
USER_STATUS = #{userStatus,jdbcType=INTEGER},
ROLE_TYPE = #{roleType,jdbcType=VARCHAR},
where ID = #{id,jdbcType=VARCHAR}
update SYS_USER set
LOGIN_NAME = #{item.loginName,jdbcType=VARCHAR},
LOGIN_PASS = #{item.loginPass,jdbcType=VARCHAR},
USER_TYPE = #{item.userType,jdbcType=VARCHAR},
REG_DATE = #{item.regDate,jdbcType=CHAR},
EMAIL = #{item.email,jdbcType=VARCHAR},
MOBILE = #{item.mobile,jdbcType=VARCHAR},
QQ = #{item.qq,jdbcType=VARCHAR},
PHOTO = #{item.photo,jdbcType=VARCHAR},
CARD_TYPE = #{item.cardType,jdbcType=VARCHAR},
CARD_VALUE = #{item.cardValue,jdbcType=VARCHAR},
USER_NAME = #{item.userName,jdbcType=VARCHAR},
USER_SEX = #{item.userSex,jdbcType=VARCHAR},
USER_BIR = #{item.userBir,jdbcType=CHAR},
USER_ADDR = #{item.userAddr,jdbcType=VARCHAR},
JOB_NAME = #{item.jobName,jdbcType=VARCHAR},
JOB_ADDR = #{item.jobAddr,jdbcType=VARCHAR},
JOB_TEL = #{item.jobTel,jdbcType=VARCHAR},
BORN_ADDR = #{item.bornAddr,jdbcType=VARCHAR},
USER_STATUS = #{item.userStatus,jdbcType=INTEGER},
ROLE_TYPE = #{item.roleType,jdbcType=VARCHAR}
where ID = #{item.id,jdbcType=VARCHAR}
delete from SYS_USER
where ID = #{id,jdbcType=VARCHAR}
delete from SYS_USER
where ID in (
#{item.id,jdbcType=VARCHAR}
)
の いは:
2.5.1 ibatisの の の はsql Mapで、mybatisの でmapperです。
2.5.2. iBatisでは、namespaceは ではなく、その は の を っていません。MyBatisでは、namespaceがついに に ち、マッピングファイルとインターフェースが に に されるようになりました。
2.5.3 ibatisには、reult Mapとresult Classの2 のリターンタイプがあり、resultMapはibatisのプロファイルで されています。つまり、プロファイルには、resultMap を して されています。reult Classはjava に されているタイプを します。 えば、integer、java.util.hashMapなどです。
mybatisは をリセットしていいです。 はもう つの を えなくてもいいです。
2.54 ibatisの にparameterClassがあります。mybatisの にparameterTypeがあります。 の いは きくありません。
2.2.5パラメータの き の
ibatisでは、コードの などの き があります。WHERE ID = #id:VARCHAR#
mybatisの き はコードの のようです。where ID = #{id,jdbcType=VARCHAR}
2.56 iBatis/MyBatis び し プロセスの き
iBatisは、ストレージプロセスの を び し、 を してストレージプロセスの び しを います。
{call swap_contact_name (?, ?,?)}
MyBatisでは、 は り されています。
{?=call swapucontactuname(?、?)}
のように、statementType によって、この は のSQL ではなく、 プロセスとして される。
2.6 ibatisとmybatisとspringの
ibatisの
mybatisの
の から、MyBatisの における の は、Sql MapClientによってSql Session Factoryに も なAPIを することであることが かる。また、タイププロセッサインターフェースも のType Handler CallbackからType Handlerに されました。 にDataSourceFactoryも し、org.apache.ibatis.datasourceに しました。その の も しました。つまり、コードレベルで されている の が なく、 に きな コストがかかりません。