正在回答
可以这么理解,如下是mybatis官方文档给出的解释,http://www.mybatis.org/mybatis-3/zh/configuration.html#settings,同学可以参考一下,祝学习愉快~
如果不加上useGeneratedKeys="true" 和keyProperty(id),那么下图的sql语句会报错,需要在insert into claim_voucher()中添加id字段;之所以用这两个属性,因为主键是自动增长的,所以keyProperty(id)属性会自动绑定claim_voucher表中的id,如果同学还有不明白的地方,可以继续提问,祝学习愉快~
是的,调用insertsql语句的方法是不需要获取返回值,但是当你插入数据的时候,是不需要输入编号的,所以需要这个编号赋值到bean对象中,譬如下图标记的ClaimVoucher对象中,这个对象之前的id值为null,添加useGeneratedKeys="true"这个属性之后,ClaimVoucher对象中的id就会被赋值为主键值,这就是这两个属性的作用。具体如何使用,其实在oa系统的课中就讲过了,同学可以参考这个链接https://class.imooc.com/lesson/596#mid=13573中的9分左右,老师有说明id编号的作用。看课加上我解释的,你会更容易理解一些,祝学习愉快~
给你举个例子,使用useGeneratedKeys="true"属性机型配置时,会返回插入数据的主键值,及建表时的主键值,比如你插入一条数据,主键值是3,那么配置useGeneratedKeys="true"时会返回3,.keyProperty(id)则跟你bean类中的属性是一致的,如下图所示,要与id一致,跟你http://class.imooc.com/course/qadetail/52257这个问答的功能一样,祝学习愉快~
如果不设置useGeneratedKeys="true",那么就不会将新增加的主键赋值到自己的自己定义的keyProperty(id)中,也就是说,不会返回新增数据的主键值,而只是执行了插入的操作,祝学习愉快~
- 参与学习 人
- 提交作业 205 份
- 解答问题 4317 个
Java中非常实用的SSM整合开发内容,从Spring开始,到MyBaits的进阶内容,再到SpringMVC的应用,最后是SSM整合开发案例,逐步深入,助你成长为一名Java工程师!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星