MyBatis入门实验(五)之主键自增长

实验内容

设置数据库表为主键自动增长,在新增数据时不需要设置主键值,而依靠数据库的自动增长机制进行自动生成,新增完成后获取该主键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() 即可取出

猜你喜欢

转载自blog.csdn.net/gongm24/article/details/81021999