zoukankan      html  css  js  c++  java
  • 【串线篇】SQL映射文件select简单查询标签

    一、参数(Parameters)传递

    单个参数

    基本类型:取值#{hahaha}随便写

    多个参数

    <!--   public Employee getEmpById(Integer id,String empName);

    取值#{参数名}就无效了

    可用0,1参数的索引或param1,param2(第几个参数就paramN)

    原因:任意多个参数,都会被MyBatis重新包装成一个Map传入。Map的key是param1,param2,0,1…,值就是参数的值。

    命名参数

    在dao里写方法时为参数使用@Param起一个名字,MyBatis就会将这些参数封装进map中,key就是我们自己指定的名字

    POJO

    当这些参数属于我们业务POJO时,我们直接传递POJO,#{POJO的属性名}

    注意千万不必加.

    Map

    我们也可以在写dao时将多个参数封装为map,直接传递

    在测试时自己制定参数名

    map.put(”id”,1);

    map.put(“empName”,”admin”);

    二、参数取值符号

                  #{属性名}:是参数预编译的方式,参数的位置都是用?代替,参数都是后来预编译设置进去的,安全,不会有sql注入问题(id=1or1=1or and empname=” admin”,这种情况如果不使用预编译方式而采用直接拼串获取到的参数会被当成永真条件)。但是表名位置不支持参数预编译

                  ${属性名}:不是参数预编译的方式,而是直接和sql语句进行拼串,不安全

    【总结】一般都是使用#{属性名},但在一些不支持参数预编译的地方要用${参数名}

    三、查询返回list

    接口方法写public List<Employee> getAllEmps()

    标签仍然resultType=“com.atguigu.bean.Employee

    四、查询返回map

    1)查询单条记录

    接口方法写public Map<String Object> getEmpByIdReturnMap(Integer id)

    标签resultType=“map

    比如查出一条

    id  empname  gender  email          login_account 

    ------  -------  ------  -------------  ---------------

    1  admin         0  admin@qq.com   (NULL)  

    以列名作为key,值作为value。注意区分map与list

    2)查询多条记录

           @MapKey(“id“)

    接口方法写public Map< Integer Employee > getAllEmpsReturnMap()

    标签resultType=“com.atguigu.bean.Employee

    key是一条记录的主键,一个对象Employee作为value。注意区分map与list

  • 相关阅读:
    General Problem Solving Techniques [Beginner-1]~H
    做HDU1010 带出来一个小问题
    HDU1009
    hdu1007
    hdu 1008
    HDU1006
    hdu 1005
    hdu 1004
    UVA 10970 第一次比赛 D题 (后面才补的)
    LightOJ 1317 第八次比赛 A 题
  • 原文地址:https://www.cnblogs.com/yanl55555/p/11908321.html
Copyright © 2011-2022 走看看