Mybatis参数传递

  1. Map传参, #{}里的key要一一对应不能乱写,如果不存在则会填充NULL,不会报错

    Map<String, Object> map = new HashMap<>();
    // 让key的可读性增强
    map.put("carNum", "103");
    map.put("brand", "奔驰E300L");
    map.put("guidePrice", 50.3);
    map.put("produceTime", "2020-10-01");
    map.put("carType", "燃油车");
    
    <insert id="insertCar">
    insert into t_car(car_num,brand,guide_price,produce_time,car_type)
    values(#{carNum},#{brand},#{guidePrice},#{produceTime},#{carType})
    </insert>
    
  2. 实体类传参,#{} 里写的是get方法的方法名去掉get之后将剩下的单词首字母变小写(例
    如:getAge对应的是#{age},如果这样的get方法不存在会报错

    Car car = new Car();
    car.setCarNum("103");
    car.setBrand("奔驰C200");
    car.setGuidePrice(33.23);
    car.setProduceTime("2020-10-11");
    car.setCarType("燃油车");
    
    <insert id="insertCarByPOJO">
    <!--#{} 里写的是POJO的属性名-->
    insert into t_car(car_num,brand,guide_price,produce_time,car_type) values
    (#{carNum},#{brand},#{guidePrice},#{produceTime},#{carType})
    </insert>
    
  3. 多参数传递

    List<Student> selectByNameAndSex(String name, Character sex);
    
    这个是会报错的,实际上在mybatis底层会创建一个map集合,以:#{arg0} #{arg1} #{param1} #{param2}为key
    <select id="selectByNameAndSex" resultType="student">
    select * from t_student where name = #{name} and sex = #{sex}
    </select>
    
    正确的写法
    <select id="selectByNameAndSex" resultType="student">
    <!--select * from t_student where name = #{arg0} and sex = #{arg1}-->
    <!--select * from t_student where name = #{param1} and sex = #{param2}-->
    select * from t_student where name = #{arg0} and sex = #{param2}
    </select>
    
    或者使用注解指定参数名称
    List<Student> selectByNameAndAge(@Param(value="name") String name, @Par
    am("age") int age);
    
  4. 如果参数只有一个的话,#{} 里面的内容就随便写了。对于 ${} 来说,注意加单引号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值