• 三种查询方式,由<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. Django用户头像上传

    1 将文件保存到服务器本地 upload.html ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <!DOCTYPE html> <html ...

  2. scrapy基础知识之 scrapy 三种模拟登录策略:

    注意:模拟登陆时,必须保证settings.py里的 COOKIES_ENABLED (Cookies中间件) 处于开启状态 COOKIES_ENABLED = True或 # COOKIES_ENA ...

  3. SqlCommand的Parameters的用法

    SqlCommand的Parameters的用法 可以用的SqlCommand的Parameters的方法SqlCommand cmd=new ("insert into notice(ly ...

  4. python3+pyQt5+QtDesignner实现窗口化猜数字游戏

    描述:使用QtDesignner设计界面,pyQt5+python3实现主体方法制作的猜数字游戏. 游戏规则:先选择游戏等级:初级.中级.高级.魔鬼级,选择完游戏等级后点击“确定”,然后后台会自动生成 ...

  5. python基础认识(一)

    这些日子以来,新闻铺天盖地的都是人工智能,那么借着这股潮流,python也随之火起来了,现在的python不仅仅可以进行人工智能领域的开发.还可以进行web.爬虫等领域的运用.因此,我认为作为一个紧跟 ...

  6. 使用http3访问服务

    用到的包:import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response; 主要代码: try { //创建OkH ...

  7. Spring Boot 邮件发送的 5 种姿势!

    邮件发送其实是一个非常常见的需求,用户注册,找回密码等地方,都会用到,使用 JavaSE 代码发送邮件,步骤还是挺繁琐的,Spring Boot 中对于邮件发送,提供了相关的自动化配置类,使得邮件发送 ...

  8. OpenCV多版本切换和配置--opencv 安装与卸载、添加 opencv_contrib modules 以及 OpenCv 多版本切换

    1. 查看安装Opencv的版本.以及libs和cflags $ pkg-config --modversion opencv $ pkg-config --cflags opencv // 编译链接 ...

  9. Java编程思想:序列化基础部分

    import java.io.*; import java.util.Date; import java.util.Random; public class Test { public static ...

  10. Image Classification

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...