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

使用它们开发的准备工作

添加相对应的jar包依赖

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

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

mybatis和ibatis的区别he

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

ibatis中的congig.xml配置文件

gaussdb和mysql在mybatis中的差异_sql语句

 mybatis中的congig.xml配置文件

gaussdb和mysql在mybatis中的差异_SQL_02

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

           它们的<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 < #{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 < #{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(可选)

gaussdb和mysql在mybatis中的差异_sql语句_03

 

gaussdb和mysql在mybatis中的差异_SQL_04

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