mybatis设置返回自增主键失败原因
 

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);