时间:2021-05-02
项目使用springboot搭建。最初的时候是使用mybatis,后来升级到mybatis plus。按照mp的官网介绍,使用mp的insert方法,对于自增的数据库表,mp会把主键写入回实例的对应属性。但实际操作起来,却没有主键。
entity 类设置如下:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 @TableName(value = "USERINFO") public class UserInfo { /** * 指定自增策略 */ @TableId(value = "user_id",type = IdType.AUTO) private Long userId; private String gender; private Date birthday; private String phone; //省略后面的其他属性和getter/setter }dao 类设置如下:
? 1 2 3 4 5 6 7 8 9 10 11 @Repository @Mapper public interface UserInfoDao extends BaseMapper<UserInfo> { // int insert(UserInfo record); int insertSelective(UserInfo record); UserInfo selectByPrimaryKey(Long logId); int updateByPrimaryKeySelective(UserInfo record); }Service类调用userInfoDao的insert方法(此方法是来源于BaseMapper)。但是insert成功后没有返回主键userId。上网查了下,其他人都是这样设置,就会有主键返回。
看到dao类里面一条注释,// int insert(UserInfo record); ,心里有个想法。
这条注释对应的insert方法,是使用mybatis generator生成的。但是因为此方法名和mybatis plus的通用方法名一样,所以我把它注释了。会不会是因为dao对应的mapper.xml文件,里面的id = inesert的sql语句依然存在,从而覆盖掉了mybatis plus的通用insert,所以没有自动返回主键。
点进去对应mapper.xml文件,果然看到<insert id="insert">的sql语句。删掉该语句,重试mybatis plus的insert方法,这次有主键返回了。
到此这篇关于详解mybatis plus使用insert没有返回主键的处理的文章就介绍到这了,更多相关mybatis plus insert没有主键内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/dl348/article/details/100013979
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式。不管SelectKey有多好,尽量不
mybatis-plus3.0.1枚举返回为null解决办法2020-11-0214:28:48今天再次回到代码里无意间看到,原来和mybatis-plus没有
MyBatis获取数据库自生成的主键Id详解及实例代码在使用MySQL数据库时我们一般使用数据库的自增主键自动产生主键。如果在插入主表时,我们需要同时插入从表的
我们都知道Mybatis在插入单条数据的时候有两种方式返回自增主键:1、对于支持生成自增主键的数据库:增加useGenerateKeys和keyProperty
需求:使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值。方法:在mapper中指定keyProperty属性,示例如下:ins