• MyBatis重要核心概念


    一、SqlSessionFactoryBuilder

      从命名上可以看出,这个是一个 Builder 模式的,用于创建 SqlSessionFactory 的类。SqlSessionFactoryBuilder 根据配置来构造 SqlSessionFactory。其中配置方式有两种:

    1.1、XML 文件方式

      XML 文件方式是作为常用的一种方式:

    1 String resource = "org/mybatis/example/mybatis-config.xml";
    2 
    3 InputStream inputStream = Resources.getResourceAsStream(resource);
    4 
    5 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

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

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE configuration
     3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     4 "http://mybatis.org/dtd/mybatis-3-config.dtd">
     5 <configuration>
     6     <environments default="development">
     7         <environment id="development">
     8         <transactionManager type="JDBC"/>
     9         <dataSource type="POOLED">
    10             <property name="driver" value="${driver}"/>
    11             <property name="url" value="${url}"/>
    12             <property name="username" value="${username}"/>
    13             <property name="password" value="${password}"/>
    14         </dataSource>
    15         </environment>
    16     </environments>
    17     <mappers>
    18     <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    19     </mappers>
    20 </configuration>

    1.2、Java Config

      这是第二种配置方式,通过 Java 代码来配置:

     1 DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();
     2 
     3 TransactionFactory transactionFactory = new JdbcTransactionFactory();
     4 
     5 Environment environment = new Environment("development", transactionFactory, dataSource);
     6 
     7 Configuration configuration = new Configuration(environment);
     8 configuration.addMapper(BlogMapper.class);
     9 
    10 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

      Java Config 相比较 XML 文件的方式而言,会有一些限制。比如修改了配置文件需要重新编译,注解方式没有 XML 配置项多等。所以,业界大多数情况下是选择 XML 文件的方式。但到底选择哪种方式,这个要取决与自己团队的需要。比如,项目的 SQL 语句不复杂,也不需要一些高级的 SQL 特性,那么 Java Config 则会更加简洁一点;反之,则可以选择 XML 文件的方式。

    二、SqlSessionFactory

      SqlSessionFactory 顾名思义,是用于生产 SqlSession 的工厂。  通过如下的方式来获取 SqlSession 实例:

    1 SqlSession session = sqlSessionFactory.openSession();

    三、SqlSession

      SqlSession 包含了执行 SQL 的所有的方法。以下是示例:

    1 SqlSession session = sqlSessionFactory.openSession();
    2 try {
    3 Blog blog = session.selectOne(
    4 "org.mybatis.example.BlogMapper.selectBlog", 101);
    5 } finally {
    6 session.close();
    7 }

      当然,下面的方式可以做到类型安全:

    1 SqlSession session = sqlSessionFactory.openSession();
    2 try {
    3 BlogMapper mapper = session.getMapper(BlogMapper.class);
    4 Blog blog = mapper.selectBlog(101);
    5 } finally {
    6 session.close();
    7 }

    四、Mapper

      Mapper 顾名思义,是用做 Java 与 SQL 之间的映射的。包括了 Java 映射为 SQL 语句,以及 SQL 返回结果映射为 Java。比如,下面是一个常见的 Mapper 接口映射文件:

    1 <?xml version="1.0" encoding="UTF-8" ?>
    2 <!DOCTYPE mapper
    3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    5 <mapper namespace="org.mybatis.example.BlogMapper">
    6 <select id="selectBlog" resultType="Blog">
    7 select * from Blog where id = #{id}
    8 </select>
    9 </mapper>

      其中 “org.mybatis.example.BlogMapper” 就是我们要射射的接口,selectBlog 就是BlogMapper上的方法。而这个 selectBlog 具体就是要执行“select * from Blog where id = #{id}”这个 SQL 语句。  这样,我们就能通过

    1 Blog blog = session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);

      或者是

    1 BlogMapper mapper = session.getMapper(BlogMapper.class);
    2 Blog blog = mapper.selectBlog(101);

      来获取到执行的结果。当然,如果是采用注解的方式的话,可以省去 XML 文件:

    1 public interface BlogMapper {
    2 @Select("SELECT * FROM blog WHERE id = #{id}")
    3 Blog selectBlog(int id);
    4 }

      但是,我们推荐使用sql映射文件的方式来写sql语句,而不要把sql语句写在注解中。

  • 相关阅读:
    ADB——模拟手机按键输入
    ADB——连接手机的三种方式
    ADB——命令大全
    react-native 入门教程
    react-native-vector-icons 安装
    nginx静态资源缓存与压缩
    ReactNative开发工具有这一篇足矣
    Centos7源代码安装freeswitch和启动freeswitch
    windows 64位下,React-Native环境搭建详解 (Android)
    网站启用SSL后重启Nginx提示 Enter PEM Pass Phrase:需要输入密码
  • 原文地址:https://www.cnblogs.com/baichunyu/p/11208619.html
Copyright © 2020-2023  润新知