接下来,让我们跟着源码看一下,究竟是如何基于这些ID策略做id自增的,本文主要以ID_WORKER(3)策略id来追踪。 先从插入insert方法开始。 基于前文创建的UserInfo类,我们写一个test的方法,用于追踪insert方法—— @Testpublicvoidtest(){UserInfouserInfo=newUserInfo();userInfo.setUserName("用户名");userInfo.setAge(...
mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 1. 2. 3. 2、测试插入的代码: @Test void testInsert() { UserEntity userEntity = new UserEntity(); userEntity.setName("pipizhen"); userEntity.setAge(10); userEntity.setEmail("ppz@qq.com"); int count =...
那就说明,可能是我们代码insert数据的时候存在的问题。我找到数据库访问层的insert语句处,发现使用的是mybatis-plus,网上查了一下关于这块的东西,发现insert方法在配置的时候,可以指定自增ID的方式。 源码中定义有以下几种 public enum IdType { AUTO(0, "数据库ID自增"), INPUT(1, "用户输入ID"), ID_WORKE...
* insert into table (字段) values (值) * 位于 "字段" 部位 * *@returnsql 脚本片段*/publicString getInsertSqlColumn() { String sqlScript= column +StringPool.COMMA;if(fieldFill == FieldFill.INSERT || fieldFill ==FieldFill.INSERT_UPDATE) {returnsqlScript; }returnconvertIf(sqlScript, proper...
带着这样的疑惑,我开始研究了一番Mybatis Plus的insert自增id的策略源码,并将其写成了本文。 先来看一下Mybatis Plus生成id的自增策略,可以通过枚举IdType设置以下数种策略—— @Getter public enum IdType { /** * 数据库ID自增 */ AUTO(0), ...
从源码可以看到,所谓的批量插入就是一个for循环插入,很明显,这不是我们想要结果。而当我们继续阅读mybatis-plus的源码可以发现,在com.baomidou.mybatisplus.extension.injector.methods.InsertBatchSomeColumn包中已经为我们实现了真正意义上的批量插入方法,这里就不贴实现的源码了,有兴趣的可以去看看。
insert(user); } 这样,当调用addUser方法时,Mybatis-Plus就会自动将user对象插入到数据库中。 三、insert方法的源码分析 虽然使用insert方法非常简单,但是了解其背后的实现原理对于更深入的理解Mybatis-Plus非常有帮助。下面我们将简要分析insert方法的源码实现。 Mybatis-Plus的insert方法最终会调用Mybatis的SqlSession...
mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 2、测试插入的代码 @Test void testInsert() { UserEntity userEntity = new UserEntity(); userEntity.setName("pipizhen"); userEntity.setAge(10); userEntity.setEmail("ppz@qq.com"); ...
一、使用mybatis-plus内置批量插入 mybatis-plus内置提供了InsertBatchSomeCulumn来实现真批量插入,但是由于只支持MySQL的语法格式,所以没有在通用的API作为默认使用。 将InsertBatchSomeCulumn实例放入Sqlnjector列表中 代码语言:java 复制 @BeanpublicDefaultSqlInjectorinsertBatchSqlInject(){returnnewDefaultSqlInjector(...