mybatis 新增记录后返回自增主键id方式,即使添加了配置,发现userMapper.insert(user)永远返回1,这是因为insert返回只能返回影响行数,而主键的id并不是通过这种方式返回的,主键直接注入到了user对象中,通过
user.getId()就可以获得自增主键了
下面是配置方式
1.采用xml配置sql
添加KeyProperty="id", useGeneratedKeys="true"
<insert id="insert" keyProperty="id" useGeneratedKeys="true"
parameterType="com.demo.domain.User">
insert into User_t(name,age,addr) values(#{name},#{age},#{addr})
</insert>
int i = userMapper.insert(user), i 表示userMapper.insert返回的依旧是sql语句影响的行数,为1。
返回自增主键的意思是,int uid = user.getUid()在没有设置keyProperty="id" useGeneratedKeys="true" 的情况下,user的uid属性为空,设置后mybatis自动将uid注入到user对象中,想要获得uid只要这样就行了
int uid = user.getUid();
2.采用注解的sql方式
添加Options注解:
@Options(useGeneratedKeys = true, keyProperty="uid", keyColumn = "uid")
@Options(useGeneratedKeys = true, keyProperty="uid", keyColumn = "uid")
@InsertProvider(type=UserBaseSqlProvider.class, method="insertSelective")
int insertSelective(UserBase record);