MyBatis+MySQL 返回插入记录的主键ID
2015-08-19 17:44
796 查看
原文 http://www.tuicool.com/articles/FFrmQ3q
今天用到了多个表之间的关系,另一个表中的一个字段要以第一个表的主键作为外键。
下面说非批量的两种方法,MyBatis+MySQL 返回插入记录的主键ID:
第一种:
第二种:
这两种写法都可以,但有两点一定要注意:
一: keyProperty=”id” 这个id必须是实体的id,而不是数据表的主键id,否则,得不到正确的返回结果;
二:接收返回值时候,必须用实体的get属性,而不能定义变量,否则,接收不到正确的返回结果:即必须用user.getId()来接收。
今天用到了多个表之间的关系,另一个表中的一个字段要以第一个表的主键作为外键。
下面说非批量的两种方法,MyBatis+MySQL 返回插入记录的主键ID:
第一种:
<insert id="insertAndGetId" useGeneratedKeys="true" keyProperty="userId" parameterType="com.chenzhou.mybatis.User"> insert into user(userName,password,comment) values(#{userName},#{password},#{comment}) </insert>
第二种:
<insert id="insert" parameterType="cn.***.beans.LogObject" > <selectKey resultType="java.lang.Integer" order="BEFORE" keyProperty="id"> SELECT LOGS_SEQ.nextval AS ID FROM DUAL </selectKey> INSERT INTO S_T_LOGS ( ID, USER_ID, USER_NAME, USER_IP, OPERATION_TIME, DESCRIPTION, RESOURCE_ID) VALUES ( #{id}, #{userId}, #{userName}, #{userIp}, #{operationTime}, #{description}, #{resourceId}) </insert>
这两种写法都可以,但有两点一定要注意:
一: keyProperty=”id” 这个id必须是实体的id,而不是数据表的主键id,否则,得不到正确的返回结果;
二:接收返回值时候,必须用实体的get属性,而不能定义变量,否则,接收不到正确的返回结果:即必须用user.getId()来接收。
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法
- MySQL Server 日志
- MySQL 安全事宜
- MySQL 备份与恢复