1.配置内容:
SqlMapConfig.xml中配置的内容和顺序如下:
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 | 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 |
自定义别名:
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 | String | CLOB和LONGVARCHAR类型 |
NStringTypeHandler | String | NVARCHAR和NCHAR类型 |
NClobTypeHandler | String | NCLOB类型 |
ByteArrayTypeHandler | byte[] | 任何兼容的字节流类型 |
BlobTypeHandler | byte[] | BLOB和LONGVARBINARY类型 |
DateTypeHandler | Date(java.util) | TIMESTAMP类型 |
DateOnlyTypeHandler | Date(java.util) | DATE类型 |
TimeOnlyTypeHandler | Date(java.util) | TIME类型 |
SqlTimestampTypeHandler | Timestamp(java.sql) | TIMESTAMP类型 |
SqlDateTypeHandler | Date(java.sql) | DATE类型 |
SqlTimeTypeHandler | Time(java.sql) | 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" />