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>
sql的映射XML文件
最新推荐文章于 2023-02-21 17:44:18 发布