typeAliases
类型别名是为 Java 类型设置一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余。例如:
这样单个的起别名很麻烦的,所有还有个搞法,批量起别名:
其他知识点:
Mybatis已经为一些常见的 Java 类型内建的相应的类型别名。它们都是大小写不敏感的,需要注意的是我们的别名不能喝它们重复。
别名 | 映射的类型 |
_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 |
object | Object |
map | Map |
hashmap | HashMap |
list | List |
arraylist | ArrayList |
collection | Collection |
iterator | Iterator |
typeHandlers:自定义处理器
无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型。
这里边涉及到日期时间格式的字段有个小知识点:从 3.4.5 开始,MyBatis 默认支持 JSR-310(日期和时间 API) 。JSR 310为Java提供了一个新的、改进的日期和时间API,以代替目前复杂的难以使用的日期和时间功能。JSR 310已经被添加到了JDK1.8中。主要提供了对java.util.Date的替代,另外还提供了新的DateTimeFormatter用于对格式化/解析的支持,使用起来方便很多:比如以前获取年、月、日很麻烦:
Year year = Year.now(); 年
YearMonth yearMonth = YearMonth.now(); 年-月
MonthDay monthDay = MonthDay.now(); 月-日
总之:JSR310提供了更好、更强大的、更易使用的日期时间API,具体的内容我们在jdk8新特性里讲