首页 > 图灵资讯 > 技术篇>正文

MyBatis开发框架的四大核心

2023-04-13 16:33:55

  MyBatis 四大核心主要包括(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。

  MyBatis 作为互联网数据库映射工具行业“上古神器”,训有四大“神兽”,谓之:SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper。可以说,了解了这四个核心,就知道了 MyBatis 八 九。

  SqlSessionFactoryBuilder 从命名上可以看出,这是一个 Builder 用于创建模型 SqlSessionFactory 的类。SqlSessionFactoryBuilder 结构按配置进行 SqlSessionFactory。

  有两种配置方法

  1. XML 文件方式 XML 文件方法是一种常用的方法:String resource = "org/mybatis/example/mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

  mybatis-config.xml 是我们的配置文件:

  PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

  2. Java Config 这是第二种配置方法 Java 配置代码: DataSource dataSource = BlogDataSourceFactory.getBlogDataSource(); TransactionFactory transactionFactory = new JdbcTransactionFactory(); Environment environment = new Environment("development", transactionFactory, dataSource); Configuration configuration = new Configuration(environment); configuration.addMapper(BlogMapper.class); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

  Java Config 相比较 XML 就文件的方式而言,会有一些限制 制。比如配置文件修改后需要重新编译,注释方法没有 XML 配置项多等。因此,在大多数情况下,行业是选择 XML 文件的方式。但选择哪种方式取决于你自己团队的需要。例如,项目 SQL 句子不复杂,也不需要一些高级的 SQL 特性,那么 Java Config 它会更简洁一点;相反,你可以选择 XML 文件的方式。

  SqlSessionFactory SqlSessionFactory 顾名思义,用于生产 SqlSession 的工厂。

  通过以下方式获取 SqlSession 实例: SqlSession session = sqlSessionFactory.openSession();

  SqlSession SqlSession 包含了执行 SQL 所有方法。以下是示例: SqlSession session = sqlSessionFactory.openSession(); try { Blog blog = session.selectOne( "org.mybatis.example.BlogMapper.selectBlog", 101); } finally { session.close(); }

  当然,以下方法可以实现类型安全: SqlSession session = sqlSessionFactory.openSession(); try { BlogMapper mapper = session.getMapper(BlogMapper.class); Blog blog = mapper.selectBlog(101); } finally { session.close(); }

  Mapper Mapper 顾名思义,就是用来做的 Java 与 SQL 它们之间的映射。包括 Java 映射为 SQL 语句,以及 SQL 返回结果映射为 Java。

  例如,以下是一个常见的例子 Mapper 接口映射文件: select * from Blog where id = #{id} 其中 "org.mybatis.example.BlogMapper" 这是我们想要射击的接口,selectBlog 是BlogMaper上的方法。而这个 selectBlog 具体来说,它需要执行“select * from Blog where id = #{id}”这个 SQL 语句。

  这样,我们就可以通过了 Blog blog = session.selectOne( "org.mybatis.example.BlogMapper.selectBlog", 101);

  或者是 BlogMapper mapper = session.getMapper(BlogMapper.class); Blog blog = mapper.selectBlog(101);

  获得执行结果。

  当然,如果采用注释的方法,可以省去 XML 文件: public interface BlogMapper { @Select("SELECT * FROM blog WHERE id = #{id}") Blog selectBlog(int id); }

上一篇 Java基础面试题i = i++ 执行原理
下一篇 浅谈MySQL中SQL优化的常用方法

文章素材均来源于网络,如有侵权,请联系管理员删除。