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. CentOS7虚拟机配置git仓库(配置虚拟机,网络,git仓库,windows端git访问)

    想要达成的目的:从windows使用git访问CentOS7服务器上搭建的git仓库 用到的软件: (1)VMware-workstation-full-15.5.0-14665864.exe (2) ...

  2. 二十、Pod的存储之Configmap

    Pod 的存储之Configmap 一.Configmap介绍 ​ConfigMap 功能在 Kubernetes1.2 版本中引入,许多应用程序会从配置文件.命令行参数或环境变量中读取配置信息.Co ...

  3. iptables和firewalld基础

    1.四表五链概念: filter表 过滤数据包 Nat表 用于网络地址转换(IP.端口) Mangle表 修改数据包的服务类型.TTL.并且可以配置路由实现QOS Raw表 决定数据包是否被状态跟踪机 ...

  4. Codeforces Round #805 (Div. 3)E.Split Into Two Sets

    题目链接:https://codeforces.ml/contest/1702/problem/E 题目大意: 每张牌上面有两个数字,现在有n张牌(n为偶数),问能否将这n张牌分成两堆,使得每堆牌中的 ...

  5. java学习之Cookie与Session

    0x00前言 1.会话:一次会话中包含了多次请求和响应 2.功能:一次会话的范围内的多次请求间,共享数据 3.方式: (1)客户端会话技术:cookie (2)服务端会话技术:Session 0x01 ...

  6. Codeforces Round #817 (Div. 4)

    CF传送门 因为洛谷题库未更新,所以给出的题面都是CF的. 现场打真是太卡了(梯子挂了,codeforc.es也崩了),所以五六分钟才打开题目 \(qwq\) A. Spell Check 萌萌题,把 ...

  7. 注册IBMlinuxone并使用xshell登陆

    登陆地址:https://linuxone.cloud.marist.edu/#/login 注册地址:https://linuxone.cloud.marist.edu/#/register?fla ...

  8. HDLBits答案——Getting started

    Getting started 1 Step one module top_module( output one ); // Insert your code here assign one = 1' ...

  9. layui table表格使用table.resize()方法 重置表格尺寸

    解决 使用layui中的table表格重置表格尺寸 问题 表格的高度共有两种写法 相对应的就有两种解决方法 第一种 当表格高度设置为固定高度时,改变表格高度使用 tableIns=table.rend ...

  10. i春秋xss平台

    点开是个普普通通的登录窗口,没有注册,只有登录,抓住包也没获取什么有用的信息,看了看dalao的wp才知道怎么做,首先抓包然后修改参数的定义来让其报错,pass原本的应该为整数,pass[]=就可以让 ...