`

MyBatis3 User Guide 第二部分

阅读更多

声明:文章内容只作为学习和交流使用,不得用于商业转载,如需使用,请通过站内短信与本人联系,获得许可。

 

探索SQL映射 (Exploring Mapped SQL Statements)

       此刻,你可能很想知道SqlSession或者映射类究竟执行了些什么操作。然而SQL映射(Mapped SQL Statements)是一个很大的话题,如果展开来谈,会占用很大篇幅,但为了能让你对所执行的内容有个整体的认识,下面给出几个例子。

      上面展示的任何一个例子,都可以通过XML或注解二者中的任何一种语法来定义。让我们先来看下XML方式的定义。MyBatis提供的全部特性都可以通过基于XML的映射来实现,这也正是这些年来MyBatis如此受欢迎的原因。如果你之前使用过MyBatis,它的概念对你来说并不陌生,但在XML映射文件上做了大量改进,以便以后的使用上更加清晰。这个例子是一个基于XML的映射,可以适用于上面SqlSession的调用过程。

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

      对这个简单的例子来说,看起来好像有点杀鸡用牛刀了,但实际上它非常轻巧。在一个XML映射文件中,你可以定义任意多的映射语句,可以对得起你定义一个XML头和DOCTYPE 声明付出的辛劳,呵呵。该文件的剩余部分几乎不用过多的解释就可以看明白。给这个映射起了个名字“selectBlog”,而命名空间“org.mybatis.example.BlogMapper”则允许你用全限定的名字来调用它“org.mybatis.example.BlogMapper.selectBlog”。下面看到的这个例子,就和我们上面做的一样:

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

       注意看,这种调用和我们调用一个全限定的类上的方法何其的相似,这其中肯定有原因的。这个名字可以直接映射到和命名空间名字相同的一个类上,它可以匹配方法名,参数,它的返回值就是这个映射的select语句的返回值。因此你可以用一种非常简单的方式,就像你上面看到的那样来调用你所映射的这个类上的方法,但是这里再次出现在下面的示例当中:

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

        第二种方式有许多优势,首先,它不再依赖于一个字符串常量,因此更加安全;其次,如果你的IDE有代码自动完成功能的话,你可以利用它在那些已经映射了的SQL语句之间进行方便的导航;第三,你无须对返回值进行强制转换,因为BlogMapper接口有清晰的、类型安全的返回值(和类型安全的参数)。

 

关于命名空间(Namespaces)的说明

→命名空间(Namespaces) 在MyBatis之前的版本中,命名空间是可选的,也因此造成了很多的混乱和无助。在现在这版中,命名空间是必须的,而且它的用途不再仅仅是用较长的,全限定的名称来完成简单的隔离。正如你所看到的,命名空间可以用来进行接口绑定(interface bindings),即便你认为你现在还用不上它,但你也必须要遵守这些实践,以免你后来改变主意。一但你使用了命名空间,并且将其置于一个合适的java包命名空间中,将会使你的代码非常干净,并且从长远来看,将会大大提高MyBatis的可用性。                                                                                                     

→命名策略(Name Resolution)  为了减少打字数量,MyBatis采用下面的命名规则来命名所有的配置元素,包括语句(statements)、结果映射(result maps)、缓存(caches)等等。

  • 全限定名(Fully qualified names )可以直接进行查询和使用,比如:“com.mypackage.MyMapper.selectAllThings”,
  • 短名字,比如:“selectAllThings”,可以用来引用名字唯一的对象。然而如果该名字有两个,比如:“com.foo.selectAllThings 和“com.bar.selectAllThings”,那么你就会收到一个错误报告,表名该名字语意不清,因此必须要使用全限定的名称。

         还有一种映射BlogMapper类的窍门。那些Sql语句根本不需要通过XML来进行映射,而可以直接通过Java的注解(Java Annotations)来实现。例如,上面的那些XML可以完全用下面的写法代替:

package org.mybatis.example; 
public interface BlogMapper { 
  @Select("SELECT * FROM blog WHERE id = #{id}") 
  Blog selectBlog(int id); 
}

          对于简单的Sql来说,用注解要清晰的多,然而,对于复杂的语句,注解就会显得既混乱,又不灵活。所以如果你想做一些复杂的事,你最好还是用XML来做映射。

         使用哪种方式取决于你和你的项目组认为哪种更适合于你们,以及用一种统一的方式来定义语句对你们来说有多么重要。也就是说你们没有必要死守一种方式,你们可以非常简单的从注解映射的方式迁移到XML映射的方式,反之亦然。

1
0
分享到:
评论

相关推荐

    MyBatis 3 User Guide Simplified Chinese

    2. **MyBatis 3 User Guide Simplified Chinese** 这份PDF文档是MyBatis 3的简体中文用户指南,涵盖了MyBatis的核心概念、配置、映射文件、API使用方法等。通过阅读,你可以了解如何创建SqlSessionFactory、...

    MyBatis 3 User Guide Simplified Chinese.pdf

    MyBatis 3 User Guide Simplified Chinese.pdf MyBatis 3 User Guide Simplified Chinese.pdf

    mybatis-3-user-guide

    - plugins:允许第三方插件扩展MyBatis。 - environments:配置MyBatis使用一个或多个数据源和事务管理器。 - transactionManager:管理所有事务的规则。 - dataSource:定义数据库连接池。 - mappers:指定映射器...

    MyBatis3 User Guide

    MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and...

    MyBatis-3-User-Guide用户手册(中文英文)

    什么是 MyBatis?\ 5 入门\ 5 从 XML 中构建 SqlSessionFactory \ 5 不使用 XML 构建 SqlSessionFactory\ 6 从 SqlSessionFactory 中获取 SqlSession\ 6 探究已映射的 SQL语句 \ 7 命名空间的一点注释 \ 8 ...

    MyBatis 3 User Guide Simplified Chinese.rar

    MyBatis 3是中国用户友好版本的开源持久层框架,专为简化数据库操作而设计。这份用户指南将深入探讨MyBatis的核心概念、配置、映射文件以及如何在实际项目中有效利用它。 首先,MyBatis是一个轻量级的Java ORM...

    MyBatis-3 User-Guide

    XML映射文件是MyBatis的核心部分,它定义了SQL语句、输入参数和结果映射。以下是一些关键元素: - `properties`: 用于引入外部属性文件,如数据库连接信息。 - `settings`: 全局配置,如缓存、日志、延迟加载等。 - ...

    MyBatis-3-User-Guide.pdf

    MyBatis 是一个流行的 Java 持久层框架,它提供了...以上内容仅从提供的文档部分片段中提取,完整 MyBatis 用户指南会更详细地覆盖所有这些方面,并包含丰富的示例和最佳实践,帮助开发者更高效地使用 MyBatis 框架。

    Mybatis 3.2.8 user guide

    - **概述**:Mapper XML 文件是MyBatis的核心组成部分之一,用于定义SQL语句和结果映射规则。 - **命名空间**:每个Mapper XML文件都有一个唯一的命名空间,通常与对应的接口全限定类名一致。 - **SQL语句标签**:如...

    MyBatis-3-User-Guide-Simplified-Chinese.rar

    MyBatis 是一款深受开发者喜爱...通过阅读《MyBatis-3-User-Guide-Simplified-Chinese》这份文档,开发者可以系统地了解MyBatis的各个部分,掌握如何有效地使用MyBatis来处理数据库操作,从而提升开发效率和代码质量。

    spring mybatis shiro 共6天 8部分 第2部分

    spring mybatis shiro 共6天 8部分 第2部分 spring mybatis shiro 共6天 8部分 第2部分

    MyBatis User Guide.rar

    MyBatis 3 - User Guide 5 November 2010 4 resultMap ........ 28 Advanced Result Mapping ......... 30 id, result ...... 32 Supported JDBC Types 33 constructor .. 33 association .. 34 collection...

    MyBatis3中文文档

    MyBatis 3 User Guide Simplified Chinese.

    MyBatis_3_User_Guide.zip_mybatis_mybatis api

    这份"MyBatis_3_User_Guide.zip"压缩包内包含的"MyBatis_3_User_Guide.pdf"文档,是MyBatis 3的用户指南,它全面解析了MyBatis框架的核心功能和使用方法。以下是一些主要知识点的详细说明: 1. **配置文件**:...

    MyBatis3_用户指南--MyBatis-3-User-Guide-zh_CN.pdf

    MyBatis3_用户指南--MyBatis-3-User-Guide-zh_CN.pdf 非常实用

    MyBatis-3-User-Guide

    ### MyBatis-3-User-Guide 知识点概览 #### 一、MyBatis简介 在《MyBatis-3-User-Guide》文档中,首先介绍了MyBatis的基本概念及其重要性。MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射...

    MyBatis 3 用户指南中文英文

    通过阅读"MyBatis 3 User Guide Simplified Chinese.pdf"和"MyBatis-3.0.3-User-Guide.pdf"这两份文档,开发者可以深入了解MyBatis 3的各个功能和最佳实践,从而更高效地进行数据库操作。这份指南覆盖了从基础概念到...

Global site tag (gtag.js) - Google Analytics