首页 > 其他 > 详细

MyBatis映射文件3

时间:2019-04-19 13:00:48      阅读:168      评论:0      收藏:0      [点我收藏+]

参数命名

POJO

????如果多个参数,正好是业务逻辑的数据模型,那么我们就可以直接传入POJO,这样#{}中就可以直接使用属性名

Map

如果多个参数不是业务逻辑的数据模型,没有对应的POJO,为了方便,我们可以传入一个map,此时#{key}就是取出map的值

在接口中创建一个新方法:

Employee?getEmpByMap(Map<String,Object>?map);?

创建新的<select>标签

  1. <select?id="getEmpByMap"?resultType="com.figsprite.bean.Employee">??
  2. ????select?id,last_name?lastName,gender,email?from?tb_employee?where?id?=?#{id}?and?last_name?=?#{lastName}??
  3. </select>??

然后我们再做测试

  1. @Test??
  2. public?void?test7()?throws?IOException?{??
  3. ????SqlSessionFactory?sqlSessionFactory?=?getSqlSessionFactory();??
  4. ????SqlSession?openSession?=?sqlSessionFactory.openSession();??
  5. ????try?{??
  6. ????????EmployeeMapper?mapper?=?openSession.getMapper(EmployeeMapper.class);??
  7. ????????Map<String,Object>?map?=?new?HashMap<>();??
  8. ????????map.put("id",3);??
  9. ????????map.put("lastName","Hello");??
  10. ????????Employee?e?=?mapper.getEmpByMap(map);??
  11. ????????System.out.println(e);??
  12. ????}finally?{??
  13. ????????openSession.close();??
  14. ????}??
  15. }??

TO

如果getEmpByMap方法调用频率很高,每次调用都需要重新创建一个map,这样的话,还是一件麻烦事,如果是这种情况,建议编写一个TO(Transfer Object),比如我们在查找分页记录时,需要多项内容:

Page{
int index;
int size;
}

思考题:

public Employee getEmp(@Param("id") Integet id,String lastName)

????取值:idè#{id/param1} lastNameè#{param2}

public Employee getEmp(Integer id,@Param("e") Employee emp)

????取值:idè#{param1} lastNameè#{param2.lastName/e.lastName}

public Employee getEmpById(List<Integer> ids)

????如果是Collection类型或者是数组,也会特殊处理,封装在map,如果是Collection,那么key是Collection[i],如果是List,那么我们还可以使用list[i],至于数组,array[i]

取值:取第一个id值 idè#{list[0]}

MyBatis映射文件3

原文:https://www.cnblogs.com/figsprite/p/10735188.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!