一、认识MyBatis

MyBatis是一个开源的Java持久层框架,用于简化数据库访问的过程。它提供了一种将数据库操作与Java对象之间的映射关系进行配置的方式,从而可以通过编写简单的XML或注解来执行数据库操作。MyBatis的主要目标是将数据库操作与Java代码的耦合度降到最低,同时提供灵活性和高度的可定制性。它采用了一种称为"对象关系映射"(Object-Relational Mapping,ORM)的技术,将数据库表中的记录映射为Java对象,从而使开发人员可以使用面向对象的方式进行数据库操作。

MyBatis的核心组件包括:

1. SqlSessionFactory:用于创建SqlSession的工厂类。SqlSession是与数据库交互的主要接口,它提供了执行SQL语句和管理事务的方法。

2. Mapper接口:定义了与数据库交互的方法,通过在Mapper接口中编写SQL语句的映射,可以实现数据库操作的封装和重用。

3. Mapper XML文件:用于将Mapper接口中的方法与SQL语句进行映射。在XML文件中,可以编写SQL语句,并使用占位符和参数映射来实现动态SQL查询。

4. 配置文件:用于配置MyBatis的行为和属性,包括数据库连接信息、映射文件的位置等。

使用MyBatis,开发人员可以通过简单的配置和编写少量的代码,实现数据库的增删改查操作。它具有灵活性和可定制性,可以适应各种复杂的数据库操作需求。此外,MyBatis还提供了对事务管理、缓存和高级查询功能的支持,使得数据库访问更加方便和高效。

二、MyBatis环境搭建

1、开发工具:Idea、mysql

2、具体操作:

a.创建Maven项目:在IntelliJ IDEA中创建一个新的Maven项目。选择"File" -> "New" -> "Project",然后选择"Maven"作为项目类型,并按照向导完成项目的创建。(成功创好的效果如下)

b.添加MyBatis依赖:

在项目的pom.xml文件中添加MyBatis的依赖项。

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">

4.0.0

org.example

untitled

1.0-SNAPSHOT

8

8

org.mybatis

mybatis

3.5.10

junit

junit

4.13.2

test

mysql

mysql-connector-java

8.0.27

org.apache.maven.plugins

maven-archetype-plugin

3.2.1

保存pom.xml文件后,Maven会自动下载并导入所需的依赖项。(注意version的版本具体可以查看外部库)

tips: Maven插件是用于扩展和定制Maven构建过程的工具。maven-archetype-plugin插件用于创建项目的原型(archetype),它可以根据预定义的模板生成项目的基本结构和配置文件。若出现构建插件失败请检查插件版本,并通过删除原版本插件联网重构的方式完成依赖或插件配置

以上是本人所用到的插件和依赖(可以作为模板多次使用)

c.创建MyBatis配置文件:

在项目的src/main/resources目录下创建一个名为mybatis-config.xml的文件和一个名为db.properties的文件。在两个文件中配置MyBatis的相关设置,例如数据库连接信息、映射文件的位置等。以下是一个示例:

PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-config.dtd">

所引入外部db.properties 后缀一定不能错(properties)代码:(注意连接数据库的版本,这里所用的是1.8版本的所以所用驱动为com.mysql.cj.jdbc.Driver,对应的用户名和密码记得改为自己的)

db.properties

mysql.driver=com.mysql.cj.jdbc.Driver

mysql.username=root

mysql.password=root

mysql.url=jdbc:mysql://localhost:3306/你的数据库名?serverTimezone=UTC&characterEncoding=utf8

d.创建user实体,编写Java代码,

这里编写Main类,该类用于封装user的属性

根据所创建的数据库(请提前建好数据库)的内容构造

package org.example;

public class Main {

private int aId;

private String userName;

private String passWord;

public int getaId() {

return aId;

}

public void setaId(int aId) {

this.aId = aId;

}

public String getUserName() {

return userName;

}

public String getPassWord() {

return passWord;

}

public void setPassWord(String passWord) {

this.passWord = passWord;

}

public void setUserName(String userName) {

this.userName = userName;

}

@Override

public String toString() {

return "Main{" +

"aId=" + aId +

", userName='" + userName + '\'' +

", passWord='" + passWord + '\'' +

'}';

}

}

//注意idea中快捷键alt+ins的使用

//用途:

//数据模型: 它可能用作数据模型,表示与数据库表或其他数据源相关的实体。在这种情况下,它存储了一个用户的标识符、用户名和密码。

//DTO(Data Transfer Object): 作为在不同层之间传递数据的对象,例如在业务逻辑层和持久层之间。

//JavaBean: 提供了一种符合JavaBean规范的简单Java类,具有私有属性、公共访问方法和重写的 toString 方法。

//总的来说,这个类的存在是为了提供一个表示用户或相关数据的简单Java对象,并为这些对象提供基本的访问和操作方法。

e.创建关键的映射文件

(由于一个项目的映射文件不止一个这里在resources目录下创建文件夹mapper在里面存放映射文件)具体位置如下图所示的UserMapper.xml文件,该文件主要用于实现SQL语句和Java对象之间的映射,使SQL语句查询出来的关系型数据能够被封装成Java对象,记得完成后在mybatis-config.xml映射文件中添加UserMapper.xml映射文件的配置如下:

             

在项目中的位置

具体代码如下

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

f.编写测试类:

在项目的src/test /java目录下创建Test包,在Test包下创建UserTest类用于程序测试

package com.main.test;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import org.junit.Test;

import org.apache.ibatis.io.Resources;

import java.io.InputStream;

public class UserTest {

@Test

public void findById() throws Exception{

//获取核心配置文件

InputStream is =Resources.getResourceAsStream("mybatis-config.xml");

//创建sqlSessionFactory工厂对象

SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);

//创建sqlSession对象

SqlSession sqlSession =sqlSessionFactory.openSession();

//执行sqlSession语句,注意sql语句的唯一标识符namespace.id

Object user=sqlSession.selectOne("org.example.Main.findById",2);

System.out.println(user);

//释放资源

sqlSession.close();

}

}

// 类定义:

//public class UserTest {

// 这声明了一个名为UserTest的Java类。用于测试某些功能的测试类,可能涉及MyBatis和数据库操作。

//

// 测试方法:

//

//

// @Test

// public void findById() throws Exception {

// 这个方法被注解为@Test,表明它是一个JUnit测试方法。方法的名称表明它测试了通过用户ID查找用户的功能。

//

// 加载配置:

//

//

// InputStream is = Resources.getResourceAsStream("mybatis-config.xml");

// 这一行试图加载名为"mybatis-config.xml"的MyBatis配置文件作为输入流。用方法

// Resources.getResourceAsStream来加载文件。

// 构建SqlSessionFactory:

// SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);

// 使用SqlSessionFactoryBuilder,它构建了一个SqlSessionFactory对象。这个工厂负责创建SqlSession实例,用于与数据库交互。

// 打开SqlSession:

// SqlSession sqlSession = sqlSessionFactory.openSession();

// 这一行从SqlSessionFactory创建了一个新的SqlSession。SqlSession是一个MyBatis接口,用于执行SQL语句。

// 执行SQL查询:

// Object user = sqlSession.selectOne("org.example.Main.findById", 2);

// 它使用SqlSession对象上的selectOne方法执行SQL查询。第一个参数是语句标识符("org.example.Main.findById"),第二个参数是要传递给查询的参数(在这种情况下是用户ID '2')。

// 打印结果:

// System.out.println(user);

// 查询的结果被打印到控制台。

// 关闭SqlSession:

// sqlSession.close();

// 最后,关闭SqlSession以释放资源。

 这个测试使用MyBatis来与数据库交互的findById功能的测试

最终成功的效果为查到aId为2的情况下数据库中的信息:

三、总结

1、MyBatis工作原理

2、根据查询资料总结MyBatis相比于JDBC的优点:

1. 简化SQL编写:使用JDBC时,需要手动编写SQL语句并处理参数绑定、结果集映射等操作。而MyBatis通过提供XML配置文件或注解的方式,可以将SQL语句与Java代码分离,使得SQL的编写更加简洁和可维护。

2. 提供对象关系映射(ORM)功能:MyBatis支持将查询结果自动映射到Java对象中,减少了手动处理结果集的工作量。可以通过配置文件或注解来指定对象和数据库表之间的映射关系,从而简化了数据访问层的开发。

3. 支持动态SQL:MyBatis提供了强大的动态SQL功能,可以根据条件动态生成SQL语句。这样可以避免在代码中拼接SQL字符串,使得SQL语句的编写更加灵活和易于维护。

4. 提供缓存机制:MyBatis内置了一级缓存和二级缓存,可以有效地减少数据库访问次数,提高系统性能。一级缓存是默认开启的,它在同一个SqlSession中有效;而二级缓存可以跨SqlSession共享,适用于多个SqlSession之间的数据共享。

5. 支持插件扩展:MyBatis提供了插件机制,可以通过自定义插件来扩展和定制其功能。这样可以在不修改MyBatis源代码的情况下,对其进行功能增强或改造。

总的来说,MyBatis相对于JDBC提供了更高层次的抽象和封装,简化了数据库访问的代码编写和维护工作,提高了开发效率和系统性能。

后续内容将会持续更新,如有问题请各位大佬提出指点..........

 

 

相关阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: