• Mybatis参数传递


    参数传递

    单个字面量类型的参数

    在mapper接口中使用单个参数,直接使用#{}或者${}在映射文件中接收,注意${}本质是字符串拼接,因此在接收字符型的数据使用单引号括起来,#{}本质为占位符.

    eg:

    mapper接口:

    
    package com.mappers;
    import com.pojo.User;
    
    public interface UserMapper {
    
       User selectUserById(int userid);
       User selectUserByName(String username);
    
    }
    
    
    

    映射文件:

    
    
    mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    <mapper namespace="com.mappers.UserMapper">
    
        
      <select id="selectUserById" resultType="user">
            select * from user where userid=#{userid}
      select>
    
        
        <select id="selectUserByName" resultType="User">
            select * from user where username='${username}'
        select>
    
    
    
    mapper>
    
    
    

    调用方法时直接传参:

    selectUserByName("张三");

    selectUserById(2);

    接口方法参数有多个

    这时系统会将参数放入Map集合中,以两种方式进行存储

    1. 以arg0,arg1....为键,传入的参数为值
    2. 以param1,param2...为键,传入的参数为值

    因此在映射文件中访问可以通过#{}或者${}写入对应键进行访问

    mapper接口:

    package com.mappers;
    import com.pojo.User;
    
    public interface UserMapper {
    
       User selectUserByIdAndName(int userid,String username);
    
    }
    
    
    

    映射文件:

    
     
        
    
    

    方式2:

    使用map作为参数进行传递多个参数

    mapper接口:

    
    package com.mappers;
    import com.pojo.User;
    
    
    import java.util.Map;
    
    public interface UserMapper {
    
       User selectUserByIdAndName(Map map);
    
    }
    
    
    

    映射文件:

    
     <select id="selectUserByIdAndName" resultType="User">
            select * from user where userid=#{userid} and username=#{username}
        select>
    

    调用:先定义好map,再进行调用

    
        Map map=new HashMap<>();
            map.put("userid",2);
            map.put("username","李四");
           User user3=userMapper.selectUserByIdAndName(map);
    
    

    方式3:(推荐)

    使用@Param("")注解,本质也是放到Map集合里,知识我们规定了键名,在使用时直接通过指定的键名访问,在注解的参数里写入我们指定的键名

    mapper接口:

    
    package com.mappers;
    import com.pojo.User;
    
    public interface UserMapper {
    
      User selectUserByIdAndName(@Param("userid") int userid, @Param("username") String username);
    
    }
    
    
    

    映射文件:

    
        <select id="selectUserByIdAndName" resultType="User">
            select * from user where userid=#{userid} and username=#{username}
        select>
    
    

    传入参数为实体类对象

    直接通过#{}或${}和属性名对各个属性值进行使用

    mapper接口

    package com.mappers;
    import com.pojo.User;
    
    public interface UserMapper {
    
    int insertUser(User user);
    
    }
    
    
    

    映射文件:使用时通过类内属性名即可访问

    
    
        <insert id="insertUser">
            insert into user values (null,#{username},#{userpass},#{usertel},#{usercard});
        insert>
    
    

    调用:先定义,然后传入使用

    User user4=new User(1,"哈哈","aiw","159",10);
    userMapper.insertUser(user4);
    
  • 相关阅读:
    【42STL-函数对象使用详情】
    IO接口基础知识
    HarmonyOS—@Observed装饰器和@ObjectLink嵌套类对象属性变化
    传感器数据采集:采样定理(奈奎斯特定理)
    MySQL 权限变更,何时生效?
    网页版组态软件:Sovit2D Web组态可视化编辑器
    尚硅谷尚品项目汇笔记(三)
    备战数学建模38-粒子群算法pso番外篇1(攻坚战2)
    使用消息队列解决RTOS多线程同时打印串口乱序问题
    NO.2 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
  • 原文地址:https://www.cnblogs.com/cyqf/p/17163157.html