文章目录
Mabatis入门
1.简介
1.1.什么是Mybatis
- MyBatis是一款优秀的持久化框架
- 它支持定制化SQL、存储过程以及高级映射
- Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果数据集
- MyBatis可以使用简单的XML或注解来配置和映射原生类型、接口和Java的POJO为数据库中的记录。
- Mybatis本身apache的一个开源项目iBatis,2010移动google code并更名为MyBatis。
- 获取Mybatis框架,maven导入即可,使用使用人数最多的那个
1.2.持久化
数据持久化
- 持久化就是将程序的数据在持久状态和顺势状态的转化过程
- 内存:断电即失
- 数据库(JDBC),io文件持久化。
- 生活例子:罐头
1.3.持久层
Dao层,Service层,Controller层
- 完成持久化工作的代码块
- 层界限十分明显
1.4为什么需要Mybatis
- 将数据存入数据库
- 方便
- 传统的JDBC代码太复杂了。
- 不用Mybatis也可以。更容易上手。
- 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
- 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。
- 解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
- 提供映射标签,支持对象与数据库的orm字段关系映射
- 提供对象关系映射标签,支持对象关系组建维护
- 提供xml标签,支持编写动态sql。 [2]
2.搭建一个Mybatis程序
思路:搭建环境–>导入Mybatis–>编写代码–>测试!
2.1.搭建一个环境
新建项目
-
新建一个普通的mavan项目
-
删除src目录
-
导入maven依赖
<dependencies> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <!--设置mysql数据驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.16</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <!--设置mybatis依赖--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <!-- https://mvnrepository.com/artifact/junit/junit --> <!--导入junit依赖--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>
2.2.创建一个模块
-
编写mybatis核心配置文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <!--核心配置文件--> <!--连接数据库--> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <!--版本大于8的需要设置时区,即在后面添加&serverTimezone=UTC"--> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="z231245.."/> </dataSource> </environment> </environments> </configuration>
-
编写mabatis工具类
private static SqlSessionFactory sqlSessionFactory; static { //获取Mybatis第一步:获取sqlSessionFactory对象 String resource = "mybatis-config.xml"; //InputStream inputStream = null; try { InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } /*有了sqlSessionFactoru,就可以获得SqlSession的实例 * SqlSession完全包含了面向数据库执行SQL命令所需的所有方法 **/ /** * @return sqlSession */ public static SqlSession getSqlSession() { return sqlSessionFactory.openSession(); }
2.3.编写代码
-
poji下的类,及数据库的对应的数据类型
package com.zeng.pojo; /** * @author zeng * @data 2021/06/30 15:51 */ public class User { private int id; private String name; private String pwd; public User(int id, String name, String pwd) { this.id = id; this.name = name; this.pwd = pwd; } public User() { } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", pwd='" + pwd + '\'' + '}'; } }
-
DAO接口
public interface UserDao {