• mybatis映射层接口的参数使用方式


    日常开发中经常会遇到DAO层接口的方法具有多个参数, 如下:

    public interface IUserDao {
    Employee getById(String id, String name);
    }

    在xml中statement中取用的方式有多种:

    第一种:

    id对应arg0, name对应arg1

    public interface IUserDao {
    Employee getById(String id, String name);
    }
    ------------------------------
    <select id="getById" resultType="com.xuejian.mybatis.vo.Employee">
    SELECT
    T.ID id,
    T.NAME "base.pri.name",
    T.AGE "base.pri.age",
    T.PRIMARY_SCHOOL "base.edu.ps",
    T.MIDDLE_SCHOOL "base.edu.ms",
    T.COUNTRY_NAME "addr.cou.cName",
    T.COUNTRY_LANGUAGE "addr.cou.cLang",
    T.PROVINCE_NAME "addr.pro.pName",
    T.PROVINCE_CULTURE "addr.pro.pCulture"
    FROM SCOTT.EMPLOYEE_T T
    WHERE T.ID=#{arg0} and T.NAME=#{arg1}
    </select>

    第二种:

    id对应param1, name对应param2

    public interface IUserDao {
    Employee getById(String id, String name);
    }
    ------------------------------
    <select id="getById" resultType="com.xuejian.mybatis.vo.Employee">
    SELECT
    T.ID id,
    T.NAME "base.pri.name",
    T.AGE "base.pri.age",
    T.PRIMARY_SCHOOL "base.edu.ps",
    T.MIDDLE_SCHOOL "base.edu.ms",
    T.COUNTRY_NAME "addr.cou.cName",
    T.COUNTRY_LANGUAGE "addr.cou.cLang",
    T.PROVINCE_NAME "addr.pro.pName",
    T.PROVINCE_CULTURE "addr.pro.pCulture"
    FROM SCOTT.EMPLOYEE_T T
    WHERE T.ID=#{param1} and T.NAME=#{param2}
    </select>

    第三种:

    使用@Param注解,将入参转换为自定义的名称

    public interface IUserDao {
    Employee getById(@Param("id")String id, @Param("name")String name);
    }
    ------------------------------
    <select id="getById" resultType="com.xuejian.mybatis.vo.Employee">
    SELECT
    T.ID id,
    T.NAME "base.pri.name",
    T.AGE "base.pri.age",
    T.PRIMARY_SCHOOL "base.edu.ps",
    T.MIDDLE_SCHOOL "base.edu.ms",
    T.COUNTRY_NAME "addr.cou.cName",
    T.COUNTRY_LANGUAGE "addr.cou.cLang",
    T.PROVINCE_NAME "addr.pro.pName",
    T.PROVINCE_CULTURE "addr.pro.pCulture"
    FROM SCOTT.EMPLOYEE_T T
    WHERE T.ID=#{id} and T.NAME=#{name}
    </select>

    总结:

    1. mybatis对于多参数映射层接口方法中参数的使用提供了三种方式
    2. 前两种无需任何转换操作, 如果使用arg类型的,从0开始,从左向右依次取值; 如果使用param类型的, 从1开始, 从左向右依次取值;
    3. 后一种需要用@Param注解将对应入参名转为自定义名称, 这种方式多了注解,但将参数转换为能够见名知义的名称, 使用起来也更方便

    补充对于单参数的参数使用:

    mybatis对于单参数的映射方法使用方式,除了以上三种方法外,还有另一种更灵活的方式,那就是随便输入不是关键字符的任意非空字符,如1,111, xx, 12sdfd, ? "..等都可以,比如:

    WHERE T.ID=#{你好}
    WHERE T.ID=#{"}
    WHERE T.ID=#{?}
  • 相关阅读:
    STM32 Cubemx 输出可调频率与占空比的PWM
    程序员必知的十大基础实用算法及其讲解
    [51单片机]18B20驱动函数
    《嵌入式怎么学?新人十问及解答》
    Google Chrome快捷键大全
    SSD、高级格式化硬盘,4K,分区,对齐,Ghost能不能用的解释用SSD的都可以看看
    资源下载
    Nexus Root Toolkit教程——刷机
    校园卡植入手机教程
    基于Visual c++ 2012的php扩展开发
  • 原文地址:https://www.cnblogs.com/wangxuejian/p/13734843.html
Copyright © 2020-2023  润新知