您的位置:首页 > 其它

二、MyBatis的常用基本知识

2016-03-13 14:53 190 查看
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: