mybatis和ibatis的区别

iBatisMyBatis,不只是名称上的变化,MyBatis提供了更为强大的功能

使用它们开发的准备工作

添加相对应的jar包依赖

创建全局配置文件---config.xml

创建sql映射文件---map.xml

mybatis和ibatis的区别he

1. 首先它们配置文件方式不同----》config.xml

ibatis中的congig.xml配置文件

 mybatis中的congig.xml配置文件

总结:它们的根标签发生了变化    

           它们的<settings>标签使用方式发生了变化

            它们的配置事物管理器和数据源不一样

            它们指向sql的映射文件的标签方式不一样

2. 它们在map.xml文件当中使用的常见怎删改差标签不同

mybatis当中使用具体的sql关键字标签  例如<select><insert><delete><update>..

ibatis当中可以使用<statement>万能标签

3. 它们进行传参使用的关键字不同

mybatis当中必须有namespacce这个属性,而ibatis当中可以没有这个属性

mybatiis当中传入关键字parementType(可省略不写)  传出的关键字resultType或者resultMap

ibatis传入关键字parementClass   传出的关键字resultClass

4. 它们使用占位符的写法方式不同

mybatis当中的写法方式#{}和${}   一般使用#{}

ibatis当中的写法方式#字段#和$字段$

5. 它们使用动态sql语句时不同

mybatis中有if、where、foreach  动态sql标签      注意<if>标签test里面是判断条件

<!-- 练习:动态sql语句 if -->
<!-- 根据员工的薪资查询员工信息 -->
    <select id="findbySal" resultType="cn.tedu.pojo.Emp">
                  select * from emp
                             where 1=1
             <if test="minsal!=null">
                        and salary > #{minsal}
              </if>
              <if test="maxsal!=null">
                        and salary &lt; #{maxsal}
               </if>
    </select>

    <!-- 练习:动态sql语句 where -->
    <select id="findbySal2" resultType="cn.tedu.pojo.Emp">
                    select * from emp
              <where>
                    <if test="minsal!=null">
                           salary > #{minsal}
                    </if>
                    <if test="maxsal!=null">
                           and salary &lt; #{maxsal}
                    </if>
             </where>
    </select>

练习foreach标签

<!-- 练习:动态sql语句 foreach -->
<!-- 练习4:根据员工id批量删除员工信息id[]数组ids[] ids={1,3,5,7}; -->
    <delete id="deleteByIds">
        delete from emp where id in
            <foreach collection="list" open="(" item="id" separator="," close=")">
                 #{id}
            </foreach>
    </delete>
    

<!-- 练习:根据员工id批量跟新员工薪资 id数组 int[] ids={2,4,6,8} 1000; map.put(,id); map.put(money,1000); -->
    <update id="updatebyids">
         update emp set salary=salary+#{money}
              where id in
          <foreach collection="Ids" open="(" item="id" separator="," close=")">
                 #{id}
           </foreach>
    </update>

    // 练习mybatis中的动态sql语句foreach
    @Test
    private void testfindbysa3() {
//        int [] ids= {1,3,5,7};
//     session.delete("EmpMapper.daletebyids",ids);
        ArrayList list = new ArrayList();
        list.add(2);
        list.add(4);
        list.add(6);
        list.add(8);
        session.delete("EmpMapper.daletebyids", list);
    }

    @Test
    public void testupdatebyids() {
        int[] ids = { 2, 4, 6, 8 };
        Double money = 1000.0;
        Map map = new HashMap();
        map.put("Ids", ids);
        map.put("money", 1000);
        session.update("EmpMapper.updatebyids", map);
    }

<foreach>标签中参数介绍

            collection:如果传过来的是数组(或者集合),collection的值就用arrsy(或者list)表示

                              如果传过来的是用map集合封装了,collection的值就用map集合的key表示    

           open属性:指定所生成SQL片段的起始符号,通常是左圆括号 (

           close属性:指定所生成SQL片段的结束符号,通常是右圆括号 )

           item属性:指定占位符中的名称

           separator属性:指定占位符中间的分隔符, 通常是逗号 ,

ibatis当中的动态sql标签有<itereat>     这个标签可以遍历整个集合

            prepend 属性- 可被覆盖的SQL语句组成部分,添加在语句的前面(可选)
            property 属性- 类型为java.util.List的用于遍历的元素  指定占位符中的名称(必选)
            open 属性指定所生成SQL片段的起始符号,通常是左圆括号 (   (可选)
            close 属性指定所生成SQL片段的结束符号,通常是右圆括号 )(可选)
            conjunction 属性 - 指定占位符中间的分隔符, 通常是逗号 ,也可是AND或者OR(可选)

 

 主要出发点其实并不是使得 MyBatis 功能更为强大,而是使配置更为合理,让开发者更容易阅读和理解。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值