mybatis insert 插入数据 想要返回自增主键ID 得到一直是1

记录一下小问题:最近在写毕业设计,需要用到insert返回id。因为之前写过,所以就眼高手低直接写了,然后出现了,插入数据成功返回的却不是相应的自增ID.

问题所在

Mapper层

int adminInsertCommunity(Community community); 

得到的返回值其实表示插入的行数

    <insert id="adminInsertCommunity" useGeneratedKeys="true" keyProperty="id" parameterType="com.lf.mycommunity.domain.Community">
        insert into community(name,total_num,current_num,address,introduce) values (#{name},#{total_num},#{current_num},#{address},#{introduce})
    </insert>

其中 useGeneratedKeys=“true”、keyProperty=“id” 会将主键id 封装到对象的id。所以不应直接用返回的值,而是通过使用对象的get方法获取,如下;

 int count = communityService.adminInsertCommunity(community); // 调用service实现insert插入
            communityHashMap.put("得到为1(为插入的行数):",count ); // 错误获取自增ID的方式,误以为count是返回的自增的ID,其实只不过影响的行数。这里新增了一条,结果应该为:1
            communityHashMap.put("得到ID",community.getId() ); // 正确获取自增ID的方式 ,通过对象得get方法获得自增主键ID

上面代码的执行结果

image-20220323205719630

count的对应结果为1

得到的ID 为自增ID 13

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐