-
需求: 在一个sql 中需要传递多个参数,这时候,这么传递和在<select>中获取值呢,有一条sql 一:传递单个值:需要传递的参数:id 方式一; 接口 中 find(Integer id); <select> select * from user where id=#{id} </select> 方式二: <select> select * from user where id=#{xxx} //传递单个值的时候,这里面写错都还可以传递过去 </select> 二:传递多个值 需要传递的参数有id age 呢 错误: 这时候,假如想第一次那样,直接传递 <select> select * from user where id=#{id} AND age=#{age} </select> 会报错 use: org.apache.ibatis.binding.BindingException: Parameter 'id' not found. Available parameters are [arg1, arg0, param1, param2] 假如你还想直接传递参数的话 ××方式1:可以传递params1,params2,意思是 底层map集合中的第几个元素 接口中 find (Integer id,Integer age) <select> select * from user where id=#{param1} AND age=#{param2} </select> 在调用的时候,传递两个参数就可以了 ××方式2:将需要传递的参数,封装在JavaBean类中,使用POJO来传递参数 JavaBean中 User Integer id; Integer age; 接口中 find (User user) <select> select * from user where id=#{id} AND age=#{age} </select> ××方式3:将参数封装在map集合中例如 --》 接口中 find(Map<String,Object> map); --》 <select> select * from user where id=#{aaa} AND age =#{bbb} </select> --》 调用的时候: Map<String,Object> map = new HashMap<String,Object>(); map.put("aaa",5); map.put("bbb",12); userDao.find(map); 注意,这里根据的是map 的key来找value的 提出一个问题,假如需要传递的参数,既有单个参数,又有对象呢,这怎么传递? 解决1: 接口中, find(Integer id,User user); 使用POJO传递,还有上面多个参数传递的第一种 <select> select * from user where id =#{param1} AND age =#{param2.age} </select> 追加,使用map来封装这两个参数 --》接口中: find(Map<String , Object> map); --》 使用 <select> select * from user where id =#{aaa} AND age=#{bbb.age} AND name=#{bbb.name} </select> --》调用: Map<String,Object> map = new HashMap<String , Object>(); User user= new User (name,age); map.put("aaa",1); map.put("bbb",User);
Mybatis中Java向SQL中传值的几种方式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.