zoukankan      html  css  js  c++  java
  • MyBatis映射文件3(参数处理Map)

    参数命名

    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]}

  • 相关阅读:
    怎样打开64位 Ubuntu 的32位支持功能?
    HDOJ 1312题Red and Black
    课程设计,文件加密
    一首诗的代码
    HDOJ1021题 Fibonacci Again 应用求模公式
    HDOJ 1013题Digital Roots 大数,9余数定理
    codevs 3314 魔法森林
    codevs 1144 守望者的逃离
    Wormholes
    codevs 1507 酒厂选址
  • 原文地址:https://www.cnblogs.com/figsprite/p/10735188.html
Copyright © 2011-2022 走看看