sql的映射XML文件

1. SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序):

cache - 配置给定命名空间的缓存。 cache-ref – 从其他命名空间引用缓存配置。 resultMap – 最复杂,也是最有力量的元素,用来描述如何从数据库结果集中来加载你的对象。 sql – 可以重用的 SQL 块,也可以被其他语句引用。 insert – 映射插入语句 update – 映射更新语句 delete – 映射删除语句 select – 映射查询语句

2. select

1. id 在命名空间中唯一的标识符,可以被用来引用这条语句。
2. parameterType 将会传入这条语句的参数类的完全限定名或别名。 3. resultType 从这条语句中返回的期望类型的类的完全限定名或别名。 注意集合情形,那应该是集合可以包含的类型,而不能是集合本身。 4. resultMap 命名引用外部的 resultMap。 返回 map 是 MyBatis 最具力量的特性,对其有一个很好的理解的话,许多复杂映射的情形就能被解决了。 使用 resultMap 或 resultType,但不能同时使用 5. flushCache 将其设置为 true, 无论语句什么时候被调用,都会导致缓存被清空。默认值: false。 6. useCache 将其设置为 true,将会导致本条语句的结果被缓存。默认值: true。

3. insert, update, delete

1. useGeneratedKeys ( 仅 对 insert 有 用 )这会告诉MyBatis使用JDBC的getGeneratedKeys 方法来取出由数据
(比如:像MySQL 和 QLServer 这样的数据库管理系统的自动递增字段)内部生成的主键。默认值: false。
2. keyProperty (仅对 insert有用)标记一个属性,MyBatis 会通过 getGeneratedKeys或者通过insert语句的selectKey子元素设置它的值。默认:不设置。
<insert id="insertAuthor" parameterType="domain.blog.Author" useGeneratedKeys=”true” keyProperty=”id”> insert into Author (username,password,email,bio) values (#{username},#{password},#{email},#{bio}) </insert> MyBatis 有另外一种方法来处理数据库不支持自动生成类型,或者可能 JDBC 驱动不支持自动生成主键时的主键生成问题。 <insert id="insertAuthor" parameterType="domain.blog.Author"> <selectKey keyProperty="id" resultType="int" order="BEFORE"> select CAST(RANDOM()*1000000 as INTEGER) a from SYSIBM.SYSDUMMY1 </selectKey> insert into Author (id, username, password, email,bio, favourite_section) values (#{id}, #{username}, #{password}, #{email}, #{bio}, #{favouriteSection,jdbcType=VARCHAR} ) </insert> 在上面的示例中, selectKey 元素将会首先运行, Author 的 id 会被设置,然后插入语句会被调用。 这给你了一个简单的行为在你的数据库中来处理自动生成的主键,而不需要使你的 Java 代码变得复杂。

4. selectKey

1. keyProperty selectKey语句结果应该被设置的目标属性。 2. resultType 结果的类型。 MyBatis 通常可以算出来,但是写上也没有问题。MyBatis 允许任何简单类型用作主键的类型,包括字符串。 3. order 这可以被设置为 BEFORE 或 AFTER。 如果设置为 BEFORE,那么它会首先选择主键,设置 keyProperty 然后执行插入语句。 如果设置为 AFTER,那么先执行插入语句,然后是 selectKey 元素-这和如 Oracle 数据库相似,可以在插入语句中嵌入序列调用。

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

例如: <sql id=”userColumns”> id,username,password </sql> <select id=”selectUsers” parameterType=”int” resultType=”hashmap”> select <include refid=”userColumns”/> from some_table where id = #{id} </select>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值