• SSM


    MyBatis 真正的力量是在映射语句中。和对等功能的jdbc来比价,映射文件节省很多的代码量。MyBatis的构建就是聚焦于sql的。

    sql映射文件有如下几个顶级元素:(按顺序)

    cache配置给定命名空间的缓存。

    cache-ref从其他命名空间引用缓存配置。

    resultMap最复杂,也是最有力量的元素,用来描述如何从数据库结果集中来加载你的对象。

    parameterMap已经被废弃了!老式风格的参数映射。内联参数是首选,这个元素可能在将来被移除。

    sql可以重用的SQL块,也可以被其他语句引用。

    insert映射插入语句。

    update映射更新语句。

    delete映射删除语句。

    select映射查询语句。

    下面就详细描述一些元素:

    1、select

    查询语句是使用 MyBatis 时最常用的元素之一。

    <select id=”selectPerson” parameterType=”int” resultType=”hashmap”>
    SELECT * FROM PERSON WHERE ID = #{id}
    </select>

    使用一个int(或Integer)类型的参数,并返回一个HashMap类型的对象,其中的键是列名,值是列对应的值。

     

    #{id}

    select 元素有很多属性允许你配置,来决定每条语句的作用细节。

    <select
    id=”selectPerson” 在命名空间中唯一的标识符,可以被用来引用这条语句。
    parameterType=”int” 将会传入这条语句的参数类的完全限定名或别名。
    parameterMap=”deprecated” (已废弃)
    resultType=”hashmap” 从这条语句中返回的期望类型的类的完全限定名或别名。注意集合情形,那应该是集合可以包含的类型,而不能是集合本身。使用resultType或resultMap,但不能同时使用。
    resultMap=”personResultMap” 命名引用外部的resultMap。返回map是MyBatis最具力量的特性,对其有一个很好的理解的话,许多复杂映射的情形就能被解决了。使用 resultMap 或 resultType,但不能同时使用。
    flushCache=”false” 将其设置为true,不论语句什么时候被调用,都会导致缓存被清空。默认值: false。
    useCache=”true” 将其设置为 true,将会导致本条语句的结果被缓存。默认值: true。
    timeout=”10000” 这个设置驱动程序等待数据库返回请求结果,并抛出异常时间的最大等待值。默认不设置(驱动自行处理)。
    fetchSize=”256” 这是暗示驱动程序每次批量返回的结果行数。默认不设置(驱动自行处理)。
    statementType=”PREPARED” STATEMENT,PREPARED 或 CALLABLE 的一种。这会让 MyBatis使用选择使用 Statement, PreparedStatement 或 CallableStatement。默认值: PREPARED。
    resultSetType=”FORWARD_ONLY” FORWARD_ONLY|SCROLL_SENSITIVE|SCROLL_INSENSITIVE中的一种。默认是不设置(驱动自行处理)。
    
    >

    2、insert, update, delete
    数据变更语句 insert, update 和 delete 在它们的实现中非常相似:

    <insert
    id="insertAuthor"  在命名空间中唯一的标识符,可以被用来引用这条语句。
    parameterType="domain.blog.Author"  将会传入这条语句的参数类的完全限定名或别名。
    flushCache="true" 将其设置为 true,不论语句什么时候被调用,都会导致缓存被清
    空。默认值: false。
    statementType="PREPARED"  STATEMENT,PREPARED 或 CALLABLE 的一种。这会让 MyBatis使用选择使用 Statement, PreparedStatement 或CallableStatement。默认值: PREPARED。
    keyProperty=""  (仅对 insert有用)标记一个属性, MyBatis 会通过 getGeneratedKeys或者通过 insert 语句的 selectKey 子元素设置它的值。默认:不设置。
    useGeneratedKeys=""  ( 仅 对 insert 有 用 ) 这 会 告 诉 MyBatis 使 用 JDBC 的getGeneratedKeys 方法来取出由数据(比如:像 MySQL 和 SQLServer 这样的数据库管理系统的自动递增字段)内部生成的主键。默认值: false。
    timeout="20000"  这个设置驱动程序等待数据库返回请求结果,并抛出异常时间的最大等待值。默认不设置(驱动自行处理)。
    
    >

    下面就是insert, update 和 delete 语句的示例:

    <insert id="insertAuthor" parameterType="domain.blog.Author">
           insert into Author (id,username,password,email,bio) values (#{id},#{username},#{password},#{email},#{bio})
    </insert>
     
    <update id="updateAuthor" parameterType="domain.blog.Author">
        update Author set
        username = #{username},
        password = #{password},
        email = #{email},
        bio = #{bio}
        where id = #{id}
    </update>
     
    <delete id="deleteAuthor” parameterType="int">
         delete from Author where id = #{id}
    </delete>

    如前所述,插入语句有一点多,它有一些属性和子元素用来处理主键的生成。首先,如果你的数据库支持自动生成主键的字段(比如MySQL和SQLServer),那么你可以设置 useGeneratedKeys=”true”,而且设置 keyProperty 到你已经做好的目标属性上。例如,如果上面的 Author 表已经对 id 使用了自动生成的列类型,那么语句可以修改为:

    <insert id="insertAuthor" parameterType="domain.blog.Author"
    useGeneratedKeys=”true” keyProperty=”id”>
    insert into Author (username,password,email,bio)
    values (#{username},#{password},#{email},#{bio})
    </insert>
    

    3、sql   --> 这个元素可以被用来定义可重用的SQL代码段,可以包含在其他语句中。

    <select id=”selectUsers” parameterType=”int” resultType=”hashmap”>
    select <include refid=”userColumns”/>
    from some_table
    where id = #{id}
    </select>
  • 相关阅读:
    可爱的中国电信 请问我们的电脑还属于我们自己吗?
    了解客户的需求,写出的代码或许才是最优秀的............
    DELPHI DATASNAP 入门操作(3)简单的主从表的简单更新【含简单事务处理】
    用数组公式获取字符在字符串中最后出现的位置
    在ehlib的DBGridEh控件中使用过滤功能(可以不用 MemTableEh 控件 适用ehlib 5.2 ehlib 5.3)
    格式化json返回的时间
    ExtJs中使用Ajax赋值给全局变量异常解决方案
    java compiler level does not match the version of the installed java project facet (转)
    收集的资料(六)ASP.NET编程中的十大技巧
    收集的资料共享出来(五)Asp.Net 权限解决办法
  • 原文地址:https://www.cnblogs.com/SFHa/p/10253731.html
Copyright © 2020-2023  润新知