1.继承 Mapper, MySqlMapper
在实体类主键加上注解 @Id 和 @GeneratedValue(strategy = GenerationType.IDENTITY) ,在项目中不建议继承这两个类,不过微服务中,单标操作,使用这个 api 比较快捷,示例如下:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
2.xml配置
配置的方式一般有两种:
2.1 在标签属性上添加 useGeneratedKeys(是否是自增长,必须设置 true) 和 keyProperty(主键属性名称,对应实体类) 、keyColumn(主键字段名称,对应数据库表字段名称)
<insert id="insertUser" parameterType="com.dao.model.User" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
INSERT INTO user(name,sex) VALUES(#{name},#{sex})
</insert>
2.2 通过查询返回主键,其中 resultType 是主键返回类型,keyProperty 是实体类主键属性,order 是获取主键方式,AFTER 指插入之后执行,下面 sql 就是查询最后一个主键。
<insert id="insertUser" parameterType="com.dao.model.User" >
<selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER" >
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO user(name,sex) VALUES(#{name},#{sex})
</insert>
3.注解方式
useGeneratedKeys(是否是自增长,必须设置 true) 和 keyProperty(主键属性名称,对应实体类) 、keyColumn(主键字段名称,对应数据库表字段名称)
@Insert("INSERT INTO user(name,sex) VALUES(#{user.name},#{user.sex})")
@Options(useGeneratedKeys=true, keyProperty="user.id",keyColumn="id" )
public int insertUser(@Param("user") User user);