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

mybatis学习笔记(二)的更多相关文章

  1. Mybatis学习笔记二

    本篇内容,紧接上一篇内容Mybatis学习笔记一 输入映射和输出映射 传递简单类型和pojo类型上篇已介绍过,下面介绍一下包装类型. 传递pojo包装对象 开发中通过可以使用pojo传递查询条件.查询 ...

  2. mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现

    项目结构  基础入门可参考:mybatis学习笔记(一)-- 简单入门(附测试Demo详细过程) 开始体验 1.新建项目,新建类MybatisUtil.java,路径:src/util/Mybatis ...

  3. MyBatis学习笔记(二)——使用MyBatis对表执行CRUD操作

    转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4262895.html 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用My ...

  4. MyBatis学习笔记(二) 关联关系

    首先给大家推荐几个网页: http://blog.csdn.net/isea533/article/category/2092001 没事看看 - MyBatis工具:www.mybatis.tk h ...

  5. MyBatis学习笔记(二) Executor

    一.概述 当我们打开一个SqlSession的时候,我们就完成了操作数据库的第一步,那MyBatis是如何执行Sql的呢?其实MyBatis的增删改查都是通过Executor执行的,Executor和 ...

  6. Mybatis学习笔记(二) —— mybatis入门程序

    一.mybatis下载 mybaits的代码由github.com管理,下载地址:https://github.com/mybatis/mybatis-3/releases 下载完后的目录结构: 二. ...

  7. mybatis学习笔记二(接口注解)

    直接上代码,全部在代码里讲解. 1.实体类 package com.home.entity; /** * 此类是:user实体类 * @author hpc * @2017年1月10日下午9:36:5 ...

  8. MyBatis学习笔记二:MyBatis生产中使用环境搭建

    这里是在上一个环境的基础上修改的,这里就不在给出所有的配置,只给出哪里修改的配置 1.修改POJO对象为注解方式 2.创建Dao层接口 package com.orange.dao; import c ...

  9. mybatis学习笔记(四)-- 为实体类定义别名两种方法(基于xml映射)

    下面示例在mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现 Demo的基础上进行优化 以新增一个用户为例子,原UserMapper.xml配置如下: < ...

  10. Mybatis学习笔记之二(动态mapper开发和spring-mybatis整合)

    一.输入映射和输出映射 1.1 parameterType(输入类型) [传递简单类型] 详情参考Mybatis学习笔记之一(环境搭建和入门案例介绍) 使用#{}占位符,或者${}进行sql拼接. [ ...

随机推荐

  1. HDU 4763:Theme Section(KMP)

    http://acm.hdu.edu.cn/showproblem.php?pid=4763 Theme Section Problem Description   It's time for mus ...

  2. Ceph Plugin - Dashboard - By Anoyi

    ▶ 部署 Dashboard 1.安装 ceph-mgr-dashboard yum install -y ceph-mgr-dashboard 2.禁用 SSL ceph config set mg ...

  3. C# 使用表达式树获取特性的值

    一.定义特性 /// <summary> /// 定义特性 /// </summary> [AttributeUsage(AttributeTargets.Field | At ...

  4. MyBatis从入门到精通(十一):MyBatis高级结果映射之一对多映射

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解MyBatis中如何使 ...

  5. jekyll搭建个人博客1

    目录 配置环境 使用模板 配置环境 简介 jekyll是一个简单的免费的,生成静态网页的工具,不需要数据库支持.但是可以配合第三方服务,例如Disqus.最关键的是jekyll可以免费部署在Githu ...

  6. Specifying the Code to Run on a Thread

    This lesson shows you how to implement a Runnable class, which runs the code in its Runnable.run() m ...

  7. CAD2014学习笔记-常用绘图命令和工具

    基于 虎课网huke88.com CAD教程 圆的绘制 快捷键c:选定圆心绘制半径长度的圆 快捷键c + 命令行输入 3p(三点成圆) 2p(两点成圆) t(选定两个圆的切点绘制与两圆相切的圆,第三部 ...

  8. I/O:DataInput

    DataInput: boolean readBoolean() :读取一个输入字节,如果该字节不是零,则返回 true,如果是零,则返回 false. byte readByte() :读取并返回一 ...

  9. Maven(三)使用 IDEA 创建一个 Maven 项目

    利用 IDEA 创建一个 Maven 项目 创建 Maven 项目 选择 File --> New --> Project 选中 Maven 填写项目信息 选择工作空间 目录结构 ├─sr ...

  10. 钉钉E应用(小程序)之日历

    唠叨几句:其实钉钉E应用的编写类似支付宝小程序(毕竟是阿里爸爸下的产业),而支付宝小程序又是chao xi 微信小程序(只不过人家是wxml / wxss ,他是 axml / acss罢了),这三者 ...