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学习笔记的主要内容,如果未能解决你的问题,请参考以下文章