主键生成策略使用ASSIGN_ID
public class User implements Serializable { /** * 主键 */ @TableId(type = IdType.ASSIGN_ID) private Long id; }执行插入时,实体不需要设置id字段值,在插入时会执行CustomIdGenerator#nextId()方法来生成id值。
@Test void testMyBatisPlus() { User user = new User(); user.setAge(50); user.setStatus(2); userMapper.insert(user); }在MP中,ISqlInjector接口负责SQL的注入工作,AbstractSqlInjector是它的实现类,主要是由inspectInject()方法进行注入的,方法又调用injecttMappedStatement()方法,进而进入某个具体的方法类(如SelectById)来组装SQL
selectById(1L) ->
com.baomidou.mybatisplus.core.injector.ISqlInjectorcom.baomidou.mybatisplus.core.injector.AbstractSqlInjector#inspectInject()com.baomidou.mybatisplus.core.injector.AbstractMethod#inject() 循环注入自定义方法,选中AbstractMethod,Ctrl+H 查看具体实现类。com.baomidou.mybatisplus.core.injector.AbstractMethod#injectMappedStatement()com.baomidou.mybatisplus.core.injector.methods.SelectById#injectMappedStatement()