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里面的代码
<!--添加订单到order-->
<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
}