本文是读 杨开振老师的《深入浅出 Mybatis技术原理与实践》第三章所记录的笔记,本文绝对没有推荐书的意思,只是看着记录学习,同时分享自己的观点而已。
1、主配置参数
主要讲解Mybatis主配置文件的参数,一般使用默认参数就足够了,对于特殊参数,特殊配置,需要时再学习。
2、别名
注意,别名是不分大小写的哦。
3、枚举类型
对于数据库字段,如果是枚举类型,最好定义枚举,为什么呢?在《Effective Mysql》中提到枚举可以节省存储空间从而提高检索速度;从数据可读性来讲,的确枚举要比纯数字来得简单,但是如果使用枚举的话,必须自定义 Mybatis 的类型映射器,这个是无法接受的,没定义一个这样的枚举类就要定义一个这样的解析器,我觉得这种工作确实不好做啊。
4、javaType
和 ResultType 一样使用系统注册的别名即可。
别名 | 映射的类型 |
_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 |
5、jdbcType
他的值可以在 org.apache.ibatis.type.JdbcType 类去查找,因为是枚举类型,所以都是使用大写的。
从代码上可以看出,JdbcType 是
JdbcType(int code) {
this.TYPE_CODE = code;
}
BIT(Types.BIT),
INTEGER(Types.INTEGER),
BIGINT(Types.BIGINT),
FLOAT(Types.FLOAT),
REAL(Types.REAL),
DOUBLE(Types.DOUBLE),
NUMERIC(Types.NUMERIC),
DECIMAL(Types.DECIMAL),
CHAR(Types.CHAR),
VARCHAR(Types.VARCHAR),
DATE(Types.DATE),
TIME(Types.TIME),
TIMESTAMP(Types.TIMESTAMP),
其中 code 是指 java.sql.Types 的值,部分如下:
public final static int BIT = -7;
public final static int TINYINT = -6;
public final static int SMALLINT = 5;
public final static int INTEGER = 4;
public final static int BIGINT = -5;
public final static int FLOAT = 6;
public final static int REAL = 7;
public final static int DOUBLE = 8;
public final static int NUMERIC = 2;
public final static int DECIMAL = 3;
public final static int CHAR = 1;
public final static int VARCHAR = 12;
public final static int DATE = 91;
public final static int TIME = 92;
public final static int TIMESTAMP = 93;
public final static int NULL = 0;
public final static int OTHER = 1111;
public final static int ARRAY = 2003;
public final static int BOOLEAN = 16;
public static final int NCHAR = -15;
public static final int NVARCHAR = -9;
6、javaType 和 jdbcType 作用与区别
1)javaType 可以在 ResultMap 那里使用,指定Java的数据类型,这个非常重要。
2)jdbcType 和 javaType 都可以在动态SQL的参数中使用,但是也可以都不指定,也没必要指定。