zoukankan      html  css  js  c++  java
  • 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>

        

     resultType 配置结果类型:

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

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

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

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

          <select id="findAll" resultType="com.fgy.domain.User">
            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" id="userMap">
            <id column="id" property="userId"/>
            <result column="username" property="userName"/>
            <result column="sex" property="userSex"/>
            <result column="address" property="userAddress"/>
            <result column="birthday" property="userBirthday"/>
          </resultMap>
          id 标签:用于指定主键字段
          result 标签:用于指定非主键字段
          column 属性:用于指定数据库列名
          property 属性:用于指定实体类属性名称

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

  • 相关阅读:
    python 获取qq群成员列表数据
    selenium定位伪类元素::before
    flask 重写HTTPException类并自定义异常信息
    flask 工厂模式与celery结合
    重写flask_sqlalchemy的BaseQuery下面的filter_by方法
    Pytest系列
    Pytest系列- 多重校验插件之pytest-assume的详细使用
    mysql 主主+ Keepalived 高可用
    redis 主从配置,主从切换
    FastDFS 学习笔记
  • 原文地址:https://www.cnblogs.com/roadlandscape/p/12290768.html
Copyright © 2011-2022 走看看