美文网首页Mybatis实验室
MyBatis入门实验(五)之主键自增长

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

作者: 学好该死的程序 | 来源:发表于2018-07-12 21:00 被阅读3次

    实验内容

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

    相关文章

      网友评论

        本文标题:MyBatis入门实验(五)之主键自增长

        本文链接:https://www.haomeiwen.com/subject/dbxdpftx.html