MyBatis参数传递

MyBatis的映射SQL语句传递参数使用的是selectList、insert等等方法中的第二个参数来完成的,可以传入Map或者对应的JavaBean,小例子:

XML:

  <select id="selectFoodById" resultType="java.util.Map">
    select * from food where FOODID = #{foodId}
  </select>

XML:

 SqlSession session = getSession();
 Map<String, Integer> map = new HashMap<String, Integer>();
 map.put("foodId", 2);
 System.out.println(session.selectList("Food.selectFoodById", map));

使用#{key}的方式,实际上是JDBC中 ? 作为占位符的方式传递的,能够防止SQL注入。还有一种是用 ${key},EL表达式的形式:

  <select id="selectFoodByName" resultType="java.util.Map">
    select * from food where FOODNAME like '%${foodName}%'
  </select>

这种方式就是传统的SQL语句拼接,不过这种方式可以使用 like 模糊查询,类似上面这样的值传递方式使用 #{key}要做模糊查询只能在传递的值上拼接百分号...

 

 对比一下两种方式:

     #{Key} : 使用?占位符预编译SQL,能够防止SQL注入,字符串类型会自动加 ' ' 单引号

     ${Key} : 直接使用对应的值来替换对应的键,如果是字符串需要手动添加单引号

 

 

再贴一个insert的小例子:

 <insert id="insertFood">
          insert into food values(FOOD_SEC.NEXTVAL , #{foodName} , #{price})
  </insert>
SqlSession session = getSession();
Food food = new Food();
food.setFoodName("鼎湖上素");
food.setPrice("55");
session.insert("Food.insertFood" , food);
session.commit();        // 需要手动提交事务


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值