1. select – 映射查询语句
    1. 实例
      1. <select id="selectPerson" parameterType="int" resultType="hashmap"> SELECT * FROM PERSON WHERE ID = #{id} </select>
      2. 这个语句被称作 selectPerson,接受一个 int(或 Integer)类型的参数,并返回一个 HashMap 类型的对象,其中的键是列名,值便是结果行中的对应值
    2. 属性
      1. id
        1. 在命名空间中唯一的标识符,可以被用来引用这条语句
        2. 必选
      2. parameterType
        1. 将会传入这条语句的参数类的完全限定名或别名
        2. 可选
      3. resultType
        1. 从这条语句中返回的期望类型的类的完全限定名或别名
        2. 注意
          1. 如果是集合情形,那应该是集合可以包含的类型,而不能是集合本身
          2. 使用 resultType 或 resultMap,但不能同时使用
      4. resultMap
        1. 外部 resultMap 的命名引用
        2. 注意
          1. 使用 resultMap 或 resultType,但不能同时使用
      5. flushCache
        1. 将其设置为 true,任何时候只要语句被调用,都会导致本地缓存和二级缓存都会被清空
        2. 默认值:false
      6. useCache
        1. 将其设置为 true,将会导致本条语句的结果被二级缓存
        2. 默认值:对 select 元素为 true
      7. timeout
        1. 这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的秒数
        2. 默认值为 unset(依赖驱动)
      8. fetchSize
        1. 这是尝试影响驱动程序每次批量返回的结果行数和这个设置值相等
        2. 默认值为 unset(依赖驱动)
      9. statementType
        1. STATEMENT,PREPARED 或 CALLABLE 的一个
        2. 这会让 MyBatis 分别使用 Statement,PreparedStatement 或 CallableStatement
        3. 默认值:PREPARED
      10. resultSetType
        1. 这个设置仅对多结果集的情况适用,它将列出语句执行后返回的结果集并每个结果集给一个名称,名称是逗号分隔的。
  2. delete – 映射删除语句
  3. insert – 映射插入语句
  4. update – 映射更新语句
  5. <select id="selectPerson" parameterType="int" parameterMap="deprecated" resultType="hashmap" resultMap="personResultMap" flushCache="false" useCache="true" timeout="10000" fetchSize="256" statementType="PREPARED" resultSetType="FORWARD_ONLY">
  6. insert、update、delete公共属性
    1. id
      1. 命名空间中的唯一标识符,可被用来代表这条语句。
    2. parameterType
      1. 将要传入语句的参数的完全限定类名或别名。这个属性是可选的,因为 MyBatis 可以通过 TypeHandler 推断出具体传入语句的参数,默认值为 unset。
    3. parameterMap
      1. 这是引用外部 parameterMap 的已经被废弃的方法。使用内联参数映射和 parameterType 属性。
    4. flushCache
      1. 将其设置为 true,任何时候只要语句被调用,都会导致本地缓存和二级缓存都会被清空,
      2. 默认值:true(对应插入、更新和删除语句)。
    5. timeout
      1. 这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的秒数。
      2. 默认值为 unset(依赖驱动)。
    6. statementType
      1. STATEMENT,PREPARED 或 CALLABLE 的一个。这会让 MyBatis 分别使用 Statement,PreparedStatement 或 CallableStatement,
      2. 默认值:PREPARED。
    7. databaseId
      1. 如果配置了 databaseIdProvider,MyBatis 会加载所有的不带 databaseId 或匹配当前 databaseId 的语句;如果带或者不带的语句都有,则不带的会被忽略。
  7. insert、update公共属性
    1. useGeneratedKeys
      1. (仅对 insert 和 update 有用)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL 和 SQL Server 这样的关系数据库管理系统的自动递增字段)
      2. 默认值:false。
    2. keyProperty
      1. (仅对 insert 和 update 有用)唯一标记一个属性,MyBatis 会通过 getGeneratedKeys 的返回值或者通过 insert 语句的 selectKey 子元素设置它的键值
      2. 默认:unset。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
    3. keyColumn
      1. (仅对 insert 和 update 有用)通过生成的键值设置表中的列名,这个设置仅在某些数据库(像 PostgreSQL)是必须的,当主键列不是表中的第一列的时候需要设置。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。