Mybatis学习笔记

Posted 想成为大师啊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis学习笔记相关的知识,希望对你有一定的参考价值。

环境:

  • JDK 1.8
  • mysql 5.7(Mysql 8.0)
  • maven 3.6.1
  • IDEA

回顾:

  • JDBC
  • Mysql
  • Java基础
  • Maven
  • Junit

SSM框架:配置文件的。最好的方式:看官方文档


1、简介

Mybatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。Mybatis可以使用简单的XML或注解来配置和映射原生类型、接口和Java的POJO(Plain Old Java Objects,普通老式Java对象)为数据库中的记录

Mybatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了Google Code,并且改名为Mybatis。2013年11月迁移到Github

如何获得Mybatis

  • Maven仓库
    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.9</version>
    </dependency>
    
  • Github:https://github.com/mybatis/mybatis-3/releases
  • 中文文档:https://mybatis.org/mybatis-3/zh/index.html

持久化

  • 数据持久化:持久化就是将程序的数据在持久状态和瞬时状态转化的过程
    • 瞬时状态:类似于内存,断电即失
    • 持久状态:只要不删库,数据可以一直在
  • 数据库(JDBC),IO文件持久化
  • 生活:冷藏、罐头、…
  • 持久化的原因:有一些对象,不能让他丢掉(类似生活中的微信、支付宝余额,王者的点卷,…),主要原因:内存太贵了

持久层

  • Dao层、Service层、Controller层
    • 完成持久化工作的代码块
    • 层是界限十分明显

为什么需要Mybatis

  • 方便
  • 传统的JDBC代码太复杂了;因为简化,所以框架,自动化
  • 帮助程序猿将数据存入到数据库中
  • 不用Mybatis也可以。更容易上手

优点:

  • 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件。易于学习,易于使用。通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
  • 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。
    sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。
  • 解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
  • 提供映射标签,支持对象与数据库的orm字段关系映射。
  • 提供对象关系映射标签,支持对象关系组建维护。
  • 提供xml标签,支持编写动态sql。

最重要的一点:使用的人多!!!


2、第一个Mybatis程序

思路:搭建环境 -> 导入Mybatis -> 编写代码 -> 测试

搭建环境

  • 搭建数据库
    • 建库:
      CREATE DATABASE 'mybatis';
      USE 'mybatis';
      
    • 建表:
      CREATE TABLE 'user'(
      	'id' INT(20) NOT NULL PRIMARY KEY,
      	'name' VARCHAR(30) DEFAULT NULL,
      	'pwd' VARCHAR(30) DEFAULT NULL
      )ENGINE=INNODB DEFAULT CHARSET=utf8;
      
    • 插入数据:
      INSERT INTO 'user' ('id', 'name', 'pwd') VALUES
      (1, 'root', '123456'),
      (2, 'huake', '123'),
      (3, 'zya', '123456')
      

数据库的几种引擎:

  • MyISAM:默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。注意,通过更改STORAGE_ENGINE配置变量,能够方便地更改MySQL服务器的默认存储引擎。
  • InnoDB:用于事务处理应用程序,具有众多特性,包括ACID事务支持。(提供行级锁)
  • BDB:可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性。
  • Memory:将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。
  • Merge:允许MySQL
    DBA或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为1个对象引用它们。对于诸如数据仓储等VLDB环境十分适合。
  • Archive:为大量很少引用的历史、归档、或安全审计信息的存储和检索提供了完美的解决方案。
  • Federated:能够将多个分离的MySQL服务器链接起来,从多个物理服务器创建一个逻辑数据库。十分适合于分布式环境或数据集市环境。
  • Cluster/NDB:MySQL的簇式数据库引擎,尤其适合于具有高性能查找要求的应用程序,这类查找需求还要求具有最高的正常工作时间和可用性。
  • Other:其他存储引擎包括CSV(引用由逗号隔开的用作数据库表的文件),Blackhole(用于临时禁止对数据库的应用程序输入),以及Example引擎(可为快速创建定制的插件式存储引擎提供帮助)。

一般来说不使用事务的话,请使用MyISAM引擎,使用事务的话,一般使用InnoDB

以上是关于Mybatis学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

发现laravel简单易学,贼欢喜,学习笔记如下

10.29Mybatis框架学习

mybatis学习记录------1

MyBatis学习笔记11:解决字段名和属性的映射关系

Mybatis学习笔记导航

springmvc+mybatis学习笔记(汇总)