标签:微信公众号 inter 别名 reac 注解 接口 img 转换 标签
@Param
注解标注在sql中的变量名。严格来说,select及下面的insert这些都有一个id,这些id形成JavaMapper中对应的方法。mybatis也是通过id来定位到要执行的sql的。我们通过parameterType、resultType定义入参和出参的类型。Type也可以事先定义为对应的Map 即 parameterMap、resultMap。 在select标签中还有一个flushCache用来表示是否清楚缓存在查询。因为mybatis默认对SESSION级别开启一级缓存。还有之前提到的fetchSize获取记录的条数。常见的就这些属性。还有其他属性感兴趣的可以深入
在入参出参的时候我们可以使用别名来制定类型。这就是别名带来的好处。不需要写一大长串的包名类名。
在第一张我们就提到mybatis和Hibernate的区别是前者是半自动后者是全自动。半自动映射是因为mybatis在列明和属性名相同的时候自动映射,剩下的就需要我们sql别名了。mybatis还提供一种列名转驼峰映射的方式也是经常使用的。
select中经常会用到resultMap, resultMap这个标签用途可以说是跟大。首先定义Javabean属性和数据库列的映射。映射包括一对一,一对多,还有根据情况选择器这三种特殊标签。初次之外在列与属性映射时候还可以指定TypeHandler来进行覆盖。有机会好好总结一下这个resultMap。
这些标签实际上和select标签一样。属性上也都是差不多。不同的是select有结果集。而这三个标签返回的就是记录数。并不注重他们的返回,更加注重的是他们的入参的执行。经常在他们里面会有foreach这些用来批量操作。
在新增的时候mybatis提供selectKey标签来实现主键自增长策略,也可以实现自定义主键增长策略。这里的增长并不是数字层面的增长,而是不同的意思。
在传参的方式有很多种,我们可以选择map ,也可以选择javabean,也可以多参传递。多参传递的时候我们需要添加@Param
注解标注属性名。根据实际情况自行选取哪种方式。
上面提到resultMap可以指定typeHandler,实际上在参数上我们也可以。#{name,javaType=double,jdvbType=NUMERIC,typeHandler=MyTypeHandler}
#{name} 这种方式mybatis会自动根据数据格式进行映射,但是当name为null,mybatis就无法映射,这个时候我们#{name,jdbcType=VARCHAR}。mybatis就会采用StringTypeHandler去解析
还有就是# ,$ 的区别。这里不多说,前者是占位,后者是拼接
```xml
```
## 级联
- 级联在我们平时开发中是最常见的。我们通过pojo接收返回结果的时候我们经常需要处理的就是级联的问题。在上面的resultMap中通过association、collection来负责一对一。一对多的处理。具体的级联在我之前的文章中都有的。大家可以关注我查看。
缓存是为了提高运行效率产生的一个功能。主要就是讲数据保存 在内存中。因为cpu读取内存是非常的快的。所以缓存能够提高我们的效率。之前我们已经提过了,mybatis为我们提供两种缓存。一级缓存和二级缓存。一级缓存默认是打开的。他的生命周期是SESSION。就是说在同一个sqlsession中相同的查询是经过缓存的。这个缓存如果没有在insert或者select其他标签内没有flush缓存的话,这个缓存在规定时间内就会一直存在。换句话说同样的sql将会一直查询缓存。上述情况仅仅是针对相同的sqlsession.
一级缓存针对sqlsession。有的时候我们需要讲mapper进行缓存。换句话说讲缓存放到sqlsessionfactory上。这时候我们引入了二级缓存的概念。mybatis默认是不开启二级缓存的。开启的方式也很简单
<cache/>
只需要在mybatis-config.xml中加入cache这个标签就可以了。当然我们如果是用pojo接收结果的。pojo需要进行序列化。
在二级缓存中我们所有的select都讲被缓存起来。在insert、update、delete执行的时候都将会刷新缓存的。下面给出一个全的cache配合。
<cache eviction="LRU" flushInterval="1000" size="1024" readOnly="true"/>
org.apache.ibatis.cache.Cache
接口。然后通过在mybatis-config.xml中引入我们的类就行了`<cache type="*******"/>`往往在select、insert、update、delete这些标签中和userCache、flushCache结合使用实现缓存的使用的sql
标签:微信公众号 inter 别名 reac 注解 接口 img 转换 标签
原文地址:https://www.cnblogs.com/zhangxinhua/p/11997434.html