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. SpringCloud怎么迈向云原生?

    很多公司由于历史原因,都会有自研的RPC框架. 尤其是在2015-2017期间,Spring Cloud刚刚面世,Dubbo停止维护多年,很多公司在设计自己的RPC框架时,都会基于Spring Clo ...

  2. Linux正则表达式与grep

    bash是什么 bash是一个命令处理器,运行在文本窗口中,并能执行用户直接输入的命令 bash还能从文件中读取linxu命令,称之为脚本 bash支持通配符.管道.命令替换.条件判断等逻辑控制语句 ...

  3. scrapy 如何使用代理 以及设置超时时间

    使用代理 1. 单文件spider局部使用代理 entry = 'http://xxxxx:xxxxx@http-pro.abuyun.com:xxx'.format("帐号", ...

  4. Oracle数据库允许最大连接数

    1.查看当前的数据库连接数 SQL> select count(*) from v$process ; 2.数据库允许的最大连接数 SQL> select value from v$par ...

  5. C#where关键字约束

    where关键字的用法 where关键词一个最重要的用法就是在泛型的声明.定义中做出约束. 约束又分为接口约束.基类约束.构造函数约束.函数方法的约束. 1.接口约束,泛型参数必须实现相应的接口才可以 ...

  6. I Love Big Numbers !(高精度)

    题目链接 题意: 多组数据输入也就是C++中的: int n; while (cin >> n) { 代码块 } 对于每个数据输出其阶乘的各位上的数字之和.大眼一看,没有思路,那就百度把. ...

  7. Kubernetes_手把手打镜像并运行到k8s容器上(亲测可用)

    一.前言 本文使用两个机器 192.168.100.150 是master节点,192.168.100.151 是node1 节点,如下: 演示三个示例,第一个示例wordpress博客系统是指将别人 ...

  8. 【DL论文精读笔记】ResNet

    Abstract 利用残差学习架构释放深度 152层深度是VGG的8倍,且复杂度更低 ImageNet上的错误率3.57% 在ILSVRC和2015COCO竞赛,在多项任务拿到第一 3.1 Intro ...

  9. springboot +mybatis (@autowried 注入mapper :爆红)

    问题描述:Could not autowire. No beans of XXXXmapper' type found 问题相关页面: 解决方式一:@mapper  接口计入@Repository 解 ...

  10. docker给已存在的容器添加或修改端口映射

    简述: 这几天研究了一下docker, 发现建立完一个容器后不能增加端口映射了,因为 docker run -p 有 -p 参数,但是 docker start 没有 -p 参数,让我很苦恼,无奈谷歌 ...