-->
问题?
如何在Java MyBatis 插入数据库返回主键?
最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记。
类似下面这段代码一样获取插入后的主键
User user = new User();
user.setUserName("chenzhou");
user.setPassword("xxxx");
user.setComment("测试插入数据返回主键功能");
System.out.println("插入前主键为:"+user.getUserId());
userDao.insertAndGetId(user);//插入操作
System.out.println("插入后主键为:"+user.getUserId());
解决方案:
由于鄙人当时的学习水平有限,未能很好处理这个问题,如今再来看这个问题,其实很简单。
当时我的思维局限于插入数据后不想再次调用查询接口,就直接获取这个插入的主键Id. 因此如果想达到这种效果,最优方案是下面解决方案的第二种方式。
但是其实我们完全可以在插入后再调用下其他查询接口就可以了。
User user = new User();
user.setUserName("chenzhou");
user.setPassword("xxxx");
user.setComment("测试插入数据返回主键功能");
System.out.println("插入前主键为:"+user.getUserId());
userDao.insertAndGetId(user);//插入操作
User myUser=userDao.findUserByName(user.getName());
System.out.println("插入后主键为:"+myUser.getUserId());
不想再次调用查询接口的解决方案
经过查询网上资料,发现大致有两种方式。