try {
BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);
} finally {
session.close();
}
可以看出:使用接口(基于注解),不但可以执行更清晰和类型安全的代码,而且还不用担心易错的字符串字面值以及强制类型转换。 其实可以结合使用,接口中:简单的方法使用注解,复杂的方法使用xml配置。毕竟,对于简单语句来说,注解使代码显得更加简洁,然而 Java 注解对于稍微复杂的语句就会力不从心并且会显得更加混乱 要求:
Ctrl+鼠标滚轮
放大页面 **); 即上面的xml配置文件不变,删去注解@Select({"select * from Blog where id=#{id}"})
:
Blog selectBlog(int id);
对于依赖注入框架Spring 依赖注入框架可以创建线程安全的、基于事务的 SqlSession 和映射器(mapper)并将它们直接注入到你的 bean 中,因此可以直接忽略它们的生命周期。如果对如何通过依赖注入框架来使用 MyBatis 感兴趣可以研究一下 MyBatis-Spring 或 MyBatis-Guice 两个子项目。
SqlSessionFactoryBuilder:一旦创建了 SqlSessionFactory,就不再需要它了。因此 SqlSessionFactoryBuilder 实例的最佳作用域是方法作用域(也就是局部方法变量)。
SqlSessionFactory:一旦被创建就应该在应用的运行期间一直存在,因此 SqlSessionFactory 的最佳作用域是应用作用域
SqlSession:每个线程都应该有它自己的 SqlSession 实例。所以它的最佳的作用域是请求或方法作用域。每次收到的 HTTP 请求,就可以打开一个 SqlSession,返回一个响应,就关闭它。你应该把这个关闭操作放到 finally 块中以确保每次都能执行关闭。
映射器实例(Mapper Instances):最好把映射器放在方法作用域(method scope)内。即上面的BlogMapper mapper = session.getMapper(BlogMapper.class);
。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。