Mybatis返回自增主键id的值,2种方式

1.方式一【不建议使用】

【有BUG的方式】通过useGeneratedKeys="true" keyProperty="id"来设置返回新的id值,这里有个问题就是,通过这种方式插入的值,经常会返回1,原因是因为他这里的意思是返回当前影响的行数,不能准确返回你新插入的id值【虽然有时候返回的结果是准确的】


<insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="com.hxj.pojo.User">
    insert into user(id,username,password,email,province,city,hobby,createtime)
    values(#{id},#{username},#{password},#{email},#{province},#{city},#{hobby},#{createtime})
insert>

2.方式二【建议使用】

【无BUG的方式】xml里面的代码

 
    <insert id="insert" parameterType="com.hxj.pojo.Orderx">
        <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
            select LAST_INSERT_ID()
        selectKey>
        insert into orderx(userid,allprice,ordertime,address)
        values(#{userid},#{allprice},#{ordertime},#{address})
    insert>

【无BUG的方式】service里面的代码

/**
 * 插入新的order数据,返回的值是新插入的order的id
 * @param orderx
 * @return
 */
@Override
public Integer insert(Orderx orderx){
    SqlSession sqlSession = MyBatisUtils.getSqlSession(true);
    OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class);
    orderMapper.insert(orderx);//先执行插入orderx的语句
    Integer id = orderx.getId();//通过orderx.getId()获取你新插入数据的id值
    return id;//返回新插入的数据id
}

你可能感兴趣的:(mysql,mybatis,java,mysql)