zoukankan      html  css  js  c++  java
  • 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=#{?}
  • 相关阅读:
    设置跨域
    Vs自定nuget push菜单
    VS IIS Express 支持局域网访问
    字符串GZIP压缩解压
    C# 使用 protobuf 进行对象序列化与反序列化
    RabbitMQ
    如果调用.net core Web API不能发送PUT/DELETE请求怎么办?
    log4net配置使用
    redis实现消息队列
    Error-the resource is not on the build path of a java project
  • 原文地址:https://www.cnblogs.com/wangxuejian/p/13734843.html
Copyright © 2011-2022 走看看