Mybatis的主键生成是基于JDBC的使用主键【getGeneratedKeys()】方法
也就是说,必须要JDBC驱动的支持才行
@Test public void junitTest() throws SQLException { Connection connectionByOriginalJdbc = CompleteJdbcUtils.getConnectionByOriginalJdbc();、
PreparedStatement preparedStatement = connectionByOriginalJdbc.prepareStatement("");
ResultSet generatedKeys = preparedStatement.getGeneratedKeys(); }
useGeneratedKeys 表示使用数据库生成的主键,
keyProperty 表示绑定数据表的主键返回给实体类的哪个字段
在之前的插入SQL中并不需要主键生成功能就能完成主键自增生成,
看来是JDBC自动生成的【如果开启就像官方说的一样,是强制生成的】
使用<SelectKey> 标签
SELECT last_insert_id 表示查询最后一次插入的id
如果在SQL执行前查询,就返回最后一次插入的记录的id
然后我们的插入SQL就会按这个查询的id插入,这样插入是有问题的,
所以要选择AFTER,在执行插入后返回主键,再生成
对应的,使用注解实现的方式
原文:https://www.cnblogs.com/mindzone/p/12840751.html