来源:https://my.oschina.net/zudajun/blog/666764前言说到数据库事务,人们脑海里自然不自然的就会浮现出事务的四大特性、四大隔离级别、七大传播特性。四大还好说,问题是七大传播特性是哪儿来的?是Spring在当前线程内,处理多个数据库操作方法事务时所做的一种事务应用策略。事务本身并不存在什么传播特性,不要混淆事务本身和Spring的事务应用策略。(当然,找工作面试时,还是可以巧妙的描述传播特性的)一说到事务,人们可能又会想起create、begin、commit、rollback、close、suspend。可实际上,只有commit、rollback是实际
什么是缓存?为什么使用缓存?什么场景下使用缓存?缓存(Cache)就是数据交换的缓冲区,一个临时存储数据的地方,当我们读取数据时会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话再从内存中找。在实际开发中,我们会经常对数据库进行数据查询,而从数据库读取数据的效率是非常低下的,并且频繁地去访问数据库会增大数据库压力降低数据库查询性能等,所以我们可以将经常查询且不经常改变的数据保存到缓存中(缓存就是内存中的一个对象),这样用户在查询的时候就不用到数据库中查询(磁盘),从而减少与数据库的交付次数,从而提高查询效率,解决了高并发系统的性能问题。缓存的本质就是用空间换时间,牺牲数据的实时性,
什么是缓存?为什么使用缓存?什么场景下使用缓存?缓存(Cache)就是数据交换的缓冲区,一个临时存储数据的地方,当我们读取数据时会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话再从内存中找。在实际开发中,我们会经常对数据库进行数据查询,而从数据库读取数据的效率是非常低下的,并且频繁地去访问数据库会增大数据库压力降低数据库查询性能等,所以我们可以将经常查询且不经常改变的数据保存到缓存中(缓存就是内存中的一个对象),这样用户在查询的时候就不用到数据库中查询(磁盘),从而减少与数据库的交付次数,从而提高查询效率,解决了高并发系统的性能问题。缓存的本质就是用空间换时间,牺牲数据的实时性,
作者:smile_lg来源:blog.csdn.net/smile_lg/article/details/71215619用来循环容器的标签forEach,查看例子foreach元素的属性主要有item,index,collection,open,separator,close。item:集合中元素迭代时的别名,index:集合中元素迭代时的索引open:常用语where语句中,表示以什么开始,比如以'('开始separator:表示在每次进行迭代时的分隔符,close常用语where语句中,表示以什么结束,在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性
作者:smile_lg来源:blog.csdn.net/smile_lg/article/details/71215619用来循环容器的标签forEach,查看例子foreach元素的属性主要有item,index,collection,open,separator,close。item:集合中元素迭代时的别名,index:集合中元素迭代时的索引open:常用语where语句中,表示以什么开始,比如以'('开始separator:表示在每次进行迭代时的分隔符,close常用语where语句中,表示以什么结束,在使用foreach的时候最关键的也是最容易出错的就是collection属性,该属性
在上一篇if中我们已经把if和where标签进行了学习,现在我们学习一些剩下的标签。一、set标签首先看官方文档给出的说明:用于动态更新语句的类似解决方案叫做 set。set 元素可以用于动态包含需要更新的列,忽略其它不更新的列。set 元素会动态地在行首插入SET关键字,并会删掉额外的逗号(这些逗号是在使用条件语句给列赋值时引入的)。我们不难明白set标签是用在update语句用代替原来的set字段,接下来我们看一下set标签的具体应用。1.在BlogMapper接口中声明方法voidUpdateBySet(Mapmap);我这里是通过map传递参数,其他传参方式也都可以。2.配置BlogM
在上一篇if中我们已经把if和where标签进行了学习,现在我们学习一些剩下的标签。一、set标签首先看官方文档给出的说明:用于动态更新语句的类似解决方案叫做 set。set 元素可以用于动态包含需要更新的列,忽略其它不更新的列。set 元素会动态地在行首插入SET关键字,并会删掉额外的逗号(这些逗号是在使用条件语句给列赋值时引入的)。我们不难明白set标签是用在update语句用代替原来的set字段,接下来我们看一下set标签的具体应用。1.在BlogMapper接口中声明方法voidUpdateBySet(Mapmap);我这里是通过map传递参数,其他传参方式也都可以。2.配置BlogM
MyBatisPlus国产的开源框架,基于MyBatis核心功能就是简化MyBatis的开发,提高效率。MyBatisPlus快速上手官网快速上手案例SpringBoot(2.3.0)+MyBatisPlus(国产的开源框架,并没有接入到Spring官方孵化器中)1、创建Maven工程2、pom.xml引入MyBatisPlus的依赖com.baomidoumybatis-plus-boot-starter3.3.1.tmp3、创建实体类packagecom.southwind.mybatisplus.entity;importlombok.Data;@DatapublicclassUser{
MyBatisPlus国产的开源框架,基于MyBatis核心功能就是简化MyBatis的开发,提高效率。MyBatisPlus快速上手官网快速上手案例SpringBoot(2.3.0)+MyBatisPlus(国产的开源框架,并没有接入到Spring官方孵化器中)1、创建Maven工程2、pom.xml引入MyBatisPlus的依赖com.baomidoumybatis-plus-boot-starter3.3.1.tmp3、创建实体类packagecom.southwind.mybatisplus.entity;importlombok.Data;@DatapublicclassUser{
一、什么是SQL片段就是将我们Mapper.xml文件中部分SQL语句拿出来单独用一个sql标签进行标记,这个sql标签就是一个SQL片段。二、为什么要用到SQL片段这个sql标签可以被引用,这样需要用到这个sql标签中的SQL语句的地方直接引用就可以,如此一来就提高了SQL代码的复用性,而不至于有大片的重复SQL。三、SQL片段的具体使用sqlid="select-author-title">iftest="author!=null">andauthor=#{author}if>iftest="title!=null">andtitle=#{title}if>sql>selectid="Qu