mybatis插入记录后返回主键值

pc.d

发布于 2018.09.08 11:32 阅读 1392 评论 0

需求:

插入一条记录的时候需要用到这条记录的自增主键值

想法:

本来想的可以插入后在查询这条记录来获得但是太麻烦。

通过百度查询后可以通过修改mapper.xml来解决。

做法:

<insert id="insertSelective" parameterType="com.jtexplorer.entity.Company" useGeneratedKeys="true" keyProperty="id">

其中: 
useGeneratedKeys=”true” 表明自增主键值 
keyProperty=”id” 用来标识主键colum是’id’。

通过这种方法来解决。

问题:

本以为这样修改完后返回的就是主键值(return companyMapper.insertSelective(company)),但是测试得到返回的仍然是条数。

查资料得到,无论什么情况下,interface接口中的int返回的都是影响的条数(可以用来识别成功插入与否), 
而返回的自增长主键id值,Mybatis利用反射机制,自动帮我们回填到了Model实体类当中了。我们可以利用model.getId()来获取id值。 
(当然,再insert之前,我们用getId()来获取是返回null的)

例:

 public int creatCompany(Company company){

       companyMapper.insertSelective(company);

       return companyMapper.insertSelective(company);//错误,返回的仍然是条数

       return company.getId();                       //正确,返回的是主键
    }