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

  • 相关阅读:
    解析库的使用---页面解析总结
    django--学习笔记 一
    项目(三)--个人博客开发
    算法图解(python3版本)--读后感
    "mysql技术内幕innodb存储引擎"--读书笔记
    通过ftp同步服务器文件:遍历文件夹所有文件(含子文件夹、进度条);简单http同步服务器文件实例
    使用node-webkit(v0.35.5)和innosetup(3.6.1)打包将web程序打包为桌面客户端(安装包)
    .netcore3.1使用ELK日志中心(使用NLog数据传输)
    .netcore3.1使用skywalking8.1.0(docker-compose一键部署)
    asp.net 页面刷新锚点失效问题解决
  • 原文地址:https://www.cnblogs.com/yanl55555/p/11908321.html
Copyright © 2011-2022 走看看