springboot中使用mybatis-plus,用到了它的批量保存和更新的方法,就是seBatch和seOrUpdateBatch

类似于这种做批量更新 Configuration c= this.getSqlSession().getConfiguration(); MadTransactionFactory madTransactionFactory = new MadTransactionFactory(); BatchExecutor batchExecutor=new BatchExecutor(c,madTransactionFactory.newTransaction(7. 参与社区: 参与框架的社区讨论、和问答平台。在这些地方可以提问、解答问题,与其他学习者和专业人士交流经验。this.getSqlSession().getConnection(),false)); int i = 0; for (JaBean entity : list) { batchExecutor.doUpdate(c.getMappedStatement(sql), 在 select 的时候的字段验证策略: wrapper 根据内部 entity 生成的 where 条件 目前没有默认值,等 {@link #fieldStrategy} 完全去除掉,会给个默认值 NOT_NULL 没配则按 {@link #fieldStrategy} 为准entity); if (i++ > 0 && i % BATCH_SIZE == 0) { batchExecutor.doFlushStatements(); } } batchExecutor.doFlushStatements();

mybatisplus事务_mybatisplus查询mybatisplus事务_mybatisplus查询


mybatisplus事务_mybatisplus查询


mybatisPlus的field-strategy配置失效

删除时,实际是执行update语句,将 deleted 设为 true

场景:前端修改给后台传递了几个空字符串。后台使用mybatisPlus 作为dao层。结果发现空字符串也更新了,mybatisPlus 的field-strategy设置为 2 非空;

解决思路:查看mybatisPlus 版本异。发现field-strategy已经弃用,从3.1.2 后使用下面这几个配置对非空进行判断

字段验证策略之 insert

说明:

在 insert 的时候的字段验证策略 目前没有默认值,等 {@link #fieldStrategy} 完全去除掉,会给个默认值 NOT_NULL 没配则按 {@link #fieldStrategy} 为准

字段验证策略之 update

说明:

在 update 的时候的字段验证策略 目前没有默认值,等 {@link #fieldStrategy} 完全去除掉,会给个默认值 NOT_NULL 没配则按 {@link #fieldStrategy} 为准

字段验证策略之 select

说明:

spring mybatis 使用的是什么事务

首先配置mybatis-plus配置

spring,mybatis事务管理配置与@Transactional注解使用

spring支持编程式事务管理和声明式事务管理两种方式。

声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于@Transactional注解的方式),便可以将事务规则应用到业务逻辑中。

显然声明式事务管理要优于编程式事务管理,这正是spring倡导的非侵入式的开发方式。声明式事务管理使业务代码不受污染,一个普通的POJO对象,只要加上注解就可以获得完全的事务支持。和编程式事务相比,声明式事务不足地方是,后者的最细粒度只能作用到方法级别,无法做到像编程式事务那样可以作用到代码块级别。但是即便有这样的需求,也存在很多变通的方法,比如,可以将需要进行事务管理的代码块为方法等等。

声明式事务管理也有两种常用的方式,一种是基于tx和aop名字插入时会自动将 deleted 设为 false空间的xml配置文件,另一种就是基于@Transactional注解。显然基于注解的方式更简单易用,更清爽。

mybatis plus整合mysql json

执行日志:

测试结果如下:

编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionMar。对于编程式事务管理,spring使用TransactionTemplate。

查询2:

测试查询结果:

可以看到mybatis plus默认生成的字段类型是string的,早期版本是 @TableField(el = ",typeHandler = comm.test.handler.ListTypeHandler") 试了下并不起作用,并没有去深究,升级版本后

试了下是可以的,测试的结果是后面重新建了表省去了几个字段

SpringBoot+Mybatis-Plus两种分页方法

6. 实践项目: 创建一个小型的实践项目,尝试在其中应用框架的不同特性。通过实际动手,加深对框架的理解。

种方式,mybatis-plus原生QueryWrapper方式分页,这种方式比较简单,可以不用修改Mapper,适合简单的增删改查。

这里的@ModelAttribute注解可以将前端传过来的 current 和 size 字段映射到Page对象中

第二种方式,使用mapper文件的select注解,优点是可以方便的建立查询语句,可以联合多表查询。

Mapper文件

Controller文件

mybatis-plus中IServ中的page方法返回的结果total和pages始终为0?

2. 选择框架: 根据你的需求和兴趣选择一个适合的框架,比如Spring、Hibernate、Spring Boot等。了解框架的用途和特点。

MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();

MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(paginationInterceptor());return interceptor;

interceptor.addInnerInterceptor(paginationInterceptor());

return interceptor;

}要把加进去吧。试试

MyBatis Plus - xml中如何使用autoResultMap构造的ResultMap

命名规则就是: mybatis-plus_{实体类名9. 持续学习: 框架技术不断发展,保持学习的态度。关注框架的更新和新功能,参加培训、研讨会等活动。}

MyBatis Plus本身并不是一个动态的ORM,而只是在myselect from t_test where JSON_CONTAINS(,JSON_OBJECT('major','math','height',1.87));batis初始化的时候,为mybatis提供常用的SQL语句,resultMap设置,并不会改变MyBatis本身的行为

spring boot + MyBatisPlus 一对多、多对一、多对多的解决方案

logic-not-delete-value 未软删除值

在学习MyBatisPlus 时,简单的查询非常简单,只需继承了相关类,就能够进行增删改。但是在实际运用时,对象之间的关系非常复杂,一对多、多对一、多对@Bean多。网上查询了大量资料都无法解决此问题。

mybatis-plus分页查询

查询1:

BaseController中

如果只是单表,那么分页查询就容易的多了

关联多表分页查询

PbBuildingController中

PbBuildingServ

PbBuildingMapper

PbBuildingMapper.xml

如果仅仅查列表而不需要分页,前端不需要传current和size参数,而后台不需要Page参数

如果Mybatis-Plus分页查询且不返回总数total

使用 // 不查询总记录数 page.setSearchCount(false);

Mybatis-Plus分页查询不返回总数total