zoukankan      html  css  js  c++  java
  • Mybatis

    1.优点:

      1:与JDBC相比减少了50%的代码

      2:是最简单的持久化框架

      3:Sql代码从程序中彻底分离

      4:提供xml标签支持sql动态

      5:提供映射标签支持对象与数据库的ORM字段映射

    2.缺点:

      1.sql语句编写工作量大

      2.数据库移至性差

    3.基本要素:

    4.MyBatis核心对象生存周期

      1:SqlSessionFactoryBuilder:

         用于创建多个SqlSessionFactory实例

         用过即丢生命周期只存在于创建他的方法中

      2:SqlSessionFactory

         作用于整个Application,生命周期与应用生命周期相同整个程序只存在一个

      3:SqlSession

         包含了所有的SQL执行所需的方法,对应一次数据库会话结束时必须关闭,属于线程级别不能共享

         在SqlSession中可以执行多次SQL语句,但一但关闭了SqlSession就要从新创建

    5.SqlSession两种用法:

      1:通过SqlSession实例直接运行映射的SQL语句

      2:基于Mapper借口方式操作数据

    6.增删改查标签的属性:

       1:传入参数:parameterType="数据类型";

       2:指定返回类型:

          (1):resultType="数据类型地址";

          (2):resultMap="result的id";

    7.得参数的两种方法#{ } ${ }

        简单类型(int,String等):#{这随便写}   ${value}  (一个参数的情况下多个参数写属性名) 

        复杂类型(类,数组等):#{属性名}  ${属性名}

      #{ }与${ }的区别:

          #{ }得参数的话会带有属性的符号   如String就会带双引号

          ${ }得参数的时候不会带属性符号

    8.Mybatis标签

      1.类型别名:

        <configuration>
              <typeAliases>
                   <typeAliase alias="别名" type="类型地址"/>
              </typeAliases>
        <configuration>

     2.给一个包起别名(包中的类的别名就是他的类名)      

        <tyoeAliases>
              <package name="包名"/>
        </tyoeAliases>

      3.resultMap的属性与标签:          

        <resultMap>
             <id column="数据库列名”  prooerty="类的属性名" jdbctype="数据库中的类型">
        </resultMap>    
         1:多对一的标签(一个类中有另一个类作为属性):
        <association property="作为属性的类名" JavaType="类型的地址">

          <id column="数据库列名” prooerty="类的属性名" jdbctype="数据库中的类型">
          <result column="数据库列名”  prooerty="类的属性名" jdbctype="数据库中的类型">

          <result>
        </association>
          2:一对多标签(一个类中有另一个类的集合)
        <collection property="类的集合名" oftype="类的地址">
           <id column="数据库列名”  prooerty="类的属性名" jdbctype="数据库中的类型">
        </collection>    

        所有的集合都用oftype指定

      4.SQL片段:

        sql片段可以重复利用多次调用     

        <select>
              <include refid="sql片段id">
        </select>
    
        <sql id=“名”>
              sql语句
        </sql>

      5.动态SQL语句

         1:where(where会自动识别是否是第一个where如果是第一个where会自动去掉and进行拼接)

          <select id="selectByParams" parameterType="map" resultType="user">

            select * from user

             <where>

               <if test="id != null ">

                  id=#{id}

               </if>

               <if test="name != null and name.length()>0" >

                  and name=#{name}

               </if>

             </where>

          </select> 

          2:choose(和switch很像)
        <choose>
    
            <when test="条件">-------这个和case一样
                    SQL语句
            </when>
    
             <otherwise>-----这个和default一样
                   SQL语句
             </otherwise>
        </choose>    
          3:foreach

           <foreach collection="集合名" item="起个名" index="index" open="开始循环的拼接" close="结束循环的拼接" separator=",">

             #{起的名}
            </foreach>

            4:遍历拼接:trim
          <trim prefix="前缀" suffix="后缀" suffixoverrides="在每句的末尾追加内容" prefixoverrides="在每句前面追加的内容">
              内容
          </trim>
           5:set

           <update>

             update user

             <set>

               <if test="name != null and name.length()>0">

                  name = #{name},

               </if>

               <if test="gender != null and gender.length()>0">

                  gender = #{gender},

               </if>

              </set>

             where id = #{id}

            </update> 

  • 相关阅读:
    awk 使用shell 变量
    设计模式之 外观(门面)模式 Facade
    设计模式之 抽象工厂模式
    python 第一课
    Visual Basic 图片连接地址添加
    smarty 不同模板 缓存时间
    PHP 传参过滤
    Nginx 0.7.x + PHP 5.2.10(FastCGI)搭建支持高并发量的Web服务器
    linux vi 编辑命令
    PHP 命令模式 执行文件 并传递参数
  • 原文地址:https://www.cnblogs.com/HQ0422/p/10001885.html
Copyright © 2011-2022 走看看