引用:http://thoughtfly.iteye.com/blog/1487641
模版示例
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="XXX">
- <insert id="insert" parameterType="XXX
- flushCache="true" statementType="PREPARED" timeout="20000">
- insert into user (id,name,mark)
- values (#{id},#{name},#{mark})
- </insert>
- </mapper>
如果使用的是像Mysql一样的可自动递增主键的数据库,还可以更改成ID自动插入
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="XXX">
- <insert id="insert" parameterType="XXX"
- useGeneratedKeys="true" keyProperty="id" flushCache="true" statementType="PREPARED" timeout="20000">
- insert into user (name,mark)
- values (#{name},#{mark})
- </insert>
- </mapper>
如果没有自递增,也可以使用selectKey自定义一个自递增方法
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="XXX">
- <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>
- </mapper>
属性解释
- id 在命名空间中唯一的标识符,可以被用来引用这条语句。
- parameterType 将会传入这条语句的参数类的完全限定名或别名。
- parameterMap 这是引用外部 parameterMap 的已经被废弃的方法。使用内联参数映射和 parameterType 属性。 ()
- flushCache 将其设置为 true,不论语句什么时候被用,都会导致缓存被清空。默认值:false。
- timeout 这个设置驱动程序等待数据库返回请求结果,并抛出异常时间的最大等待值。默认不设置(驱动自行处理)。
- statementType STATEMENT,PREPARED 或 CALLABLE 的一种。这会让 MyBatis使用选择使用 Statement,PreparedStatement 或 CallableStatement。默认值:PREPARED。
- useGeneratedKeys (仅对 insert 有 用) 这 会告 诉 MyBatis 使用 JDBC 的getGeneratedKeys 方法来取出由数据(比如:像 MySQL 和 SQLServer 这样的数据库管理系统的自动递增字段)内部生成的主键。默认值:false。
- keyProperty (仅对insert有用) 标记一个属性, MyBatis会通过getGeneratedKeys或者通过 insert 语句的selectKey 子元素设置它的值。默认:不设置。