MyBatis日记(三):戏说MyBatis配置文件

properties标签

properties标签能够用来加载别的配置文件,好比能够加载数据库的配置文件,jdbc.properties。mysql

下面是jdbc.propertiessql

1 jdbc.driverClassName=com.mysql.jdbc.Driver 2 jdbc.url=jdbc:mysql://localhost:3306/db_mbre
3 jdbc.username=root 4 jdbc.password=123456

而后在全局的配置文件MyBatis-config.xml中引入该配置文件:数据库

 1 <properties resource="jdbc.properties" /> 缓存

引入之后就能够在全局配置文件中配置数据库时,使用这些信息了:mybatis

1 <dataSource type="POOLED">
2     <property name="driver" value="${jdbc.driverClassName}" />
3     <property name="url" value="${jdbc.url}" />
4     <property name="username" value="${jdbc.username}" />
5     <property name="password" value="${jdbc.password}" />
6 </dataSource>

加载properties的顺序:app

一、  先加载<properties>标签下的property标签,观察有没有对应的键值对dom

二、  而后在加载properties的resource属性指定的配置文件。ide

typeAlias标签

MyBatis默认支持的别名:测试

别名ui

映射的类型

_byte

byte

_long

long

_short

short

_int

int

_integer

int

_double

double

_float

float

_boolean

boolean

string

String

byte

Byte

long

Long

short

Short

int

Integer

integer

Integer

double

Double

float

Float

boolean

Boolean

date

Date

decimal

BigDecimal

bigdecimal

BigDecimal

自定义别名

MyBatis对于基本的数据类型定义了别名,咱们能够为咱们本身建立的pojo类定义别名,定义别名采用的是<typeAliases>标签:

1 <typeAliases>
2     <typeAlias alias="Student" type="com.Aiden.domain.Student" />
3 </typeAliases>

定义完别名之后,就能够在mapper文件中使用别名了:

批量定义别名,直接定义包名,包下面的类的别名默认为类名。首字母大小写便可。

Mapper标签

Mapper标签用于引入mapper配置文件:

<mapper resource=””> 使用相对于类路径的资源

<mapper url=””> 使用彻底限定路径

<mapper class=””> 使用mapper接口的全限定名(此方法要求mapper接口和mapper映射文件要名称相同,且放在同一个目录下面)

<package name=””> 注册指定包下的全部映射文件(此方法要求mapper接口和mapper映射文件要名称相同,且放在同一个目录下面)

environment标签

MyBatis能够配置多种环境。你如开发时的环境、测试时的环境。这样能够将SQL映射应用于多种数据库之中。(注:能够配置多种环境,但每一个数据库对应一个SQLSessionFactory,若是想链接两个数据库,则须要建立两个SqlSessionFactory实例,每一个数据库对应一个)。

为明确建立哪一种环境,能够将它做为可选的参数传递给SQLSessionFactoryBuilder。

可接受环境配置的两个方法签名是:

SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, environment);

SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader,environment,properties);

若是环境被忽略,那么默认环境将会被加载,按照以下方式进行:

SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader);

SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader,properties);

配置以下:

 1 <environments default="development">
 2         <environment id="development">
 3             <transactionManager type="JDBC" />
 4             <dataSource type="POOLED">
 5                 <property name="driver" value="${jdbc.driverClassName}" />
 6                 <property name="url" value="${jdbc.url}" />
 7                 <property name="username" value="${jdbc.username}" />
 8                 <property name="password" value="${jdbc.password}" />
 9             </dataSource>
10         </environment>
11         <environment id="test">
12             <transactionManager type="JDBC" />
13             <dataSource type="POOLED">
14                 <property name="driver" value="${jdbc.driverClassName}" />
15                 <property name="url" value="${jdbc.url}" />
16                 <property name="username" value="${jdbc.username}" />
17                 <property name="password" value="${jdbc.password}" />
18             </dataSource>
19         </environment>
20     </environments>

Settings

MyBatis全局配置参数,全局参数将会影响MyBatis的运行行为。好比:开启二级缓存、开启延时加载。具体可配置状况以下:(摘自《深刻浅出MyBatis技术原理与实践》)

POJO的映射文件(mapper.xml)

Mapper.xml映射文件中定义了操做数据库的SQL,每一个数据库SQL 是一个statement ,映射文件是MyBatis的核心。

ParameterType(输入类型)

经过parameterType指定输入参数的类型,类型能够是简单类型、hashmap、pojo的包装类型。#{}实现的是向prepareStatement中的预处理语句中设置参数值,SQL语句中#{}表示一个占位符。例如:

使用占位符#{}能够有效防止SQL注入,在使用时不须要关心参数值的类型,MyBatis会自动进行Java类型和jdbc类型的转换。#{}能够接收简单类型值或pojo属性值,若是parameterType传输单个简单属性值,#{}括号能够是value或其余名称。

resultType

使用resultType能够进行输出映射,只有查询出来的列名和pojo中的属性名一致,才能够映射成功。若是查询出来的列名和pojo中的属性名所有不一致,就不会建立pojo对象。可是只要查询出来的列名和pojo中的属性有一个一致,就会建立pojo对象。

resultType能够输出简单类型。例如查询用户信息的综合查询列表总数,经过查询总数和上边用户综合查询列表才能够实现分页。

 

resultMap

mybatis中能够使用resultMap完成高级输出结果映射。若是查询出来的列名和定义的pojo属性名不一致,就能够经过定义一个resultMap对列名和pojo属性名之间做一个映射关系。而后使用resultMap做为statement的输出映射类型。resultMap能够实现将查询结果映射为复杂类型的pojo。

相关文章
相关标签/搜索