需求:使用MyBatis往MySQL数据库中插入一条记录后,需要返回该条记录的自增主键值。
<!-- 插入并且返回主键id的值 -->
<insert id="insertModel" useGeneratedKeys="true" keyProperty="bussId" parameterType="organBuss">
insert into
basic_organ_buss(parent_id, buss_name, buss_alias, status,creater,create_date,updater,update_date,remark)
values(#{parentId}, #{bussName}, #{bussAlias}, #{status}, #{creater}, #{createDate}, #{updater}, #{updateDate}, #{remark})
</insert>
useGenerateKeys:表示要求数据库本身具备主键自动增长的功能,为true表示支持,为false表示不支持。不支持主键自动增长的数据库是不能使用useGeneratedKeys =true的
keyProperty:表示你插入的实体属性的主键值
若持久层dao:
public interface UserDao {
public int insertAndGetId(User user);
}
测试:
User user = new User();
user.setUserName("chenzhou");
user.setPassword("xxxx");
user.setComment("测试插入数据返回主键功能");
System.out.println("插入前主键为:"+user.getUserId());
userDao.insertAndGetId(user);//插入操作
System.out.println("插入后主键为:"+user.getUserId());
结果表明:实例化的User通过执行sql后,变成了持久太的状况了。