java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > MyBatis之自动映射与缓存

MyBatis之自动映射与缓存问题及解析

作者:ByteBlossom

文章主要介绍了MyBatis的配置与操作,包括自动映射(autoMappingBehavior)的设置(NONE、PARTIAL、FULL)、手动映射的步骤(使用<resultMap>标签)、SQL注入攻击的原理、缓存机制及其影响(一级缓存和二级缓存的作用、缓存失效的情况)

如何配置自动映射?

自动映射配置autoMappingBehavior包含三个值:

自动映射配置mybatis-config.xml

<settings>
<settingname="autoMappingBehavior"value="PARTIAL"/>
<settingname="mapUnderscoreToCamelCase"value="true"/>
</settings>

手动映射

手动映射操作步骤:

①使用<resultMap>标签配置映射关系

②将<select>标签中使用resultMap作为结果集类型

ID自动回填

useGeneratedKeys="true",keyProperty="id"指定主键赋值的字段名

接口定义用int类型接收

#和$区别及sql注入攻击

缓存机制。二级缓存怎么读取

二级缓存也叫做全局缓存,基于namespace级别的缓存。使用的是mapper的作用域,不同的sqlSession只要访问的同一个mapper.xml文件,则共享二级缓存作用域。范围是SqlSessionFactory。需要在全局配置文件中设置<settingname="cacheEnabled"value="true"/>,然后在具体的mapper.xml中添加<cache/>即可。

查询流程:查询时先到二级缓存查,如果没有再去一级localCache查,再没有则查询数据库,再放缓存一份,再返回客户端。下次再查询的时候直接从缓存返回,不再访问数据库,如果数据库中发生commit()操作,则清空缓存。

1、如果在mapper映射文件中的CRUD标签中加入flushCache="true",会导致一二级缓存机制都消失

2、也可以在测试类中直接手动清理缓存。

3、也可以在全局配置文件设置<settingsname="localCacheScope"value="STATEMENT"/>这样会使一级缓存失效,二级缓存不受影响。

源码

级联association&collection

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文