创新互联MyBatis教程:MyBatis3XML映射文件-自动映射

正如你在前面一节看到的,在简单的场景下,Mybatis 可以为你自动映射查询结果。但如果遇到复杂的场景,你需要构建一个结果映射。 但是在本节中,你将看到,你可以混合使用这两种策略。让我们深入了解一下自动映射是怎样工作的。

创新互联是专业的绍兴网站建设公司,绍兴接单;提供网站制作、成都做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行绍兴网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

当自动映射查询结果时,MyBatis 会获取结果中返回的列名并在 ​Java ​类中查找相同名字的属性(忽略大小写)。 这意味着如果发现了 ID 列和 id 属性,MyBatis 会将列 ID 的值赋给 id 属性。

通常数据库列使用大写字母组成的单词命名,单词间用下划线分隔;而 ​Java ​属性一般遵循驼峰命名法约定。为了在这两种命名方式之间启用自动映射,需要将 ​mapUnderscoreToCamelCase ​设置为 ​true​。

甚至在提供了结果映射后,自动映射也能工作。在这种情况下,对于每一个结果映射,在 ​ResultSet ​出现的列,如果没有设置手动映射,将被自动映射。在自动映射处理完毕后,再处理手动映射。 在下面的例子中,​id ​和 ​userName ​列将被自动映射,​hashed_password ​列将根据配置进行映射。


  

有三种自动映射等级:

  • NONE ​- 禁用自动映射。仅对手动映射的属性进行映射。
  • PARTIAL ​- 对除在内部定义了嵌套结果映射(也就是连接的属性)以外的属性进行映射
  • FULL ​- 自动映射所有属性。

默认值是 ​PARTIAL​,这是有原因的。当对连接查询的结果使用 ​FULL ​时,连接查询会在同一行中获取多个不同实体的数据,因此可能导致非预期的映射。 下面的例子将展示这种风险:


  



  

在该结果映射中,Blog 和 Author 均将被自动映射。但是注意 Author 有一个 id 属性,在 ​ResultSet ​中也有一个名为 id 的列,所以 Author 的 id 将填入 Blog 的 id,这可不是你期望的行为。 所以,要谨慎使用 FULL。

无论设置的自动映射等级是哪种,你都可以通过在结果映射上设置 ​autoMapping ​属性来为指定的结果映射设置启用/禁用自动映射。


  

网站标题:创新互联MyBatis教程:MyBatis3XML映射文件-自动映射
文章网址:http://www.zyruijie.cn/qtweb/news0/8700.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联