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

来源:互联网 发布:js禁止文本框输入 编辑:程序博客网 时间:2024/05/16 08:02

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

首先是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
原创粉丝点击