1、类型别名
- 类型别名是为Java类型设置的一个短名字。它只和XML配置有关,用来减少类完全限定类名的冗余
- 目的:设置别名可以不用在每个需要使用完全限定类名的位置使用一场串的冗余
设置方法:
方法一:
<!-- mybatis-config.xml --> <typeAliases> <!-- alias: 别名--> <!-- type : 别名对应的完全限定类型 --> <typeAlias alias="User" type="yin.shop.model.User" /> <typeAlias alias="alias="Blog" type="domain.blog.Blog"/> ..... ..... ..... </typeAliases>
方法二
<!-- mybatis-config.xml --> <!-- 该方法MyBatis会在包名下自动搜索需要的JavaBean --> <!-- 默认情况下会使用Bean的首字母的非限定类名来做为它的别名 --> <typeAliases> <!-- name : 包名 --> <package name="yin.shop.model" /> </typeAliases>
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
object - - - - - - - - - - - - - - - - - - - - - - - - Object
map - - - - - - - - - - - - - - - - - - - - - - - - - Map
hashmap - - - - - - - - - - - - - - - - - - - – - - HashMap
list - - - - - - - - - - - - - - - - - - - - - - - - - - List
arrayList - - - - - - - - - - - - - - - - - - - - - - - ArrayList
collection - - - - - - - - - - - - - - - - - - - - - - Collection
iterator - - - - - - - - - - - - - - - - - - - - - - - - Iterator
2、字符串替换:
- MyBatis的两种字符串替换语法:
- #{….} : 使用?进行替代
- ${…} : 使用完整字符串完成替代
- 默认情况下,使用#{…}格式的语法会导致MyBatis创建预处理语句属性并安全地设置值,但对于ORDER BY 这样的语句并不适用
3、Result Maps
- ResultMap 元素是MyBatis中最强大最重要的元素
- 常用与关联查询或者当数据库中的字段信息和对象属性不一致时的映射问题
使用ResultMap解决字段信息与对象属性不一致:
- 方法一:通过使用投影解决
SELECT *, post_code as 'postcode' .....
方法二:使用外部的resultMap
1、声明resultMap<!-- user.xml --> ... <!-- id : resultMap的唯一标识 --> <!-- type : 完全限定类名或别名 --> <resultMap id="userMap" type="User" > <id property="id" column="id" /> <result property="userName" column="username" /> <result property="password" column="password" /> </resultMap>
2、在语句中使用:
<!-- user.xml --> <select id="load" resultMap="userMap" > ....... </select>
- 方法一:通过使用投影解决
解决关联查询的问题:
方法一:在resultMap中使用
<association>
1、声明resultMap<!-- user.xml --> .... <resultMap id="userMap" type="User" autoMapping="true" > <id column="a_id" property="id" /> <!-- 一个复杂的类型关联;许多结果将包成这种类型 --> <association property="user" javaType="User" /> <result column="user_id" property="id" /> <result column="username" property="userName" /> .... .... </association> </resultMap>
2、使用
<!-- user.xml --> <select id="load" parameterType="int" resultMap="userMap" > SELECT *, ti_id as a_id, t1.user_id, t2.id as 'user_id" FROM t_address t1 LEFT JOIN t_user t2 ON t1.user_id = t2.id WHERE t1.id=#{id} </select>