栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mybatis详细教程(mybatis入门菜鸟教程)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mybatis详细教程(mybatis入门菜鸟教程)

入门-基础使用 安装

要使用 MyBatis, 只需将mybatis-x.x.x.jar文件置于类路径(classpath)中即可。

如果使用 Maven来构建项目,则需将下面的依赖代码置于pom.xml文件中:


  org.mybatis
  mybatis
  x.x.x


把相应的字段复制进项目的pom.xml文件等待maven自动下载即可。

从 XML 中构建 SqlSessionFactory

每个基于MyBatis的应用都是以一个SqlSessionFactory的实例为核心的。SqlSessionFactory 的实例可以通过SqlSessionFactoryBuilder获得。而 SqlSessionFactoryBuilder则可以从 XML 配置文件或一个预先配置的Configuration 实例来构建出 SqlSessionFactory 实例。

从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。 但也可以使用任意的输入流(InputStream)实例,比如用文件路径字符串或file:// URL 构造的输入流。MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,使得从类路径或其它位置加载资源文件更加容易。

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

tips:这里的Resource传入的是路径,不是现在的包名。




  
    
      
      
        
        
        
        
      
    
  
  
    
  


这里面的参数我们在后面会详细的说明,这里简单的说明一下,Configuration之间的配置文件的主体,我们在这个里面可以设置很多标签。现在只有environments标签和mappers标签。

environments标签指的是我们mybatis运行的环境,我们可以配置多个环境,但是mybatis在启动后只能使用其中的一个环境.environment 元素体中包含了事务管理和连接池的配置。

mapper是Mapper.xml对应的路径。我们在写完第一个Mapper后学会配置。包含了一组映射器(mapper),这些映射器的XML映射文件包含了 SQL 代码和映射定义信息。

当然,还有很多可以在XML 文件中配置的选项,上面的示例仅罗列了最关键的部分。

注意 XML 头部的声明,它用来验证XML文档的正确性

(略-非主线)不使用 XML 构建 SqlSessionFactory

如果你更愿意直接从 Java 代码而不是 XML 文件中创建配置,或者想要创建你自己的配置建造器,MyBatis 也提供了完整的配置类,提供了所有与 XML 文件等价的配置项。

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);

注意该例中,configuration 添加了一个映射器类(mapper class)。映射器类是 Java 类,它们包含 SQL映射注解从而避免依赖 XML文件。不过,由于Java注解的一些限制以及某些 MyBatis 映射的复杂性,要使用大多数高级映射(比如:嵌套联合映射),仍然需要使用XML 配置。有鉴于此,如果存在一个同名 XML 配置文件,MyBatis会自动查找并加载它(在这个例子中,基于类路径和BlogMapper.class的类名,会加载 BlogMapper.xml)。具体细节稍后讨论。

从 SqlSessionFactory 中获取 SqlSession

既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。SqlSession 提供了在数据库执行SQL命令所需的所有方法。你可以通过SqlSession实例来直接执行已映射的SQL语句。例如:

try (SqlSession session = sqlSessionFactory.openSession()) {
  Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
}

诚然,这种方式能够正常工作,对使用旧版本 MyBatis 的用户来说也比较熟悉。但现在有了一种更简洁的方式——使用和指定语句的参数和返回值相匹配的接口(比如 BlogMapper.class),现在你的代码不仅更清晰,更加类型安全,还不用担心可能出错的字符串字面值以及强制类型转换。

例如:

try (SqlSession session = sqlSessionFactory.openSession()) {
  BlogMapper mapper = session.getMapper(BlogMapper.class);
  Blog blog = mapper.selectBlog(101);
}

现在我们来探究一下这段代码究竟做了些什么。

探究已映射的 SQL 语句

现在你可能很想知道 SqlSession和 Mapper到底具体执行了些什么操作,但 SQL语句映射是个相当广泛的话题,可能会占去文档的大部分篇幅。 但为了让你能够了解个大概,这里会给出几个例子。

在上面提到的例子中,一个语句既可以通过XML 定义,也可以通过注解定义。我们先看看XML 定义语句的方式,事实上MyBatis提供的所有特性都可以利用基于 XML 的映射语言来实现,这使得 MyBatis在过去的数年间得以流行。

如果你用过旧版本的 MyBatis,你应该对这个概念比较熟悉。 但相比于之前的版本,新版本改进了许多 XML的配置,后面我们会提到这些改进。这里给出一个基于XML映射语句的示例,它应该可以满足上个示例中SqlSession 的调用。