MyBatis中 namespace 的作用
namespace 实现了面向接口编程,通过 namespace 指定的接口,MyBatis自动找到其需要执行的SQL语句
动态SQL
MyBatis通过ognl表达式,动态生成SQL语句,解决了jdbc开发中,根据条件拼接SQL容易出错的问题
一级缓存
其生命周期和SqlSession(每个线程都应该有它自己的SqlSession实例。SqlSession的实例不能共享使用,它也是线程不安全的。因此最佳的范围是请求或方法范围。绝对不能将SqlSession实例的引用放在一个类的静态字段或实例字段中)一致,每一个线程在操作数据库时,都需要一个SqlSession。
一级缓存最大范围是SqlSession内部,当有多个SqlSession或者分布式的环境下,可能会操作同一数据时,引起脏数据,建议是把一级缓存的默认级别设定为Statement,即不使用一级缓存;
二级缓存
默认关闭,mapper文件内,同一命名空间中的所有语句和缓存将通过命名空间绑定在一起。 每条语句可以自定义与缓存交互的方式,或将它们完全排除于缓存之外,这可以通过在每条语句上使用两个简单属性(flushCache ,useCache )来达成。
更多缓存设置的官方文档:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#cache