Skip to content
Nico edited this page Oct 12, 2018 · 2 revisions

Ourbatis的工作原理是用实体类去映射表字段作为模板渲染的基础元数据:

ourbatis mapping

另一个角度可以将这个过程看成元数据的加工流水线,在这个流水线中还有两个重要的角色在工作:注解Wrapper(包装器),他们会辅助加工。Mapping加工对象是Class<? extends Object> Domain类以及一个String类型的字段mapperLocations Mapper接口所在包名,每次映射都将会产生一个Table对象,它包含着相关的元数据:

字段名 类型 含义
tableName String 表名
allColumns List 表所有字段结合
normalColumns List 表普通字段集合
primaryColumns List 表主键字段集合
domainClassName String 类全名
domainSimpleClassName String 类名
mapperClassName String Mapper接口类名

这些元数据可以在ourbatis.xml中作为渲染的参数,之后将会着重讲解。

在Mapping加工的过程中,我们的传入Class的ClassName及FieldName将分别映射为表名和表字段名,当然,这种过程并不是写死的,我们可以通过注解和Wrapper包装器去修改它,这将会为我们的加工过程带来足够的灵活性,例如:

  • 自定义表名
  • 自定义表字段名
  • 自定义Mapper接口包名
  • 自定义转义(也可以在模板中实现)

无论是注解还是Wrapper,最终的目的都是为元数据提供一个外界控制入口,当我们需要根据应用场景去自定义Mapper映射时,注解和Wrapper配置将会变得非常有用!下一节将会逐一介绍他们!

值得一提的是,元数据中有一个数据非常特殊:mapperClassName Mapper接口类名,明确来说它并不属于Domain的范畴,但是Ourbatis是通过Domain的类名及mapperLocations配合注解和Wrapper去装配Mapper接口类名。

Clone this wiki locally