• 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方法,则直接寻找属性值。如果写数字,就是一个数字。
        • 一般情况推荐使用#{}



  • 相关阅读:
    8天学会Hadoop基础(2)
    [Java]剑指offer:扑克牌顺子
    8天学会Hadoop基础(1):NameNode的工作机制
    [Java]剑指offer:构建乘积数组
    关于Hadoop启动之后jps没有namenode节点的解决方法
    剑指offer:对称的二叉树
    两只小熊队高级软件工程第七次作业敏捷冲刺5
    两只小熊队高级软件工程第七次作业敏捷冲刺4
    两只小熊队高级软件工程第七次作业敏捷冲刺3
    两只小熊队高级软件工程第七次作业敏捷冲刺2
  • 原文地址:https://www.cnblogs.com/bjm1/p/10252841.html
Copyright © 2020-2023  润新知