2020
11-29
11-29
mybatis中的一级缓存深入剖析
mybatis中提供有一级缓存和二级缓存,这里记录一下一级缓存一级缓存(mybatis中默认开启)SqlSession级别的缓存,操作数据库时需要构造SQLSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据,不同的SQLSession对象之间的缓存数据是不共享的,即独立的根据第一点,简单一点讲就是一级缓存是属于对象的(个人记法)从别处搞来一个图,便于我们理解:下面用spring整合mybatis来测试一下mybatis的一级缓存:1、下面...
继续阅读 >
A.where标签会自动删除第一个多余的and或者or,set标签会自动删除最后一个','B.trim标记,是一个格式化的标记,可以完成set或者是where标记的功能,如下代码:1、select*fromuser<trimprefix="WHERE"prefixoverride="AND|OR"><iftest="name!=nullandname.length()>0">ANDname=#{name}</if><iftest="gender!=nullandgender.length()>0">ANDgender=#{gender}</if></trim>假如说name和gender的值都不为null的话打...
要查询的sql:select*fromuserwherename=?and(age=?orcity=?);方法1:不使用Example查询直接在usermapper.xml中修改sql方法2:使用Example查询sql可转换成select*fromuserwhere(name=?andage=?)or(name=?andcity=?);然后使用Example查询UserExampleexample=newUserExample();example.or().orAgeLike("%"+searchParam+"%").andNameEqualTo(userName);example.or().orCityLi...
今天刚刚学习了mybatis,做了简单的对数据库的增删改查。在进行删除操作时,单条删除时很简单,但是批量删除的时候拼接删除条件却有些麻烦,现记录一下做法。Sql语句中,当删除条件并不唯一的时候,我们有两种删除的sql语句,一种使用or拼接where中的条件,例如deletefrom表名where条件1or条件2,另一种是使用in例如deletefrom表名where元素in()利用第一种删除语句在mybatis中的mapping.xml中进行拼接:利用第二种删除语...
#{}表示一个占位符即?,可以有效防止sql注入。在使用时不需要关心参数值的类型,mybatis会自动进行java类型和jdbc类型的转换。#{}可以接收简单类型值或pojo属性值,如果传入简单类型值,#{}括号中可以是任意名称。<!--根据名称模糊查询用户信息--><selectid="findUserById"parameterType="String"resultType="user">select*fromuserwhereusernamelikeCONCAT(CONCAT('%',#{name}),'%')</select>${}可以将para...
有时候为了简化我们的代码。1举个例子Student类:@DatapublicclassStudent{privateIntegerid;privateIntegerage;privateIntegersno;}有时候我们想通过age这个属性获取Student对象有时候我们也想通过sno这个属性获取Student对象难道我们在DAO层写两个接口?比如这样子?StudentgetStudentByAge(Intage);StudentgetStudentBySno(Intsno);那么在mapper文件中要这样写?<selectid="getStudentByAge"parameterType=...
在Mybatis中mapper中booleanupdateRegisterCompanyFlag(@Param(value="companyId")StringcompanyId,@Param(value="flag")Stringflag);传入的flag类型为String,但在mapper.XML中进行判断是下意识地以为判断的值要加上引号<iftest="'4'==flag">,LAST_CHECK_TIME=sysdate</if>但是这样写,传入flag=“4”后,这个if语句一直不成立sql没有拼接。后来网上查了一番后将test中的4的引号去除才成功。<iftest=...
我的idea版本2017.3.4,低版本貌似不会加上这个配置,idea高版本会补充知识:Mybatis传多个参数的问题及MyBatis报错Parameter'0'notfound.Availableparametersare[arg1,arg0,param1问题对于使用Mybatis,传多个参数,我们可以使用对象封装外,还可以直接传递参数对象的封装,例如查询对象条件basequery对象<selectid="getProductByProductQuery"parameterType="com.niulande.product.query.BaseQuery"resultMap="Base...
插件的配置与使用在mybatis-config.xml配置文件中配置plugin结点,比如配置一个自定义的日志插件LogInterceptor和一个开源的分页插件PageInterceptor:<plugins><plugininterceptor="com.crx.plugindemo.LogInterceptor"></plugin><plugininterceptor="com.github.pagehelper.PageInterceptor"><propertyname="helperDialect"value="oracle"/></plugin></plugins>插件的工作原理借助责任链模式,定义一系列的过滤器...