1.配置内容:
properties(属性)
settings(全局配置参数)
typeAliases(类型别名)
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境集合属性对象)
environment(环境子属性对象)
transactionManager(事务管理)
dataSource(数据源)
mappers(映射器)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 加载属性文件--> <properties resource="db.properties"></properties> <!-- 全局参数配置,在需要时候进行配置 --> <!-- <settings></settings> --> <!-- 别名设置 --> <!-- 单个配置 type:类型路径 alias:别名--> <!-- <typeAliases> <typeAlias type="cn.edu.hpu.ssm.po.User" alias="user"/> </typeAliases> --> <!-- 批量设置(推荐使用) 指定包名,mybatis自动扫描扫描po类,自动定义别名。默认为类名(首字母大写或小写) --> <typeAliases> <package name="cn.edu.hpu.ssm.po"/> </typeAliases> <!-- 和spring整合后 environments配置将废除--> <environments default="development"> <environment id="development"> <!-- 使用jdbc事务管理,事物控制有mybatis控制--> <transactionManager type="JDBC" /> <!-- 数据库连接池,由mybatis管理--> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <!-- 配置mpper,加载映射文件 --> <!-- <mappers> <mapper resource="sqlmap/User.xml"/> <mapper resource="mapper/UserMapper.xml"/> </mappers> --> <!-- 通过mapper接口,加载映射文件 规范:mapper接口名必须与mapper。xml文件名相同,且放在同一包下 前提是使用mapper代理的方式 --> <mappers> <mapper class="cn.edu.hpu.ssm.mapper.UserMapper"/> <mapper class="cn.edu.hpu.ssm.mapper.OrdersMapperCustom"/> </mappers> </configuration>
1.sqlMapConfig可以引用Java的属性配置文件:(db.properties)
这里是对数据库的参数进行一些配置,为了防止硬编码不利于系统的优化。(在与springmvc整合后,由spring管理)
jdbc.driver=com.MysqL.jdbc.Driver jdbc.url=jdbc:MysqL://localhost:3306/mybatis jdbc.username=root jdbc.password=123456
2.setting全局参数配置:
mybatis运行时可以调整一些运行参数。如:二级缓存、开启延迟加载。
全局变量将影响mybatis的运行:
3.typeAliases(别名)(重点)
在mapper.xml中,定义很多的statement,statement需要ParameterType和ResultType指定输入参数类型和输出参数类型,如果指定类型时,输入参数的全路径,不方便开发,可以针对parameterType和ResultType指定的类型定义一些别名。在mapper.xml中,通过别名引用,方便开发。
Mybatis默认支持的别名:
别名 |
映射的类型 |
|
_byte |
byte | |
_long | long | |
_short | short | |
_int | int | |
_integer | _double | double |
_float | float | |
_boolean | boolean | |
string | String | |
byte | Byte | |
long | Long | |
short | Short | |
int | Integer | |
integer | double | Double |
float | Float | |
boolean | Boolean | |
date | Date | |
decimal | BigDecimal | |
bigdecimal | BigDecimal |
自定义别名:
1.单个别名定义:
<typeAliases> <typeAlias type="cn.edu.hpu.ssm.po.User" alias="user"/> </typeAliases>
2.批量别名定义:
<!-- 批量设置(推荐使用) 指定包名,mybatis自动扫描扫描po类,自动定义别名。默认为类名(首字母大写或小写) --> <typeAliases> <package name="cn.edu.hpu.ssm.po"/> </typeAliases>
4.typeHandlers(类型处理器)
用于Java类型与jdbc类型的转换,mybatis自带的类型处理器基本满足日常所需,不需要另行定义。
mybatis支持的类型处理器:
类型处理器 |
Java类型 |
JDBC类型 | ||||
BooleanTypeHandler |
Boolean,boolean |
任何兼容的布尔值 |
||||
ByteTypeHandler | Byte,byte | 任何兼容的数字或字节类型 |
||||
ShortTypeHandler | Short,short | 任何兼容的数字或短整型 |
||||
IntegerTypeHandler | Integer,int | 任何兼容的数字和整型 |
||||
LongTypeHandler | Long,long | 任何兼容的数字或长整型 |
||||
FloatTypeHandler | Float,float | 任何兼容的数字或单精度浮点型 |
||||
DoubleTypeHandler | Double,double | 任何兼容的数字或双精度浮点型 |
||||
BigDecimalTypeHandler | BigDecimal | 任何兼容的数字或十进制小数类型 |
||||
StringTypeHandler | String | CHAR和VARCHAR类型 | ||||
ClobTypeHandler | CLOB和LONGVARCHAR类型 | |||||
NStringTypeHandler | NVARCHAR和NCHAR类型 | |||||
NClobTypeHandler | NCLOB类型 | |||||
ByteArrayTypeHandler | byte[] | 任何兼容的字节流类型 |
||||
BlobTypeHandler | BLOB和LONGVARBINARY类型 | |||||
DateTypeHandler | Date(java.util) | TIMESTAMP类型 | ||||
DateOnlyTypeHandler | DATE类型 | |||||
TimeOnlyTypeHandler | TIME类型 | |||||
sqlTimestampTypeHandler | Timestamp(java.sql) | sqlDateTypeHandler | sqlTimeTypeHandler | Time(ObjectTypeHandler | 任意 |
其他或未指定类型 |
EnumTypeHandler |
Enumeration类型 |
VARCHAR-任何兼容的字符串类型,作为代码存储(而不是索引)。 |
5.Mappers(映射配置)
1.通过resource加载单个映射文件:
<mappers> <mapper resource="sqlmap/User.xml"/> <mapper resource="mapper/UserMapper.xml"/> </mappers>
2.通过mapper接口加载单个mapper:(指定mappers所在的包名,mybatis自动扫描mapper包下面的所有mapper接口。规范:mapper接口名必须与mapper.xml文件名相同,且放在同一包下。前提是使用mapper代理的方式 )
<!-- 通过mapper接口,加载映射文件 规范:mapper接口名必须与mapper.xml<span style="color:#ff0000;">文件名相同,且放在同一包下</span> 前提是使用mapper代理的方式 --> <mappers> <mapper class="cn.edu.hpu.ssm.mapper.UserMapper"/> <mapper class="cn.edu.hpu.ssm.mapper.OrdersMapperCustom"/> </mappers>
3.通过package批量加载mappers
<package name="cn.edu.hpu.ssm.mapper" />