Mybatis中javaType和jdbcType对应关系:
JDBC Type Java Type
CHAR String
VARCHAR String
LONGVARCHAR String
NUMERIC java.math.BigDecimal
DECIMAL java.math.BigDecimal
BIT boolean
BOOLEAN boolean
TINYINT byte
SMALLINT short
INTEGER int
BIGINT long
REAL float
FLOAT double
DOUBLE double
BINARY byte[]
VARBINARY byte[]
LONGVARBINARY byte[]
DATE java.sql.Date
TIME java.sql.Time
TIMESTAMP java.sql.Timestamp
CLOB Clob
BLOB Blob
ARRAY Array
DISTINCT mapping of underlying type
STRUCT Struct
REF Ref
DATALINK java.net.URL[color=red][/color]
样例:
1 <resultMap type="java.util.Map" id="resultData"> 2 <result property="FLD_NUMBER" column="FLD_NUMBER" javaType="double" jdbcType="NUMERIC"/> 3 <result property="FLD_VARCHAR" column="FLD_VARCHAR" javaType="string" jdbcType="VARCHAR"/> 4 <result property="FLD_DATE" column="FLD_DATE" javaType="java.sql.Date" jdbcType="DATE"/> 5 <result property="FLD_INTEGER" column="FLD_INTEGER" javaType="int" jdbcType="INTEGER"/> 6 <result property="FLD_DOUBLE" column="FLD_DOUBLE" javaType="double" jdbcType="DOUBLE"/> 7 <result property="FLD_LONG" column="FLD_LONG" javaType="long" jdbcType="INTEGER"/> 8 <result property="FLD_CHAR" column="FLD_CHAR" javaType="string" jdbcType="CHAR"/> 9 <result property="FLD_BLOB" column="FLD_BLOB" javaType="Blob" jdbcType="BLOB" /> 10 <result property="FLD_CLOB" column="FLD_CLOB" javaType="string" jdbcType="CLOB"/> 11 <result property="FLD_FLOAT" column="FLD_FLOAT" javaType="float" jdbcType="FLOAT"/> 12 <result property="FLD_TIMESTAMP" column="FLD_TIMESTAMP" javaType="java.sql.Timestamp" jdbcType="TIMESTAMP"/> 13 </resultMap>
MyBatis 占位符#和 $ 的区别如下:
#符号将传入的数据都当做一个字符串,会对自动传入的数据加一个双引号;
$ 符号将传入的数据直接显示生成 SQL 中;
#符号存在预编译的过程对问号赋值,防止 SQL 注入;
$ 符号是直译的方式,一般用在 order by ${列名}语句中;
能用#号就不要用 $ 符号,$符号主要用于order by