一.properties(属性)(参考传智播客的内容教学)
一般的应用在链接数据库参数的独立配置。
原因:
1. SqlMapConfig.xml内容居多,当数据库参数的发生变化时,一般是程序读取配置信息,进行链接数据库,相比较读取内容居多的SqlMapConfig.xml,当然是只读取包含数据库连接的db.properties文件比较方便。
2.其他的xml可能也要读取数据库,为了统一管理,把数据统一到db.properties文件来实现共享。
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis1?characterEncoding=utf-8
jdbc.username=root
jdbc.password=root
在SqlMapConfig.xml文件中加载属性文件:
<properties resource="db.properties"> <!--properties中还可以配置一些属性名和属性值 --> <!-- <property name="jdbc.driver" value=""/> --> </properties>
在mybatis中加载属性的地方有三个:1.properties的元素体内的属性
2.properties的resource/src包括进来的属性文件
3。paremeterType传来的值
读取顺序: 从1-3以此读取,并加以覆盖。即先读取properties元素体内的值然后读取resource包括来的值,如果出现元素名重复则resource的值会覆盖体内的值,以此类推。
为了方便属性的管理:
1.尽量不要在元素体内定义属性,只定义在文件中
2.属性名要有特殊性,防止与paremeterType传来的值重名
二、settings(全局参数配置)
mybatis在运行时会用到的参数,所以参数的配置会影响到mybatis的运行
官网链接:http://www.mybatis.org/mybatis-3/configuration.html#settings
三:typeAliases(类型别名)
在mapper.xml的statement中需要通过parameterType指定参数的类型和resutType来制定返回类型。
在配置文件中需要指定参说类型的全路径,但是写了全路径,不方便开发。所以规定以别名来代替全路径来简化开发。
1.mabits内部默认支持的别名
别名 | 映射的类型 |
---|---|
_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 |
详细参考:
http://www.mybatis.org/mybatis-3/configuration.html#typeAliases
但是对于自己定义的po类,全名称也很长,但是没有默认的别名,这时候就需要自己定义了。
2.自定义别名
-----单个别名定义
<typeAliases>
type:类型路径
alias:别名
<typeAlias type="vo.User" aliad=“user”/>
</typeAliases>
------批量别名定义
<typeAliases>
//指定包名,mybatis自动扫描包中的po类,自动定义别名,别名就是类名。首字母大小写都可以
<package name="cn.vo"/>
</typeAliases>
四、typeHandlers
myBatis通过typeHandles来完成java类型和mysql类型之间的转换。
由于自带的转换已经满足基本需求,则不需要在额外的定义类型转换
类型处理器 | 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-任何兼容的字符串类型,作为代码存储(而不是索引) |
五、mappers映射配置(重点)
1.通过resource加载单个映射文件(一次加载一个)
<mappers>
<mapper resource="mapper/heheMapper.xml"/>
</mappers>
2.通过mapper接口加载单个映射文件
当使用mapper代理方法,且mapper接口的名称和mapper.xml文件名保持一致,且在一个目录下才可以用
<mapper class="mapper.heheMapper"/>
3.批量加载映射文件
当2.条件的目录中有多个符合条件的映射文件则可以采用这种方式
例。 cn.mapper
--heheMapper.java
--heheMapper.xml
--hahaMapper.java
--hahaMapper.xml
<package name="cn.mapper"/>