zoukankan      html  css  js  c++  java
  • 框架学习系列 mybatis mapper映射文件之输出映射

    1: mapper映射文件输出映射(输入类型)

    2:resultType的使用

    3:resultMap的使用

    3:总结&下节预告

    本文是《凯哥陪你学系列-框架学习之mybatis框架学习》中第十二篇 mapper映射文件之输出映射

    声明:本文系凯哥Java(www.kaigejava.com)原创,未经允许,禁止转载!

    一: mapper映射文件输出映射(输入类型)

    1.1:mapper.xml文件中那个是输出映射(输出类型)?

    mapper映射文件输出映射(输入类型)

    框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射

    上图中的resultType就是输出映射,还有一种是resultMap

    二:resultType的使用

    2.1:resultType使用要求

    ①:使用resultType进行结果映射时候,需要查询出的列名和映射的对象的属性名称一致,才能映射成功

    ②:如果查询的列名和对象的属性名全部不一致,那么映射的对象为空

    ③:如果查询的列名和对象的属性名有一个一致,那么映射的对象不为空,但是只有映射成功的那一个属性才有值

    ④:如果查询的sql的列名有别名,那么这个别名就是和属性映射的列名

    输出类型有哪些?

    简单类型、pojo对象和pojo列表、

    2.2:简单类型的使用

    注意:对简单类型的结果映射也是有要求的,查询的列必须是一列,才能映射为简单类型的

    2.2.1:需求

    在上节复杂pojo对象使用的时候:想模糊查询用户是凯哥的都有哪些?这个需求修改为,查询符合条件的用户总数是多少?

    凯哥喜欢先给出结果,在详细解说。咱就先来看结果,小二,上图啦~

    2.2.2:映射文件

    框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射

    框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射

    2.2.3:mapper接口代码:

    框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射

    框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射

    2.2.4:测试代码:

    框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射

    框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射

    2.2.5:运行结果:

    框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射

    框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射

    2.3:pojo对象和pojo列表

    可以参考入门程序之根据id查询用户信息和根据用户名模糊查询用户列表。这里就不详细解说。

    2.3.1:pojo对象。(根据id查询用户)

    框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射

    框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射

    2.3.2:根据用户名模糊查询用户列表

    框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射

    需要注意的:resultType:输出结果所映射的java类型(也就是单条结果所以对应的java类型)

    单条结果数据的数据类型。

    三:resultMap的使用

    3.1:使用要求

    使用resultMap进行结果映射的时候,不需要查询的列名和映射的属性名必须一致,但是需要声明一个resultMap,来对列名和属性名进行映射

    3.2:需求:

    根据id全字段映射。sql语句如下:

    SELECT id , username,birthday,sex address FROM USER WHERE id = 28

    3.3:user-mapper.xml映射文件:

    框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射

    框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射

    说明:

    resultMpa:标明开始声明一个resultMap

    type:查询后返回当个pojo对象的类型(全类名或是别名)

    id:resultMap唯一标识

    id:标明是主键的.主键使用该属性

    column:数据库中对应的列名

    property:对应的属性名

    javaType:对应Java类型

    result:非主键属性

    3.4:mapper接口类代码:

    框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射

    框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射

    3.5:测试类:

    框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射

    框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射

    3.6:运行结果:

    框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射

    框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射

    三:总结

    通过本文学习,我们知道mapper输出映射有两种方式

    resultType和resultMap两种

    使用resultType怎么返回简单类型,使用简单类型时候需要注意什么。怎么返回pojo类型和pojo列表

    resulMap的使用中resultMap都有哪些属性?怎么使用resultMap

    下节预告:

    框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射

    框架学习系列 mybatis 第十二篇 mapper映射文件之输出映射

    在resultMap 中type和resultType的时候,每次都写全路径是不是很麻烦呢?

    四:parameterType

    在mybatis映射接口的配置中,有select,insert,update,delete等元素都提到了parameterType的用法,parameterType为输入参数,在配置的时候,配置相应的输入参数类型即可。parameterType有基本数据类型和复杂的数据类型配置。

    1.基本数据类型,如输入参数只有一个,其数据类型可以是基本的数据类型,也可以是自己定的类类型。包括int,String,Integer,Date,如下:

     (1)根据id进行相应的删除:<delete id="deleteById" parameterType="Integer">

    (2)添加员工:<insert id="addEmp" parameterType="com.pojo.Employee">

    2.复杂数据类型:包含java实体类,map。

    配置如:

      <select id="selectTeacher" parameterType="Map" resultType="com.myapp.domain.Teacher">  

           select * from Teacher where c_id=#{id} and sex=#{sex} 

      </select>  

    java代码如下:

        Map<String,String> map=new HasMap<String,String>();  

        map.put("id","2");  

        map.put("sex","男");  

        List<Teacher> tList = teacherMapper.selectTeacher(map);   

        for (Teacher entityTemp : tList) {    

        System.out.println(entityTemp.toString()); } 

    另外MyBatis还提供了一个使用注解来参入多个参数的方式。这种方式需要在接口的参数上添加@Param注解

        /**
         * 此处要注意的是,由于该方法需要传入多个参数,在进行Mybatis配置时,
         * 没有办法同时配置多个参数,另外MyBatis还提供了一个使用注解来参入
         * 多个参数的方式。这种方式需要在接口的参数上添加@Param注解。。
         * 注意,以下两种写法是完全相同的。但使用的时候要使用第一种类型
         */
        
        User login(@Param(value="name")String name,@Param(value="password")String password );
    //    User login(String name,String password);

    配置如下:

     <select id="login"  resultType="com.pojo.User">
        select * from us where name=#{name} and password=#{password}
       </select>

  • 相关阅读:
    leetcode 29-> Divide Two Integers without using multiplication, division and mod operator
    ros topic 发布一次可能会接收不到数据
    python中的print()、str()和repr()的区别
    python 部分函数
    uiautomatorviewer错误 unable toconnect to adb
    pyqt 不规则形状窗口显示
    appium 计算器demo
    Spring 3.0 注解注入详解
    Spring Autowire自动装配
    restful 学习地址
  • 原文地址:https://www.cnblogs.com/ajing2018/p/10084495.html
Copyright © 2011-2022 走看看