Mybatis

1.介绍

Mybatis是支持SQL查询,存储和映射的持久层框架。使用时消除了JDBC代码和参数的设置以及对结果集的封装

Mybatis可以使用注解来进行配置和进行映射,将Mapper和Pojo映射为数据库中的记录

2.Mybatis优势

  1. 消除了JDBC的打码冗余
  2. 简单易学,可以与数据库协同工作
  3. 简单的接收SQL语句
  4. 可以提供第三方缓存的集成支持
  5. 性能更好

3.Mybatis基本使用步骤

1.加入Maven依赖

点击查看代码
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</version>
</dependency>

2. 创建Dao(Mapper)接口,定义操作数据库内容

  1. 创建Mapper文件

    1. 也叫做映射文件,分别为XXXMapper.java和XXXMapper.xml
    2. XXXMapper.java文件中存放的是方法名称

>

  3.XXXMapper.xml 里面存放的是Sql语句



4.创建Mybatis-config.xml配置文件,在resources中

1. 连接数据库

2. 指定mapper文件的内容

Mybatis动态代理

  1. 理解动态代理
    1. Mybatis帮忙创建dao(mapper)接口的实现类,在实现类中调用SqlSession的方法执行sql语句。
  2. 使用动态代理的要求
  • dao接口和mapper文件放在一起
  • dao和mapper文件名称一致
  • mapper文件中的namespace的值是dao接口的全限定名称
  • mapper文件中的select、delete、update等的id是接口中的方法名称
  • dao接口中不适用重载方法

理解参数

  1. 一个简单类型的参数#
  2. 多个简单类型的参数,使用@Param("自定义名称")
  3. 使用一个java对象,对象的属性值作为mapper文件找到的参数,#
  4. 使用参数位置:语法:#{arg0},#{arg1} ,mybatis3.4之前使用的是 #{0},#
  5. 使用map作为参数,#

#和$的区别

  1. (#)是占位符,表示列值,放在等号的右侧
  2. ($)是占位符,表示字符串连接,sql连接成一个字符串
  3. (#)占位符使用的jdbc指定PerparedStatement对象执行sql语句效率高,没有sql语句注入的风险
  4. $使用的是Statement对象执行sql,效率低,有sql注入的风险

Mybatis返回结果

  1. resultType:表示sql语句的执行结果转化为java对象的类型
  2. 类型的全限定名称
  3. 定义别名:1.mybatis主配置文件中定义;2.;3.使用注解@Alias
  4. resultMap:自定义类名和java对象属性名的关系
  5. like:1.在java代码中指定like的内容;2.在mapper中拼接like

Mybatis的学习与理解的更多相关文章

  1. Mybatis架构学习

    Mybatis架构学习 MyBatis 是支持定制化 SQL.存储过程以及高级映射的持久层框架.MyBatis 封装了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.可以对配置和原生Map使用 ...

  2. Spring+SpringMVC+MyBatis深入学习及搭建(二)——MyBatis原始Dao开发和mapper代理开发

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6869133.html 前面有写到Spring+SpringMVC+MyBatis深入学习及搭建(一)——My ...

  3. Spring+SpringMVC+MyBatis深入学习及搭建(六)——MyBatis关联查询

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6923464.html 前面有将到:Spring+SpringMVC+MyBatis深入学习及搭建(五)--动 ...

  4. Spring+SpringMVC+MyBatis深入学习及搭建(七)——MyBatis延迟加载

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6953005.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(六)——My ...

  5. Spring+SpringMVC+MyBatis深入学习及搭建(九)——MyBatis和Spring整合

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6964162.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(八)--My ...

  6. Spring+SpringMVC+MyBatis深入学习及搭建(十)——MyBatis逆向工程

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6973266.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(九)--My ...

  7. Spring+SpringMVC+MyBatis深入学习及搭建(十六)——SpringMVC注解开发(高级篇)

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7085268.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十五)——S ...

  8. mybatis自己学习的一些总结

    曾经一直在使用spring的JDBCTEMPLATE和hibernate做项目.两个都还不错,spring的jdbctemplate用起来比較麻烦,尽管非常easy.而hibernate呢,用起来非常 ...

  9. Mybatis代码学习

    Mybatis架构学习 MyBatis 是支持定制化 SQL.存储过程以及高级映射的持久层框架.MyBatis 封装了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.可以对配置和原生Map使用 ...

  10. 【log4j】的学习和理解 + 打印所有 SQL

    log4j 1.2 学习和理解 + 打印所有 SQL 一.基本资料 官方文档:http://logging.apache.org/log4j/1.2/manual.html(理解基本概念和其他) lo ...

随机推荐

  1. nrf9160做modem——测试连接阿里云

    简介:在前面有讲过如何使用nrf9160去连接一个云,然后进行发布订阅信息,但是当时连接的是一个免费的测试云,在国内的话许多人想要连接阿里云或者华为云,下面就来测试一下连接阿里云.这里为什么要和上一篇 ...

  2. 前后端分离项目(十一):实现"删"功能(前后端)

    好家伙,本篇介绍如何实现"删"功能 来看效果,  数据库 (自然是没什么毛病) "增"搞定了,其实"删"非常简单 (我不会告诉你我是为了水一 ...

  3. zabbix-钉钉报警部署

    zabbix-钉钉报警部署 1. 流程说明 申请钉钉机器人 获取Webhook配置安全设置 获取钉钉号 使用脚本(shell/python)调用钉钉接口: python 输入收件人 信息 配置发件人 ...

  4. 2022春每日一题:Day 17

    今天打CF去了,但是很菜,只做了三题.赛后一分钟做出了第四题,wa了,改了一下下,过了 第一题就是对应的小写字母在大写字母前出现. 第二题直接dfs. 第三题dp,f[i][j]表示以第i个数开始加了 ...

  5. PHP 代码解一元二次方程

    1 function php_getSolutionOVQE($a,$b,$c=0){ 2 $x1=0; 3 $x2=0; 4 $detal=0; 5 if($a==0 && $b== ...

  6. uwsgi 启动配置文件

    # uwsig使用配置文件启动 [uwsgi] # 项目目录 chdir=/myfiles/xxx/xxx/my_project # 指定项目的application module=my_projec ...

  7. C++期末考试题库

    哈尔滨商业大学计算机专业C++期末考试题库 下载:题库 示例: 一.单选题:1.能作为 C ++程序的基本单位是( C )A .字符 B .语句 C .函数 D .源程序文件2.程序中主函数的名字为( ...

  8. JDBC Request 中 Variable names 以及 Result variable name 的使用方法

    1.Variable name 的使用方法 设置好JDBC Connection Configuration.JDBC Request  具体配置百度 如果数据库查询的结果不止一列那就在Variabl ...

  9. 【每日一题】【递归+int型返回值最后不接收】110. 平衡二叉树-211231/220221

    给定一个二叉树,判断它是否是高度平衡的二叉树. 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 . 答案: public class Solution ...

  10. 【Scala复习】基础知识、函数式编程、面向对象、集合、隐式转换、模式匹配、泛型

    重点版 详细版 基础知识常量和变量尽量使用常量val别使用变量var变量的命名数字字母下划线_特殊的用法数据类型java基本数据类型引用数据类型scalaAny-对象的根类AnyVal-数值类型Lon ...