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

  • 相关阅读:
    linux下启动和关闭网卡命令及DHCP上网
    python 编码问题
    paddlepaddle
    Convolutional Neural Network Architectures for Matching Natural Language Sentences
    deep learning RNN
    Learning Structured Representation for Text Classification via Reinforcement Learning 学习笔记
    Python IO密集型任务、计算密集型任务,以及多线程、多进程
    EM 算法最好的解释
    tensorflow 调参过程
    tensorflow 学习纪录(持续更新)
  • 原文地址:https://www.cnblogs.com/figsprite/p/10735188.html
Copyright © 2011-2022 走看看