查看DTD约束,直接在这里按住Ctrl然后按左键,就能够看到,如下图
重点在圈起来的部分,这个地方告诉我们书写的顺序是什么样的,必须按照这个顺序书写,拆分一下是什么意思
properties?, 配置属性
settings?, 全局配置:缓存,延迟加载
typeAliases?, 类型别名
typeHandlers?, 类型转换(操作)
objectFactory?, objectWrapperFactory?, reflectorFactory?, 不用管先,一般用不着
plugins?, 插件:分页插件
environments?, 环境配置(数据源)
databaseIdProvider?,
mappers? 引入映射配置文件
? : 一个或者零个
| : 任选其一
+ : 最少一个
* : 零个或多个
, : 必须按照此顺序编写
properties
首先是properties,这个的作用可以让你的配置文件更加清晰明了,别人在开发的时候就不用再去找environment里面的内容去修改数据库信息了
这个看起来是不是更加简洁一些,当然还能更简洁,在一般开发中,会将配置文件放到一个单独的文件当中,这样在后期开发的时候修改数据库,直接去properties文件修改,如下
先创建一个名为“jdbc.properties”的文件,里面用这种方式来写配置属性,然后xml文件当中,用resource来引入一下这个文件,就能读取到配置信息了,这种方式极大程度的简化了配置文件,更适合多人开发大项目的时候使用。
typeAliases(类型别名)
在XXXMapper.xml当中,如果我们默认不设置别名,在写返回值类型的时候,经常是需要些全限类名,这样就很麻烦。
这个地方声明别名之后,在我们的XXXMapper.xml之中就可以简化书写了。
这种方式有一个弊端,就是在有很多个pojo的时候需要一个一个引入,万一有几百多个不就疯了吗,我们可以直接映射包,会引入该包中所有的pojo类型
然后我们写类名的时候就直接写简单类名就可以了
并且不区分大小写,你写User|user|USer…都是可以的,查看mybatis底层源码可以发现,底层用了一个toLowerCase()的方法,将你的名称转换为小写,所以这里不区分大小写
继续查看源码会发现,底层已经帮我们把基本数据类型进行了封装,我们在书写基本类型的时候直接写就可以,不用再去写别名或者写全限类名
就像这个地方,直接写int就是可以的了,并且int和Integer都是对应的Integer类型,不区分大小写
mappers
两种引入方式,一种是引入xml文件,一种是引入XXXDao的java文件,后者有两个前提:
1、XXXDao和XXXMapper必须在同一个包中;
2、名称必须一致,也就是说XXXMapper需要改名为XXXDao,一个后缀名是xml,一个后缀名是java。
同样,如果有多个文件,可以直接引入包,同样需要满足以上两个点