MyBitis(iBitis)系列随笔之二:类型别名(typeAliases)与表-对象映射(ORM)

 

类型别名(typeAliases):
     
作用:通过一个简单的别名来表示一个冗长的类型,这样可以降低复杂度。
    类型别名标签typeAliases中可以包含多个typeAlias,如下

[html]  view plain  copy
 
  1. <typeAliases>  
  2.     <typeAlias alias="user" type="com.jefry.User"/>  
  3.         <typeAlias alias="student" type="com.jefry.student"/>  
  4.          ……  
  5.          ……  
  6.          ……  
  7. typeAliases>  

本着简单的原则,我还是接着上一讲实例代码来作修改
 在mybatis-config.xml文件增加一个
    代码如下:

[html]  view plain  copy
 
  1. xml version="1.0" encoding="UTF-8" ?>  
  2. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
  3. "http://mybatis.org/dtd/mybatis-3-config.dtd">  
  4. <configuration>  
  5.     <typeAliases>  
  6.         <typeAlias alias="user" type="com.jefry.User"/>  
  7.     typeAliases>  
  8.       
  9.     <environments default="development">  
  10.         <environment id="development">  
  11.             <transactionManager type="JDBC"/>  
  12.             <dataSource type="POOLED">  
  13.                 <property name="driver" value="com.mysql.jdbc.Driver"/>  
  14.                 <property name="url" value="jdbc:mysql://127.0.0.1:3306/test"/>  
  15.                 <property name="username" value="root"/>  
  16.                 <property name="password" value="root"/>  
  17.             dataSource>  
  18.         environment>  
  19.     environments>  
  20.     <mappers>  
  21.         <mapper resource="com/jefry/UserMapper.xml"/>  
  22.     mappers>  
  23. configuration>  


那么在UserMapper.xml文件中type="com.jefry.User"就可以替换为user
如下:

[html]  view plain  copy
 
  1. <span style="font-size:14px;">xml version="1.0" encoding="UTF-8" ?>    
  2. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"    
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">    
  4. <mapper namespace="User">    
  5.         
  6.     <select id="selectUser" parameterType="int" resultType="user">    
  7.         select * from t_user where id = #{id}    
  8.     select>    
  9. mapper>  span>  

表-对象映射

        上一讲中实例,我们并没有配置表的字段与实体属性之间的关联,但是我们却得到了我们想要的实例对象。原因是我们的t_user表的各个字段名与User类的成员属性名完全一致,一旦t_user表的各个字段名与User类的成员属性名不同(比如t_user某个字段是name,而User的属性却是username)怎么办呢?
       MyBitis借助resultMap实现了表-对象映射如下:

[html]  view plain  copy
 
  1. <span style="color:#000000;"><resultMap id="userResultMap" type="user">   
  2.         <id property="id" column="id"/>   
  3.         <result property="userName" column="name"/>   
  4.         <result property="password" column="pass"/>   
  5.      resultMap>span>  


 根据字面意思我们很容易将字段与属性映射起来。
 需要主要的是 resultType="com.jefry.User">变为resultMap="userResultMap"啦。

[html]  view plain  copy
 
  1. <span style="color:#000000;">    <select id="selectUser" parameterType="int"  resultMap="userResultMap" >  
  2.         select * from t_user where id = #{id}   
  3.     select>span>  

新的UserMapper.xml代码如下:

[html]  view plain  copy
 
  1. <span style="color:#000000;">xml version="1.0" encoding="UTF-8" ?>  
  2. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  4. <mapper namespace="user">  
  5.      <resultMap id="userResultMap" type="user">   
  6.         <id property="id" column="id"/>   
  7.         <result property="userName" column="name"/>   
  8.         <result property="password" column="pass"/>   
  9.      resultMap>  
  10.       
  11.       
  12.     <select id="selectUser" parameterType="int"  resultMap="userResultMap" >  
  13.         select * from t_user where id = #{id}  
  14.     select>  
  15. mapper>span

你可能感兴趣的:(MyBitis(iBitis)系列随笔之二:类型别名(typeAliases)与表-对象映射(ORM))