mybatis的参数深入和输出结果封装

parameterType 配置参数:

  该属性的取值可以是基本类型,引用类型(例如:String 类型),还可以是实体类类型(POJO 类),同时也可以使用实体类的包装类

  基本类型和 String 我们可以直接写类型名称 ,也可以使用包名 . 类名的方式 ,例如 :java.lang.String。
  实体类类型,目前我们只能使用全限定类名。
    究其原因,是 mybaits 在加载时已经把常用的数据类型注册了别名,从而我们在使用时可以不写包名,而我们的是实体类并没有注册别名,所以必须写全限定类名。

    我们也可以为自己的实体类注册别名,在主配置文件中使用 typeAliases 标签注册

      在 SqlMapConfig.xml 中配置:
      <typeAliases>
        <!-- 单个别名定义 -->
        <typeAlias alias="user" type="com.fgy.domain.User"/>
        <!-- 批量别名定义,扫描整个包下的类,别名为类名(首字母大写或小写都可以) -->
        <package name="com.fgy.domain"/>
        <package name=" 其它包 "/>
      </typeAliases>

    mybatis的参数深入和输出结果封装

 resultType 配置结果类型:

  resultType 属性可以指定结果集的类型,它支持基本类型和实体类类型。

  它和 parameterType 一样,如果注册过类型别名的,可以直接使用别名,没有注册过的必须使用全限定类名。

  同时,当结果类型是实体类名称时,要求实体类中的属性名称必须和查询语句中的列名保持一致,否则无法实现封装。
  要想实现封装,可以使用别名或者配置 resultMap 结果类型

    ①使用别名:效率更高,不需要解析xml配置文件或者注解   

      <select >
        select id as userId,username as userName,birthday as userBirthday,
          sex as userSex,address as userAddress from user
      </select>

    ② resultMap 结果类型:开发效率更快,易于维护,一次定义多处使用

      <!-- 建立 User 实体和数据库表的对应关系

        type 属性:指定实体类的全限定类名
        id 属性:给定一个唯一标识,是给查询 select 标签引用用的。-->

      <resultMap type="com.fgy.domain.User" />
      </resultMap>
      id 标签:用于指定主键字段
      result 标签:用于指定非主键字段
      column 属性:用于指定数据库列名
      property 属性:用于指定实体类属性名称

      在 select 标签中使用 resultMap 属性指定引用即可。同时 resultMap 可以实现将查询结果映射为复杂类型的 pojo,
      比如在查询结果映射对象中包括 pojo 和 list 实现一对一查询和一对多查询。