新增数据返回主键的问题
1、表结构
CREATE TABLE `user` ( `user_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户自增id',//必须设置为自增主键 `user_name` varchar(64) NOT NULL COMMENT '用户名', `user_contactor` varchar(32) DEFAULT NULL COMMENT '联系人', `user_phone` varchar(16) DEFAULT NULL COMMENT '联系电话', `status` varchar(2) DEFAULT '1' COMMENT '状态 0禁用 1正常', `create_user` varchar(16) DEFAULT NULL COMMENT '创建人', `create_date` datetime DEFAULT NULL COMMENT '创建时间', `last_modify_user` varchar(16) DEFAULT NULL COMMENT '最近修改信息人', `last_modify_date` datetime DEFAULT NULL COMMENT '最后修改时间', PRIMARY KEY (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息表';
2、mapper.xml代码
第一种方式
<insert id="saveUser" parameterType="com.mysome.UserDTO" useGeneratedKeys="true" keyProperty="userId" keyColumn="user_id">
INSERT INTO user(
user_name, user_contactor, user_phone, status,
create_user,create_date,last_modify_user,last_modify_date
)
VALUES (
#{userName}, #{userContactor},#{userPhone}, #{status},
#{createUser},#{createDate},#{lastModifyUser}, #{lastModifyDate}
)
</insert>
第二种方式
<insert id="saveUser" parameterType="com.mysome.UserDTO">
INSERT INTO user(
user_name, user_contactor, user_phone, status,
create_user,create_date,last_modify_user,last_modify_date
)
VALUES (
#{userName}, #{userContactor},#{userPhone}, #{status},
#{createUser},#{createDate},#{lastModifyUser}, #{lastModifyDate}
)
<selectKey resultType="java.lang.Long" keyProperty="userId" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
</insert>
3、dao层代码
int saveUser(UserDTO user);
进行保存操作后,返回的主键值就保存在参数user的userId中,而saveUser方法返回的则是保存操作返回的影响行数,成功则为1,失败为0。