MyBatis中的参数传递
来源:互联网 发布:java源代码流程图 编辑:程序博客网 时间:2024/06/05 19:10
– 可以接受基本类型,对象类型,集合类型的值。这种情况MyBatis可直接使用这个参数,不需要经过任何处理。
单个参数情况前面已经讲过很多,这里不再赘述。
• 多个参数
– 任意多个参数,都会被MyBatis重新包装成一个Map传入。Map的key是param1,param2,0,1...,值就是参数的值。
• 命名参数
– 为参数使用@Param起一个名字,MyBatis就会将这些参数封装进map中,key就是我们自己指定的名字
如果需要通过ID和名称字段对数据表进行查找,这时候会自然想到如下的处理方式:
编写SQL映射文件:
<select id="getEmpByIdAndLastName" resultType="com.test.beans.Employee">SELECT * FROM tb1_emplyee WHERE id=#{id} AND last_name=#{lastName}</select>
对应的接口:
public Employee getEmpByIdAndLastName(String lastName,int id);
测试类:
@Testpublic void test04() throws IOException{SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();//1、获取到的SqlSession不会自动提交数据SqlSession openSession = sqlSessionFactory.openSession();try{EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);Employee employee=mapper.getEmpByIdAndLastName("tom",1);System.out.println(employee);}finally{openSession.close();}}
然而报错了
Error querying database. Cause: org.apache.ibatis.binding.BindingException: Parameter 'id' not found. Available parameters are [0, 1, param1, param2]
原因就是前面讲到的,MyBatis就会将这些参数封装进map中,可以通过@Param注解
public Employee getEmpByIdAndLastName(@Param("lastName") String lastName, @Param("id") int id);这样,#{}的值才能和传入的参数绑定在一起。
• POJO
– 当这些参数属于我们业务POJO时,我们直接传递POJO
ex:#{属性名}:取出传入的pojo的属性值
• Map
– 我们也可以封装多个参数为map,直接传递
如果多个参数不是业务模型中的数据,没有对应的pojo,为了方便,我们也可以传入map
#{key}:取出map中对应的值
ex:
public Employee getEmpByMap(Map<String,Object> map);
<select id="getEmpByMap" resultType="com.test.beans.Employee">SELECT id,last_name lastName,email,gender from tb1_emplyee where id = #{id}</select>
@Testpublic void test04() throws IOException{SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();//1、获取到的SqlSession不会自动提交数据SqlSession openSession = sqlSessionFactory.openSession();try{EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);Map<String,Object> map=new HashMap();map.put("id",1);map.put("lastName","Tom");Employee employee=mapper.getEmpByMap(map);System.out.println(employee);}finally{openSession.close();}}
如果多个参数不是业务模型中的数据,但是需要经常使用,推荐使用TO(Transfer Object)传输数据对象
Page{
int index;
int size;
}
}
注意:如果是Collection(List,Set)类型或者数组
也是把传入的list传入到Map中。
key:Collection(colliection),如果是List还可以使用key(list),数组(Array)
public Emplyee getEmpById(List<Integer> ids);
取出第一个Id值:#{list[0]}
- MyBatis中的参数传递
- MyBatis-----MyBatis传递数组参数
- mybatis传递多种参数
- mybatis 之参数传递
- mybatis传递参数
- mybatis传递参数
- mybatis多参数传递
- Mybatis参数传递记录
- Mybatis参数传递总结
- MyBatis多参数传递
- Mybatis参数传递
- MyBatis参数传递
- Mybatis参数传递
- Mybatis参数传递
- mybatis传递参数总结
- Mybatis参数传递
- Mybatis 传递参数示例
- mybatis参数传递
- build static lib
- Stars
- POJ 1170 Shopping Offers 笔记
- js闭包
- 【codeforces 808】C.Tea Party(贪心)
- MyBatis中的参数传递
- 解锁Oracle system/scott/sys用户
- Shell逐行读取文件的4种方法
- LeetCode:Same Tree
- Eclipse Jetty插件安装
- Sass入门教程
- c++作业五
- LInux学习笔记 --https
- hihoCoder 1322 : 树结构判定 (dfs 或 并查集)