一个请求
过来,系统从线程池
中分配一个可用的线程
来处理当前请求的逻辑。
即某一请求的生命周期时间内,一个线程只用来处理一个请求,处理完之后,还给线程池(【特别注意】该线程还在,没被销毁,等待分配给别的页面请求用)
一个请求
过来,系统从线程池
中分配一个可用的线程
来处理当前请求的逻辑。
即某一请求的生命周期时间内,一个线程只用来处理一个请求,处理完之后,还给线程池(【特别注意】该线程还在,没被销毁,等待分配给别的页面请求用)
工作中,经常会遇到很多批量操作的需求:批量添加、批量更新、批量删除、批量导入、批量审核等等,下面这篇文章我们将一一复现,首先我们先了解一下mybatis的标签foreach循环。
由于项目是使用MyBatis-Plus开发的,用起来也确实比较方便,尤其是service层封装好的一些通用的增删改查方法,省去了不少sql语句的书写,但是在开发过程中,我也发现MyBatis-Plus的saveBatch批量插入方法针对MySQL和Oracle数据库可能会出现效率贼低的情况
IService中自带的 saveBatch
和 saveOrUpdateBatch
等方法,仔细看会发现,他们的批量执行,竟然不是 真正的(数据库级别的)批量执行
大家已知MP给大家提供了很多通用的方法,可以看看MP源码中DefaultSqlInjector
这个类,在这个集合当中包含了都是通用方法类,如果想要使用自定义通用方法,也需要添加到这个集合当中。
MyBatis-Plus为我们支持了许多种的主键策略,主键策略是指MyBatis-Plus可以自动生成主键的策略,不需要手动插入主键,MyBatis-Plus的主键策略帮我们自动生成主键
总得来说,Mybatis注重的是写sql语句。针对单表 的增删改查还是比较好写的,直接写出SQL语句可以了,但是如果遇到了多表的关联查询,可能就会复杂了点。
动态SQL就是复用sql语句的过程。
别名最初是在数据库中接触到的,后来发现在任何有计算机的地方都可以用别名来代替一些东西,这样就方便,有好用,程序员可以减少很多的工作量,效果也很棒。
mapper代理方法其实就是加入了一个接口层,这个接口的方法命名有要和id相同,初始参数要和parameterType类型相同,返回值要和resultType相同,这些都是为了我们映射规定的规范。