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



原文地址:https://www.cnblogs.com/bjm1/p/10252841.html