先从插入insert方法开始。 基于前文创建的UserInfo类,我们写一个test的方法,用于追踪insert方法—— @Testpublicvoidtest(){UserInfouserInfo=newUserInfo();userInfo.setUserName("用户名");userInfo.setAge(1);userInfoMapper.insert(userInfo);} 可以看到,此时的id=0,还没有任何值—— 执行到insert的时候,底层会...
我找到数据库访问层的insert语句处,发现使用的是mybatis-plus,网上查了一下关于这块的东西,发现insert方法在配置的时候,可以指定自增ID的方式。 源码中定义有以下几种 public enum IdType { AUTO(0, "数据库ID自增"), INPUT(1, "用户输入ID"), ID_WORKER(2, "全局唯一ID"), UUID(3, "全局唯一ID"),...
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 =...
手动插入数据,居然OK。 那就说明,可能是我们代码insert数据的时候存在的问题。我找到数据库访问层的insert语句处,发现使用的是mybatis-plus,网上查了一下关于这块的东西,发现insert方法在配置的时候,可以指定自增ID的方式。 源码中定义有以下几种 public enum IdType { AUTO(0, "数据库ID自增"), INPUT(1, "...
1. ableInfo.getAllInsertSqlColumn() /*** 获取 inset 时候字段 sql 脚本片段 * insert into table (字段) values (值) * 位于 "字段" 部位 * *@returnsql 脚本片段*/publicString getAllInsertSqlColumn() {returngetKeyInsertSqlColumn() +fieldList.stream().map(TableFieldInfo::getInsertSqlColumn)...
带着这样的疑惑,我开始研究了一番Mybatis Plus的insert自增id的策略源码,并将其写成了本文。 先来看一下Mybatis Plus生成id的自增策略,可以通过枚举IdType设置以下数种策略—— @Getter public enum IdType { /** * 数据库ID自增 */ AUTO(0), ...
在实际的项目开发过程中,常常遇到批量保存数据的场景,当数据量比较少,比如只有几条数据的情况下,我们可以使用for循环来insert数据,但如果数据量比较多的情况下就不行,特别是并发的情况下,因为这样会增加数据库的负担。 我们通过查看mybatis-plus源码发现,mybatis-plus的IServiceAPI 接口提供了批量插入的接口: ...
insert(user); } 这样,当调用addUser方法时,Mybatis-Plus就会自动将user对象插入到数据库中。 三、insert方法的源码分析 虽然使用insert方法非常简单,但是了解其背后的实现原理对于更深入的理解Mybatis-Plus非常有帮助。下面我们将简要分析insert方法的源码实现。 Mybatis-Plus的insert方法最终会调用Mybatis的SqlSession...
一、使用mybatis-plus内置批量插入 mybatis-plus内置提供了InsertBatchSomeCulumn来实现真批量插入,但是由于只支持MySQL的语法格式,所以没有在通用的API作为默认使用。 将InsertBatchSomeCulumn实例放入Sqlnjector列表中 代码语言:java 复制 @BeanpublicDefaultSqlInjectorinsertBatchSqlInject(){returnnewDefaultSqlInjector(...