日期:2014-05-16  浏览次数:20491 次

Mybatis3插入语句映射
模版示例
<?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 子元素设置它的值。默认:不设置。