作者:empty 页数:102 出版社:empty |
什么是MyBatis?MyBatis是支持普通SQL查询, 存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果的检索。MyBatis使用简单的XML或注解用于配置和原始映射, 将接和Java的POJOs(Plain Old Java Objects, 普通的Java对象) 映射成数据库中的记录
如果你发现了本文档的遗漏之处, 或者丢失MyBatis特性的说明时, 那么最好的方法就是了解一下这个遗漏之处然后把它记录下来.
这里你也许想知道通过Sql Session和Mapper对象到底执行了什么操作。已映射的SQL语句是一个很大的主题, 而且这个主题会贯穿本文档的大部分内容。为了给出一个宏观的概念, 这里有一些示例。上面提到的任何一个示例, 语句是通过XML或注解定义的。我们先来看看XML, 使用基于XML的映射语言, 在过去的几年中使得MyBatis非常流行, 他为MyBatis提供所有的特性设置。如果你以前用过MyBatis, 这个概念应该很熟悉了, 但是XML映射文件也有很多的改进, 后面我们会详细来说, 这里给出一个基于XML映射语句的示例, 这些语句应该可以满足上述示例中Sql Session对象的调用
这个简单的例子中看起来有很多额外的东西,但是也相当简洁了。你可以在一个单独的XML映射文件中定义很多的映射语句, 除XML头部和文档类型声明之外, 你可以得到很多方便之处,在文件的剩余部分是很好的自我解释,在命名空间“com.MyBatis.example.Blog Mapper 中, 它定义了一个名为 select Blog 的映射语句, 这样它允许你使用完全限定名Torg.MyBatis.example.Blog Mapper, select Blog”来调用映射语句,我们下面示例中所有的写法也是这样的。Blog blog=(Blog) session.select One C org.MyBatis.example.Blog M upperselect Blog, 101) ;要注意这个使用完全限定名调用Java对象的方法是相似的, 这样做是有原因的。这个命名可以直接给相同命名空间下的的映射类,使用一个名称,参数和返回值和已映射的查询语句都一样的方法即可。这就允许你非常容易地调用映射器接中的方法,这和你前面看到的是一样的,下面这个示例中它又出现了。BLog Mapper napper-session.get Mapper(Blog Mapper, cLass) ;R1ogb1og=mapper.select Blog(101) ;第二种方式有很多有点, 首先它不是基于文字的, 那就更安全了。第二, 如果你的IDE有代码补全功能.那么你可以利用它来操纵已映射的SQL语句。第三, 不需要强制类型转换,同时Blog Mapper接可以保持简洁, 返回值类型很安全(参数类型也很安全) 。置命名空间的一点注释命名空间在之前版本的MyBatis中是可选项, 非常混乱也没有帮助。现在, 命名空间是必须的,而且有一个目的,它使用更长的完全限定名来隔离语句。命名空间使得接绑定成为可能,就像你看到的那样,如果之前不了解,那么现在你就会使用它们了,你应该按照下面给出示例的来练习,以免改变自己的想法。使用命名空间,并将它放在合适的Java包空间之下, 将会使你的代码变得简洁, 在很长的时间内提高MyBatis的作用。命名解析:为了减少输入量, MyBatis对所有的命名配置元素使用如下的命名解析规则,包括语句,结果映射,缓存等。直接查找完全限定名(比如*com.my package.My Mapper select All Things , 如果) 发现短名称(比如“select All Things) 可以用来引用任意含糊的对象。而如果有两个或两个就使用。以上的(比如*com.foo.select All Things“和 com.bar.select All Things ) , 那么就会得到错误报告,说短名称是含的,因此就必须使用完全限定名。如Blog Mapper这样的映射器类来说, 还有一个妙招。它们中间映射的语句可以不需要在XML中来写, 而可以使用Java注解来替换。