延迟加载策略
比如在查询人的时候不要订单,不要查询订单信息,直到我需要订单数据的时候再去查询
需要mybatis设置懒加载和按需加载
文档描述
需要在 mybatis 整体的配置中加上 lazyLoadingEnabled 设置为 true
按需加载aggressiveLazyLoading设置为true
<settings>
<!---开启懒加载-->
<setting name="lazyLoadingEnabled" value="true"/>
<!--开启按需加载-->
<setting name="aggressiveLazyLoading" value="false"/>
</settings>
没有开启懒加载时,如下
开启之后
缓存机制
Mybatis默认的缓存模式是一级缓存
一级缓存:查询的结果保存在session中,如果session不关闭一直存在,若果关闭缓存消失
关闭session
二级缓存:session关闭以后结果仍然存在
开启二级缓存:
在全局配置中开启二级缓存
<!--开启二级缓存-->
<setting name="cacheEnabled" value="true"/>
在你需要使用缓存的mapper中加入
二级缓存有可能在修改之后获取之前的数据,脏数据
flushCache="true"刷新缓存区
useCache=“true” 使用缓存
逆向工程
在程序设计中我们需要从数据库中建立数据模型,并注明模型之间的关系,然后制作和模型对应的bean类并将表映射到类中,mybatis反向工程就是根据表关系,自动生成代码中的bean类和类的关系,进而简化开发。
在mybatis提供的逆向工程中配置好你要生成的数据库对应的表,如果有需要你可以修改生成文件的路径,这样后面复制粘贴到自己工程内的时候就不用修改了。
逆向工程会帮助你生成对应的实体类,接口,mapper文件,几乎可以实现直接上手就能操作自己的数据。
生成的 mapper 文件中提供的方法可以实现绝大部分操作,当需要个别定制的时候,还需要自己手动加入对应方法到接口层和mapper文件中
操作方式:
1.导入jar包genertor-core.jar
2.按照官网操作
http://www.mybatis.org/generator/running/runningWithJava.html
3.关键代码按官网操作 很简单
@Test
public void test2() throws IOException {
InputStream is=Resources.getResourceAsStream("mybatis-conf.xml");
SqlSessionFactory ssf=new SqlSessionFactoryBuilder().build(is);
SqlSession session = ssf.openSession();
PersonMapper mapper = session.getMapper(PersonMapper.class);
//删除
//mapper.deleteByPrimaryKey(8);
//查询
// Person person = mapper.selectByPrimaryKey(4);
// System.out.println(person);
//按条件查询
PersonExample example=new PersonExample();
PersonExample.Criteria criteria = example.createCriteria();
// criteria.andPnameEqualTo("admin");
criteria.andPidBetween(5,7);
List<Person> list = mapper.selectByExample(example);
System.out.println(list);
session.commit();
session.close();
}