MyBatis框架理论

166 阅读4分钟

MyBatis是什么?

MyBatis是一个基于Java的持久层框架,内部封装了JDBC操作的细节,使开发者 只需要关注SQL语句本身,而不需要去处理加载驱动、创建连接、创建 statement 等繁杂的过程

MyBatis通过xml或注解方式将要执行的各种statement配置起来,并通过Java 对象和statement中SQL的动态参数进行映射生成最终执行的SQL语句,最后由 MyBatis框架执行SQL并将结果映射为 Java 对象后返回

采用ORM思想解决了实体和数据库映射的问题,对JDBC进行了封装,屏蔽了 JDBC API底层访问细节,使我们不用和JDBC API打交道,就可以完成对数据库 的持久化操作Mybatis框架理论

ORM(Object Relational Mapping,对象关系映射)是一种数据持久化技术, 它在对象模型和关系型数据库之间建立起对应关系,并且提供了一种机制,通过 JavaBean 对象去操作数据库表中的数据

总之就是使用了一种映射机制,使我们可以直接在java中操作数据库,并对数据库中的数据做出一些操作

怎样配置MyBaties?

第一步,在maven工程中配置依赖。

image.png

为什么要配置这些依赖?他们分别有什么作用?

  1. mysql-connector-java:这是MySQL的JDBC驱动程序,用于连接Java应用程序与MySQL数据库,允许执行SQL查询。
  2. junit:这是一个广泛使用的单元测试框架,用于编写和运行测试,以确保代码的正确性和稳定性。
  3. mybatis:这是一个持久层框架,简化了数据库操作,允许将SQL语句和Java对象之间的映射进行管理,提高开发效率。

第二步,配置MyBatis三个基本要素

(1)核心对象和类

(2)MyBatis核心配置文件(mybatis-config.xml)

(3)SQL映射文件(mapper.xml)

在这里我们只有配置好MyBatis核心配置文件(mybatis-config.xml)然后才可以配置SQL映射文件(mapper.xml)以及其对应的接口类,最后才可以使用核心对象和类。

配置MyBatis核心配置文件(mybatis-config.xml)

文件目录:

image.png

文件内容:

image.png

在这里注意自己连接的数据库用户名和密码。

文件目录:

image.png

文件内容:

image.png

核心配置文件解析

image.png

properties(数据库连接属性)

<properties resource="db.properties"/>
<property name="jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>

typeAlias

typeAlias(类型别名)
• Mybatis中有支持的默认别名,也可以自定义别名 
• 配置指定实体类的别名 
<typeAliases> 
<typeAlias type= "com.xyu.po.Poem" alias= "poem"/> 
typeAliases> 
Mybatis核心配置typeAlias(类型别名) 
• Mybatis中有支持的默认别名,也可以自定义别名 
• 批量配置别名 
<typeAliases> 
<package name= "com.xyu.po"/> <package name= "xxx继续指定其他要注册别名的包"/> 
typeAliases>

mappers(映射器)

• 在MyBatis主配置文件中,使用mappers标签配置一组映射器,mapper标签指定一个配置器:

<mapper resource="mapper/PoemMapper.xml"/>

• class加载方式 • 适用于类路径下,接口文件与映射文件在同一路径下,且接口名与映射文件名相同,且映射文件命名为接口全类 名的情况

<mapper class="com.xyu.mapper.PoemMapper"/>

• 可以使用package标签来注册指定包下的所有 mapper 接口

<package name="com.iflytek.iampoet.mapper"/>

配置SQL映射文件(mapper.xml)以及其对应的接口类和实体类

首先,创建对应的实体类

文件目录:

image.png

文件内容:

image.png

其次,创建接口类: 文件目录:

image.png

文件内容:

image.png

最后创建xml文件:

文件目录:

image.png

文件内容:

image.png

  1. SQL映射文件(mapper.xml) :用于定义SQL语句和数据库操作映射。它将SQL语句与接口方法关联,提供数据的增删改查功能。
  2. 接口类:定义了数据访问的方法。这些方法与映射文件中的SQL语句一一对应,允许应用程序调用这些方法执行数据库操作。
  3. 实体类:用于映射数据库中的表结构。每个实体类通常代表一个数据库表,包含表中的字段作为类的属性,方便在Java代码中处理数据。

使用核心的对象和类

package xyu.com;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import xyu.com.po.Poem;
import xyu.com.mapper.PoemMapper;
import java.io.IOException;
import java.io.InputStream;
public class Main {
    public static void main(String[] args) {
        SqlSessionFactory sqlSessionFactory=null;
        SqlSession sqlSession=null;
        InputStream inputStream=null;
        try {
            inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        //创建sqlsessionfactorybuilder
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        //创建sqlsessionfactory对象
        sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
        //创建sqlsession对象
        sqlSession = sqlSessionFactory.openSession();
        //sqlsession通过代理获取PoemMapper代理对象
        PoemMapper poemMapper = sqlSession.getMapper(PoemMapper.class);
        //poemMapper调用查询方法,本质是
        Poem poem = poemMapper.queryPoemById(26L);
        System.out.println(poem);

    }
    }

欧克欧克,报错了,不知道哪里出错。。。。。。。。。

image.png

main函数--》接口----》PoemMapper.xml--》》mybatis-config.xml--》》db.properties