mybatis插入数据之后获得主键值

之前在网上搜了很多教程示例,但是实现起来都没有成功,弄了一下午终于给弄好了。

首先是DAO里,声明方法,注意我传入的参数是自定义的类型。还有注意我这儿方法返回类型是void。int也行,返回的是数据库改变行的行数。

public void addAtlas(@Param("atlas")Atlas atlas);


接着是mapper文件里。
<insert id="addAtlas" parameterType="Atlas" useGeneratedKeys="true" keyProperty="atlas.id" keyColumn="图册ID" >
    	insert into 矿权图册 (
    		用户ID,
    		图册名称,
    		年度,
    		图册类型,
    		是否发布
    		<if test="atlas.atlasDescription!=null">,描述信息</if>
    	)
    	values(
    		#{atlas.userId},
    		#{atlas.atlasName},
    		#{atlas.atlasYear},
    		#{atlas.atlasType},
    		#{atlas.published}
    		<if test="atlas.atlasDescription!=null">,#{atlas.atlasDescription}</if>
    	)
    </insert>

这里keyProperty="atlas.id"这句话很重要,由于我传入的是atlas,所以要这样写才对,意思是将返回的ID值设置到atlas这个对象的id属性上,如果直接写成“id”,将一直报错。Parameter 'id' not found. Available parameters are [param1, atlas]] with root cause。Parameter 'id' not found. Available parameters are [param1, atlas]

然后在biz类里,进行处理。

System.out.println(atlasDao.addAtlas(atlas));
System.out.println(111111111);
System.out.println(atlas.getId());

然后由于在mapper文件里设置了atlas.id,所以用getId()方法就可以正确取到主键的值了。还有貌似实体类和数据库字段起名不一样,也要先配置下resultMap,好像是这样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值