mybatis的参数处理
多个参数取值
普通多参数
public Employee getEmpByIdAndLastName(Integer id,String LastName) 取值#{param1} #{param2} 或者#{1} #{1}
命名参数:public Employee getEmpByIdAndLastName( @Param("id") Integer id , @Param("LastName)") String LastName)
明确指定封装参数时map的key:@Param("id") 多个参数会被封装成一个map key:使用@Param注解指定的值 value:参数值
#{指定的key} 取值对应的参数值
pojo:
如果多个参数正好是我们业务逻辑的数据模型,我们就可以直接传入pojo #{属性名} :取出传入的pojo的属性值
Map:
如果多个参数不是业务模型中的数据,没有对应的pojo,(不经常使用,因为每次都要定义一个map)为了方便,我们也可以传入map
sql中用#{key值}去除对应的value值
map<String,object> map = new HashMap<>();
map.put("id",1);
map.put("lastname","tom");
public employee getempbymap(map<string,object> map);
TO:
如果多个参数不是业务模型中的数据,但是经常要使用,推荐来编写一个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的值: #{liist[0]}
https://www.bilibili.com/video/av29479964/?p=22 学习mybatis的笔记