1. MyBatis 是什么?
MyBatis 是一个流行的、轻量级的 Java 持久层框架,它简化了与数据库交互和 SQL 映射的过程。MyBatis 取代了 JDBC 原始 API 的大量繁琐工作,允许开发者将更多的精力放在业务逻辑上而不是处理数据访问细节。
mybatis 是一款优秀的 ORM 持久化 框架
- ORM
- Object - Relation-Mapping
- Object Java对象(类)--关系型数据库(表)--映射配置
- 用來映射 类名和表名、属性和字段、Java类型和数据库类型等信息
- 持久化
- 瞬时状态转为持久状态过程-----插入 更新 删除操作
- 持久状态转为瞬时状态过程---- 查询
- 持久化:瞬时状态和持久状态相互转化的过程,称之为持久化
- 序列化
- ObjectInputStreame 和 ObjectOutputStream
- 把对象状态转为可存储或可传输的状态,称之为序列化
- 把可存储或可传输的状态转为对象状态,称之为反序列化
- 框架
- 一个半成品
2. 搭建 Mybatis项目
准备:
- 创建数据库和表
- Maven
- 传统 Web项目 ,把 jar 手动拷贝到 WEB-INF/lib
- Maven Web项目,只需配置 pom.xml 即可,自动下载和导入、管理 jar
- jar 多
- 版本不一致
3. Maven
Maven 是一款优秀 Java 自动构建工具
- 源码--编译--测试--部署--安装等到服务器
- 同类: Ant、Gradle
安装配置
-
下载 :Maven – Download Apache Maven
-
配置:
-
解压到非中文目录下
-
配置 Maven_Home 安装目录下的 conf 目录下的 settings.xml 配置文件,配置本地仓库的目录
-
例如:\apache-maven-3.9.0\conf\settings.xml
-
本地仓库:存放 bar 包的位置目录
D:/Soft/maven/repo
-
-
在 idea 开发工具中配置自定义的 Maven 目录
-
File --Settings--搜索 Maven 进行配置
安装目录的配置和配置文件settings.xml配置,自动定位到上一步中的仓库目录
-
注意:为了防止每次新建工程时,又重新恢复到默认的C盘目录,建议配置 “新建项目设置”
-
-
-
本地仓库、中央仓库、私服仓库
.本地仓库(Local Repository):
- 这是每个开发者个人电脑上的一个目录,用来存储从远程仓库下载的所有 jar 包和其他构建工件。当开发者构建项目时,Maven 或 Gradle 首先会在本地仓库查找所需的依赖。如果本地仓库没有该依赖,就会尝试从远程仓库下载,并将下载后的文件保存到本地仓库供后续使用。这样可以减少不必要的网络传输,提高构建速度。
- 中央仓库(Central Repository):
- 中央仓库是由 Maven 社区维护的一个大型公共仓库,位于 Central Repository: ,其中包含了大量开源项目的构件(artifacts)。大多数流行的开源Java库都可以在这个仓库中找到。当开发者配置了指向中央仓库的地址后,构建工具会自动从这里获取未在本地仓库找到的依赖。
- 私服仓库(Private/Nexus Repository):
- 私服是指组织内部搭建的私有仓库服务器,如 Sonatype Nexus 或 JFrog Artifactory。它通常作为中央仓库的代理或补充,可缓存中央仓库的内容,同时也可以用来托管企业内部开发的私有构件,便于团队成员之间共享和管理这些构件。私服可以设置为优先于中央仓库被访问,从而加速依赖下载,同时也有利于保护敏感信息和控制版本发布流程。
-
配置阿里镜像
问题:每次在下载第一次使用的jar时,都会去访问中央仓库,国外的服务器,速度相对较慢
所以为了提高下载速度,我们可以修改默认下载服务器的url ,更换为阿里的服务器
新建 Maven 项目
- File -- New Project -- Empty Project
- 新工程下右键,new Module 选择 Maven
- 注意:新的 Maven 目录
- 约定大于配置
- 源代码位置: src/main/java
- 资源文件位置:src/main/resources
- 测试代码的目录:src/test/java
- 自动化和半自动化
- 自动化代表是Hibernate 半自动化代表 Mybatis
- 自动化优点开发效率高,代码量小、简单、不需要学习SQL、入门简单;缺点:缺失了灵活性
- 半自动化优点:灵活,运行效率相对较高,省略了自动生成SQL过程。 缺点:开发效率相对较低,代码量相对大写,需要学习SQL,复杂些
4. Mybatis 开发步骤
0. 创建数据库和表
先在 MySQL 创建 mydb 数据库
在创建表 emp
SQL:
create database mydb;
use mydb;
create table dept(deptno int primary key auto_increment,dname varchar(20)
);
create table emp(empno int primary key auto_increment,salary float,ename varchar(20),deptno int,hiredate date
);
private Integer empno;private String ename;private Float salary;private Integer deptno;private Date hiredate;
1. 配置依赖
在pom.xml中配置 mysql驱动依赖和mybatis依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>mybatis01</artifactId><version>1.0-SNAPSHOT</version><!--坐标--><dependencies><!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.29</version></dependency><!-- MyBatis 依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.9</version></dependency></dependencies>
</project>
2. 新建和配置mybatis配置文件
- 可以通过官网拷贝https://mybatis.org/mybatis-3/zh/getting-started.html
- 位置:在src/main/resources 下新建 mybatis-coinfig.xml (名字可以自己定义)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="devA"><environment id="devA"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="username" value="root"/><property name="password" value="root"/><property name="url" value="jdbc:mysql://127.0.0.1:3306/mydb"/><property name="driver" value="com.mysql.cj.jdbc.Driver"/></dataSource></environment>
<!-- <environment id="devB"><transactionManager type=""></transactionManager><dataSource type=""></dataSource></environment>--></environments>
</configuration>
3. 编写实体类
- 和表结构对应
- 可以使用 Lombok 简化 setter 和 getter
@Data
public class Emp {private Integer empno;private String ename;private Float salary;private Integer deptno;private Date hiredate;}
4. 映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wdzl.dao.MySpace"><select id="getCount" >select count(*) from emp</select>
</mapper>
注意再更新配置文件,配置关联
<mappers><mapper resource="mapper/EmpMapper.xml"/>
</mappers>
5. 编写代码
SqlSessionFactoryBuilder
SqlSessionFactory
SqlSession
public class TestMyBatis {public static void main(String[] args) {// 解析 xml 配置和映射文件SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();try {InputStream is = Resources.getResourceAsStream("mybatis-config.xml");// 创建sqlSessionFactorySqlSessionFactory sqlSessionFactory = builder.build(is);// 创建 sqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();//执行SQLInteger count = sqlSession.selectOne("com.wdzl.dao.MySpace.getCount");System.out.println(">>>>==="+count);// 关闭sqlSession.close();} catch (Exception e) {throw new RuntimeException(e);}}
}