这是mybatis系列第4篇。没看前文的倡议先去【Java冢狐】公众号中查看前文,不便了解和把握

别名

为什么须要应用别名?

在xml文件中有很多须要类残缺的类名的中央,非常的简短,为了加重咱们的工作量和复杂度mybatis反对咱们给某个类起一个别名,而后通过别名能够拜访到指定的类型。

别名的用法

应用别名之前须要先在mybatis中注册别名,而注册别名有3种形式。

形式1

应用typeAlias元素进行注册

如下:

<typeAliases>    <typeAlias type="残缺的类型名称" alias="别名" /></typeAliases>

typeAliases元素中能够蕴含多个typeAlias子元素,每个typeAlias能够给一个类型注册别名,有2个属性须要指定:

  • type:残缺的类型名称
  • alias:别名

形式2

通过packege元素批量注册

下面咱们通过typeAlias元素能够注册一个别名,如果咱们有很多类须要注册,须要写很多typeAlias配置。

mybatis为咱们提供了批量注册别名的形式,通过package元素,如下:

<typeAliases>    <package name="须要扫描的包"/></typeAliases>

这个也是在typeAliases元素上面,不过这次应用的是package元素,package有个name属性,能够指定一个包名,mybatis会加载这个包以及子包中所有的类型,给这些类型都注册别名,别名名称默认会采纳类名小写的形式,如UserModel的别名为usermodel

形式3

package联合@Alias批量注册并指定别名

形式2中通过package能够批量注册别名,然而容易呈现多个类名雷同的类。

所以在package形式批量注册别名的时候,咱们能够给类中增加一个@Alias注解来给这个类指定别名:

@Alias("user")public class UserModel {}

当mybatis扫描类的时候,发现类上有Alias注解,会取这个注解的value作为别名,如果没有这个注解,会将类名小写作为别名,如同形式2。

别名不辨别大小写

mybatis默认为很多类型提供了别名

别名的原理

mybatis容许咱们给某种类型注册一个别名,别名和类型之间会建设映射关系,这个映射关系存储在一个map对象中,key为别名的名称,value为具体的类型,当咱们通过一个名称拜访某种类型的时候,mybatis依据类型的名称,先在别名和类型映射的map中依照key进行查找,如果找到了间接返回对应的类型,如果没找到,会将这个名称当做残缺的类名去解析成Class对象,如果这2步解析都无奈辨认这种类型,就会报错。

别名应用倡议

别名的形式能够简化类型的写法,本来很长一串的UserModel对象,当初只用写个user就行了,用起来非常的不便和简洁。然而从保护下面来讲,不是很不便。

所以倡议自定义的类尽量别应用别名,而对mybatis中内置的一些别名咱们须要晓得。

属性配置文件详解

连贯数据库的配置,咱们是间接写在mybatis全局配置文件中的,然而上线当前可能须要进行一些改变切换数据库,并不是非常的优化,所以咱们通常将一些须要运培修改的配置信息(如:db配置、邮件配置、redis配置等等各种配置)放在一个properties配文件中,而后上线时,只须要运维去批改这个配置文件就能够了,基本不必他们去批改和代码相干的文件。

mybatis也反对咱们通过内部properties文件来配置一些属性信息。

mybatis配置属性信息有3种形式。

形式1:property元素中定义属性

属性定义

mybatis全局配置文件中通过properties元素来定义属性信息,如下:

<configuration>    <properties>        <property name="属性名称" value="属性对应的值"/>    </properties></configuration>

下面通过property元素的形式进行配置属性信息:

  • name:属性的名称
  • value:属性的值。

如:

<property name="jdbc.driver" value="com.mysql.jdbc.Driver"/>
应用${属性名称}援用属性的值

属性曾经定义好了,咱们能够通过${属性名称}援用定义好的属性的值,如:

<property name="driver" value="${jdbc.driver}"/>

形式2:resource引入配置文件

形式1中,咱们的配置文件还是写在全局配置文件中,mybatis反对从内部引入配置文件,能够把配置文件写在其余内部文件中,而后进行引入。

引入classes门路中的配置文件
<configuration>    <properties resource="配置文件门路"/></configuration>

properties元素有个resource属性,值为配置文件绝对于classes的门路,配置文件咱们个别放在src/main/resource目录,这个目录的文件编译之后会放在classes门路中。

形式3:url的形式引入近程配置文件

mybatis还提供了引入近程配置文件的形式,如下:

<properties url="近程配置文件的门路" />

这次还是应用properties元素,不过应用的是url属性,如:

<properties url="http://itsoku.com/properties/config.properties" />

属性配置文件应用倡议

下面咱们说了3中形式,第2中形式是比拟常见的做法,倡议大家能够应用第二种形式来引入内部资源配置文件。

如果3种形式如果咱们都写了,mybatis会怎么走?

  • 形式1和形式2都存在的时候,形式2的配置会笼罩形式1的配置。
  • 如果形式2和形式3都存在的时候,形式3会生效

mybatis会先读取形式1的配置,而后读取形式2或者形式3的配置,会将1中雷同的配置给笼罩。

mybatis中引入mapper的3种形式

mapper xml文件是十分重要的,咱们写的sql基本上都在外面,应用mybatis开发我的项目的时候,和mybatis相干的大部分代码就是写sql,基本上都是和mapper xml打交道。

编写好的mapper xml须要让mybatis晓得,咱们怎么让mybatis晓得呢?

能够通过mybatis全局配置文件进行引入,次要有3种形式。

形式1:应用mapper resouce属性注册mapper xml文件

目前咱们所波及到的各种例子都是采纳的这种形式,应用上面的办法进行引入:

<mappers>    <mapper resource="Mapper xml的门路(绝对于classes的门路)"/></mappers>

注意事项

  • 个别状况下,咱们会创立一个和Mapper xml中namespace同名的Mapper接口,Mapper接口会和Mapper xml文件进行绑定
  • mybatis加载mapper xml的时候,会去查找namespace对应的Mapper接口,而后进行注册,咱们能够通过Mapper接口的形式去拜访Mapper xml中的具体操作
  • Mapper xml和Mapper 接口配合的形式是比拟常见的做法,也是强烈建议大家应用的

形式2:应用mapper class属性注册Mapper接口

引入Mapper接口

mybatis全局配置文件中引入mapper接口,如下:

<mappers>        <mapper class="接口的残缺类名" /></mappers>

这种状况下,mybais会去加载class对应的接口,而后还会去加载和这个接口同一个目录的同名的xml文件。

如:

<mappers>        <mapper class="zhonghu.chat01.demo1.UserMapper" /></mappers>

下面这种写法,mybatis会主动去注册UserMapper接口,还会去查找上面的文件:

zhonghu.chat01.demo1.UserMapper.xml

大家当前开发我的项目的时候预计也会看到这种写法,Mapper接口和Mapper xml文件放在同一个包中。

形式3:应用package元素批量注册Mapper接口

批量注册Mapper接口

下面说2种形式都是一个个注册mapper的,如果咱们写了很多mapper,是否可能批量注册呢?

mybatis提供了扫描包批量注册的形式,须要在mybatis全局配置文件中退出上面配置:

<mappers>    <package name="须要扫描的包" /></mappers>

mybatis会扫描package元素中name属性指定的包及子包中的所有接口,将其当做Mapper 接口进行注册,所以个别咱们会创立一个mapper包,外面放Mapper接口和同名的Mapper xml文件。

应用留神

形式3会扫描指定包中所有的接口,把这些接口作为Mapper接口进行注册,扫描到的类型只有是接口就会被注册,所以指定的包中通常咱们只放Mapper接口,防止寄存一些不相干的类或者接口。

对于配置和源码

本次解说到的一些配置都是在mybatis全局配置文件中进行配置的,这些元素配置是有先后顺序的,具体元素是在上面的dtd文件中定义的:

http://mybatis.org/dtd/mybatis-3-config.dtd

倡议大家去看一下这个dtd配置文件。

总结

  1. 把握别名注册的3种形式,倡议大家尽量少应用自定义别名
  2. 把握属性配置3种形式
  3. 把握mapper注册的3种形式及须要留神的中央

最初

  • 如果感觉看完有播种,心愿能关注一下,顺便给我点个赞,这将会是我更新的最大能源,感激各位的反对
  • 欢送各位关注我的公众号【java冢狐】,专一于java和计算机基础知识,保障让你看完有所播种,不信你打我
  • 求一键三连:点赞、转发、在看。
  • 如果看完有不同的意见或者倡议,欢送多多评论一起交换。感激各位的反对以及厚爱。

——我是冢狐,和你一样酷爱编程。

欢送关注公众号“ Java冢狐”,获取最新消息