• mybatis学习笔记(二)


    • 三种查询方式,由<resultType 属性控制>
      • 第一种 selectList()
        • 返回值为LIst
          List<People> selectList = session.selectList("com.bjm.mapper.selAll");
          		
          for (People people : selectList) {
          	System.out.println(people.toString());
          }
          
      • 第二种 selectOne()
        • 返回值Object,适用于返回结果只是变量或一行数据时
          Object selectOne = session.selectOne("com.bjm.mapper.count");
          System.out.println(selectOne);
          
      • 第三种 selectMap
        • 返回值Map,适用于需要在查询结果中通过某列的值取到这行数据的需求。
          Map<Object, Object> selectMap = session.selectMap("com.bjm.mapper.selById", "name");
          System.out.println(selectMap);


    • settings标签
      • 在mybatis全局配置文件中通过<settings>标签控制 mybatis 全局开关
      • 例如在mybatis开启log4j
        <settings>
            <setting name="logImpl" value="LOG4J"/>
        </settings>
    • parameterType属性
      •  在xxx(实体类)Mapper.xml中<select><delete>等标签的 parameterType 可以控制参数类型
      • SqlSession 的 selectList()和 selectOne()的第个参数和 selectMap()的第个参数都表示方法的参数。
        Object selectOne = session.selectOne("com.bjm.mapper.selAll",2);
        System.out.println(selectOne);
        <select id="selAll" resultType="com.bjm.pojo.People" parameterType="int">
              select * from people where id=#{0}
        </select>
      •  在Mapper.xml 中可以通过#{}获取参数

        • parameterType 控制参数类型
        • #{}获取参数内容,需要注意#{0}表示使用索引,从 0 开始第一个参数#{param1}也可以但从1开始计数
        • 我们可以发现从sql语句可以看到#{0}使用的是占位符,因此mybatis使用的是preparestatement预处理(因为只有reparestatement可以处理占位符)。
          控制台:
          org.apache.ibatis.logging.jdbc.BaseJdbcLogger DEBUG ==> Preparing: select * from people where id=? org.apache.ibatis.logging.jdbc.BaseJdbcLogger DEBUG ==> Parameters: 2(Integer) org.apache.ibatis.logging.jdbc.BaseJdbcLogger DEBUG <== Total: 1 People [id=2, name=李四, age=22]
      • Mapper.xml中使用${}也可以接收传入的数据,那么${}#{}的区别在哪?
        • #{} 获取参数的内容支持:索引获取#{0}#{param1}获取指定位置参数,并且 SQL 使用?占位符,可以防止sql注入。
        • ${} 使用的是字符串拼接而不是?(占位符),默认找${内容}内容的 get/set 方法。如果没有get/set方法,则直接寻找属性值。如果写数字,就是一个数字。
        • 一般情况推荐使用#{}



  • 相关阅读:
    解决Linux 环境 GLIBCXX_3.4.15' not found问题
    同步和异步接口,你还有疑惑么?
    SQL中内连接和外连接的区别
    Linux常用操作指令(面试专用)
    关于支付类的一些测试关注点及异常点
    jenkins持续集成 python selenium(windows本地)
    从ghost映像.gho文件快速创建vmware虚拟机
    阿里p3c(代码规范,eclipse插件、模版,idea插件)
    logback错误日志发送邮件
    C#中的异步陷阱
  • 原文地址:https://www.cnblogs.com/bjm1/p/10252841.html
Copyright © 2020-2023  润新知