ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
~~~ 1.当传递的参数只有一个的时候,mybatis不会做特殊处理。 2.当传递多个参数的时候,mybatis会封装一个Map,当前map的key 默认是param1...paramN,取的时候使用key拿到value,也可以通过索引。可以在接口方法中使用@Param注解来直接封装map的key...如果多个参数的话推荐传入POJO,通过#{属性名}来取出。也可以直接在接口声明位置传入一个map集合。如果经常使用可以创建一个TO对象,封装数据信息。(transfer object) public Employee getEmp(@Param("id")Integer id,String lastName); 取值:id==>#{id/param1/0} lastName==>#{param2/1} public Employee getEmp(Integer id,@Param("e")Employee emp); 取值:id==>#{param1/0} lastName===>#{param2.lastName/e.lastName/1} ##特别注意:如果是Collection(List、Set)类型或者是数组, 也会特殊处理。也是把传入的list或者数组封装在map中。 key:Collection(collection),如果是List还可以使用这个key(list) 数组(array) public Employee getEmpById(List<Integer> ids); 取值:取出第一个id的值: #{list[0]} ~~~ 通俗讲四种方法 一: ~~~ <!-- 通过名字和性别查询员工信息 --> <select id="selEmpByNameAndGender" resultType="cn.li.pojo.Employee"> select * from employee where name=#{0} and gender=#{1}; </select> ~~~ 二: ~~~ where name=#{param1} and gender=#{param2}; ~~~ 三: ~~~ employee where name=#{name} and gender=#{gender}; //@Param是在传递多个参数的时候,指定map集合中这个key的封装规则 Employee selEmpByNameAndGender(@Param("name") String name,@Param("gender") char gender); ~~~ 四: ~~~ Employee selEmpByMap(Map<String,Object> map); employee where name=#{aa} and gender=#{bb}; EmployeeDao employeeDao=sqlSession.getMapper(EmployeeDao.class); Map<String,Object> map=new HashMap<>(); map.put("aa", "周杰伦"); map.put("bb", '1'); Employee emp=employeeDao.selEmpByMap(map); ~~~