您的位置:首页 > 其它

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

2016-03-03 18:54 260 查看
之前在网上搜了很多教程示例,但是实现起来都没有成功,弄了一下午终于给弄好了。

首先是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,好像是这样。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: