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

  • 相关阅读:
    sscanf 函数
    hdu 1232 畅通工程 解题报告
    hdu 2048 神、上帝以及老天爷 解题报告
    hdu 2049 不容易系列之(4)——考新郎 解题报告
    hdu 2013 蟠桃记 解题报告
    hdu 2093 考试排名 解题报告
    分糖果 的解题报告
    hdu 2017 字符串统计 解题报告
    表的连接方式:NESTED LOOP、HASH JOIN、SORT MERGE JOIN【转】
    sort_area_size设置【转】
  • 原文地址:https://www.cnblogs.com/figsprite/p/10735188.html
Copyright © 2011-2022 走看看