首页 > 代码库 > Mybatis Generator insert useGeneratedKeys keyProperty
Mybatis Generator insert useGeneratedKeys keyProperty
Mybatis自动生成代码,需要用到mybatis Generator,详见http://mybatis.github.io/generator/configreference/generatedKey.html
insert语句如果要返回自动生成的key值,一般会在insert里加入useGeneratedKeys属性,例如
<insert id="insert" parameterType="cn.ac.iscas.pebble.ufe.bean.Subtask" useGeneratedKeys="true" keyProperty="sid"> insert into subtasks (SID, TID, RID, START, INTERVALL, SCHEDULE, RESULTS, STYLE) values (#{sid,jdbcType=INTEGER}, #{tid,jdbcType=INTEGER}, #{rid,jdbcType=INTEGER}, #{start,jdbcType=TIMESTAMP}, #{interval,jdbcType=INTEGER}, #{schedule,jdbcType=INTEGER}, #{results,jdbcType=VARCHAR}, #{style,jdbcType=INTEGER}) </insert>
如果要让generator自动添加该功能,可以如下配置:
<table schema="cc" tableName="test" domainObjectName="TT" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"> <generatedKey column="taskid" sqlStatement="SELECT LAST_INSERT_ID()"/> </table>
则通过generator自动生成的Mapper文件里的insert语句则类似如下:
<insert id="insert" parameterType="cn.ac.iscas.pebble.ufe.bean.TT" > <selectKey resultType="java.lang.Integer" keyProperty="taskid" order="BEFORE" > SELECT LAST_INSERT_ID() </selectKey> insert into test (TASKID) values (#{taskid,jdbcType=INTEGER}) </insert>
其中generateKey的sqlStatement属性见下表:
Attribute | Description | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
column | The column name of the generated column. | ||||||||||||||||||||
sqlStatement | The SQL statement that will return the new value. If this is an identity column, then you can use one of the predefined special values, or substitute the proper statement for your database. The predefined special values are as follows:
|
关于mybatis的mapper文件的xml学习可以参考:http://my.oschina.net/zplswf/blog/63981
其中关于useGeneratedKeys和keyProperty参考下表:
属性 | 描述 |
---|---|
id | 在命名空间中唯一的标识符,可以被用来引用这条语句。 |
parameterType | 将会传入这条语句的参数类的完全限定名或别名。 |
parameterMap | 这是引用外部 parameterMap 的已经被废弃的方法。使用内联参数映射和 parameterType 属性。 |
flushCache | 将其设置为 true,不论语句什么时候被带哦用,都会导致缓存被清空。默认值:false。 |
timeout | 这个设置驱动程序等待数据库返回请求结果, 并抛出异常时间的最大等待值。默认不设置(驱动自行处理)。 |
statementType | STA TEMENT,PREPARED 或 CALLABLE 的一种。这会让 MyBatis 使用选择使用 Statement,PreparedStatement 或 CallableStatement。默认值:PREPARED。 |
useGeneratedKeys | ( 仅 对 insert 有 用 ) 这 会 告 诉 MyBatis 使 用 JDBC 的 getGeneratedKeys 方法来取出由数据(比如:像 MySQL 和 SQL Server 这样的数据库管理系统的自动递增字段)内部生成的主键。默认值:false。 |
keyProperty | (仅对 insert 有用) 标记一个属性, MyBatis 会通过 getGeneratedKeys 或者通过 insert 语句的 selectKey 子元素设置它的值。默认: 不设置。 |
keyColumn | (仅对 insert 有用) 标记一个属性, MyBatis 会通过 getGeneratedKeys 或者通过 insert 语句的 selectKey 子元素设置它的值。默认: 不设置。 |
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。