iBatis详解以及和MyBatis区别
iBatis的全局配置文件命名为 sqlMapConfig.xml,
iBatis配置文件的根元素为 ,
iBatis指定映射文件的元素为 ,以及 等;
iBatis仅是以SQL映射为核心的框架;
MyBatis全局配置文件命名为Configuration.xml
而在MyBatis中多以Mapper、Session、Configuration、等
其他常用ORM框架中的名字代替;
一、配置文件的根元素
iBatis 配置文件的根元素是 ,
iBatis 配置文件的根元素是 ,
MyBatis配置文件的根元素是
而MyBatis使用的是
二、设置属性用法发生了改变
的用法发生了改变:
1、iBatis中【设置属性】的方式:
2、MyBatis中设置属性的方式:
三、指定【映射文件】的方式区别:
iBatis中指定映射文件的方式:
MyBatis中指定映射文件的方式:
四、SQL文件的根元素不同:
iBatis中SQL文件的根元素为;
MyBatis中SQL文件的根元素为;
五、Select语句的中的出入参数类型发生了变化
元素的iBatis的columnIndex 属性被移除了
1)、入参类型不同:
iBatis中元素的入参类型为parameterClass;
myBatis中元素的入参类型为parameterType。
2)、出参类型(返回结果类型)不同:
iBatis中元素的出参类型(返回结果类型)为resultClasss;
myBatis中元素的出参(返回结果类型)类型为resultType。
3)、返回结果集接受方式不同;
iBatis中结果集返回到class;
<parameterMap class="java.util.Map" id="pro_app_testMap">
<parameter property="p_userid" jdbcType="NUMBER" javaType="java.lang.Long" mode="IN" />
<parameter property="p_pid" jdbcType="NUMBER" javaType="java.lang.Integer" mode="OUT" />
</parameterMap>
<procedure id="pro_app_test" parameterMap="pro_app_testMap">
{call pro_app_test(?,?,?)}
</procedure>
myBatis中<select>结果集返回到type;
ResultMap和ResultType,都是用来表示查询结果集与java对象之间的一种关系,
将查询结果集,按照某种关系映射到java对象。
六、SQL中接收外部传参方式改变;
iBatis中接收外部传参方式使用 #value#;
MyBatis中接收外部传参方式使用 #{value}
#{command}、#command# --- 具有预编译效果;
${command} --- 不具有预编译效果
七、SQL中参数类型发生了改变;
iBatis的NUMBER取值改为了MyBatis的NUMERIC。
八、SQL中调用存储过程发生了改变;
iBatis中调用存储过程的方式:
iBatis通过使用<procedure>元素进行存储过程的定义:
<procedure id="" parameterMap="">
{? = call pkgExample.getValues(p_id=>?)}
</procedure>
MyBatis中调用存储过程的方式:
通过 <select>、<insert> 和<update>进行定义:
{ ? = call pkgExample.getValues(p_id => ?) } 通过statementType属性将该语句标识为存储过程.
九、Dao层代码结构发生了改变;
代码层面的改变:
ibatis : SqlMapClient;
SqlMapClient 执行SQL语句:( http://t.zoukankan.com/lcngu-p-5122940.html )
MyBatis : SqlSessionFactory ;
SqlSessionFactory介绍: ( https://blog.csdn.net/weixin_45941064/article/details/124397112 )
类型处理器接口:
ibatis : TypeHandlerCallback ;
MyBatis : TypeHandler ;