前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简单的方法使用注解可以执行更清晰和类型安全的代码

简单的方法使用注解可以执行更清晰和类型安全的代码

原创
作者头像
用户7705674
修改2021-10-08 15:22:32
5960
修改2021-10-08 15:22:32
举报
文章被收录于专栏:css小迷妹css小迷妹
代码语言:javascript
复制
try {
  BlogMapper mapper = session.getMapper(BlogMapper.class);
  Blog blog = mapper.selectBlog(101);
} finally {
  session.close();
}

  可以看出:使用接口(基于注解),不但可以执行更清晰和类型安全的代码,而且还不用担心易错的字符串字面值以及强制类型转换。 其实可以结合使用,接口中:简单的方法使用注解,复杂的方法使用xml配置。毕竟,对于简单语句来说,注解使代码显得更加简洁,然而 Java 注解对于稍微复杂的语句就会力不从心并且会显得更加混乱 要求:

  1. mapper命名空间org.mybatis.example.BlogMapper应该对应类路径,即接口应该在org.mybatis.example.BlogMapper类路径下;
  2. 具有相同的文件名,比如BlogMapper.java的配置为BlogMapper.xml(** 看不清请Ctrl+鼠标滚轮放大页面 **);
  3. xml配置可以放在resources对应目录下,且路径也为org.mybatis.example.BlogMapper。   下面给出例子,但为NewsDAO的配置

  即上面的xml配置文件不变,删去注解@Select({"select * from Blog where id=#{id}"})

代码语言:javascript
复制
Blog selectBlog(int id);

1.3 作用域(Scope)和生命周期

对于依赖注入框架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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.3 作用域(Scope)和生命周期
    • 其他:
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档