实验内容
设置数据库表为主键自动增长,在新增数据时不需要设置主键值,而依靠数据库的自动增长机制进行自动生成,新增完成后获取该主键ID
一、为表设置主键自增长
为主键设置 AUTO_INCREMENT
CREATE TABLE `user` (
`id` bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`username` varchar(32) NOT NULL COMMENT '用户名',
`password` varchar(64) NOT NULL COMMENT '密码',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
二、XML文件方式实现主键自增长
1、修改插入语句
INSERT INTO `user` VALUES (#{id}, #{username}, #{username})
修改为
INSERT INTO `user` (`username`, `password`) VALUES (#{username}, #{username})
ID属性不再传值,而是让数据库自动生成。
2、获取自动生成的主键ID
添加 selectKey
标签进行获取,order 设置为 AFTER
(不同的数据库策略不一样,Mysql使用AFTER)
<insert id="save" parameterType="tutorial.mybatis.model.User">
<selectKey keyProperty="id" resultType="long" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO `user` (`username`, `password`) VALUES (#{username}, #{username})
</insert>
三、注解方式实现主键自增长
@Insert({ "INSERT INTO `user` (`username`, `password`) VALUES (#{username}, #{username})" })
@SelectKey(statement = "SELECT LAST_INSERT_ID()", keyProperty = "id", resultType = Long.class, before = false)
int save(User user);
注意:
save函数返回的 int 是执行保存操作成功的记录条数,并不是生成的主键,生成的主键会自动插入至 User 对象的相应属性中,执行 user.getId()
即可取出
网友评论