mybatis 参数处理,单个参数,多个参数
来源:互联网 发布:龙信数据怎么样 编辑:程序博客网 时间:2024/05/16 11:29
1、单个参数
mybatis不做特殊处理。#{参数名}即可取出值,参数名随意取
2、多个参数
mybatis会将其封装成map,
key:param1,param2,。。。paramN,或参数的索引
value:传入的参数值
#{}就是从map中获取制定的key值。
例如:
接口为:public Employee getEmpByIdAndLastName(Integer id, String lastName);
sql:select id,last_name lastName,email,gender where id=#{id} and last_name=#{lastName}
此时会报错:Parameter 'id' not found. Available parameters are [0, 1, param1, param2]
此时需要改写成
select id,last_name lastName,email,gender from tbl_employee where id=#{param1} and last_name=#{param2}
或
select id,last_name lastName,email,gender from tbl_employee where id=#{0} and last_name=#{1}
这样虽然可以实现,但是对于程序的阅读性不好。
1、参数命名法:使用@Param注解
明确key为@Param注解指定的值,value为参数值。
例如
public Employee getEmpByIdAndLastName(@Param("id")Integer id, @Param("lastName")String lastName);
此时就可以写成如下语句了
select id,last_name lastName,email,gender from tbl_employee where id=#{id} and last_name=#{lastName}
Employee employee = employeeMapper.getEmpByIdAndLastName(1, "tom"); System.out.println(employee);
2、POJO:传入一个对象(业务中的模型数据bean)
#{属性名},取出pojo的属性值。
接口:public Employee getEmpByEmp(Employee employee);
此时就可以写成如下语句了
select id,last_name lastName,email,gender from tbl_employee where id=#{id} and last_name=#{lastName}
Employee employeeParam = new Employee(); employeeParam.setId(2); employeeParam.setLastName("jerry"); Employee empByEmp = employeeMapper.getEmpByEmp(employeeParam); System.out.println(empByEmp);
3、Map:传入一个map参数(无已有bean可用)
#{key}取出map中对应的值。
接口:public Employee getEmpByMap(Map<String, Object> paraMap);
此时就可以写成如下语句了
select id,last_name lastName,email,gender from tbl_employee where id=#{id} and last_name=#{lastName}
Map<String, Object> paraMap = new HashMap<String, Object>(); paraMap.put("id", 3); paraMap.put("lastName", "limei"); Employee empByMap = employeeMapper.getEmpByMap(paraMap); System.out.println(empByMap);注:如果经常使用,可以编写一个TO(Transfer Object)传输对象
例如
Page{
int index;
int size;
}
=====================
public Employee getEmp(@Param("id")Integer id,String lastName);
取值:id==>#{id/param1} lastName==>#{param2}
public Employee getEmp(Integer id,@Param("e")Employee emp);
取值:id==>#{param1} lastName===>#{param2.lastName/e.lastName}
##特别注意:如果是Collection(List、Set)类型或者是数组,
也会特殊处理。也是把传入的list或者数组封装在map中。
key:Collection(collection),
如果是List还可以使用这个key(list)数组(array)
public Employee getEmpById(List<Integer> ids);
取值:取出第一个id的值: #{list[0]}
- mybatis 参数处理,单个参数,多个参数
- mybatis传入单个或多个参数
- Mybatis传入多个参数处理方式
- mybatis传递单个string参数
- pthread_create传递参数/单个或者多个
- Mybatis传递多个参数
- Mybatis传递多个参数
- Mybatis传递多个参数
- mybatis传递多个参数
- mybatis传递多个参数
- Mybatis传递多个参数
- MyBatis传入多个参数
- Mybatis传递多个参数
- MyBatis传递多个参数,
- Mybatis 传入多个参数
- Mybatis传递多个参数
- MyBatis传入多个参数
- Mybatis传递多个参数
- 编码简化
- python pip 使用不同的源
- Spring的设计模式使用
- S3C6410-DMA裸机编程
- 高并发解决方案
- mybatis 参数处理,单个参数,多个参数
- jsp四大作用域
- HDU-5833-Zhu and 772002
- C++函数传递参数的方式有哪几种?
- cannot simultaneously fetch multiple bags 问题的解决办法
- JAVA中的包
- input子系统
- gcc 如何编译so 和 objdump 反汇编
- CentOS7.x 安装、配置JDK、Maven