初认Mybatis框架

目录

框架的概念及作用

主流框架技术简介(为什么要学习Mybatis框架

ORM

搭建Mybatis框架的开发环境

Mybatis框架的优点以及缺点

Mybatis的核心对象


框架的概念及作用

框架(Framework)是一种经过检验的具有特定功能的半成品软件。

框架的作用包括:

  1. 提供基础设施:框架提供了一套通用的基础设施,包括数据库访问、网络通信、用户界面、安全认证等功能。开发者可以直接使用框架提供的组件,而不需要从头开始编写这些通用功能。(就相当于ppt的模板一样,使用ppt模板,不需要考虑样式,颜色,字体)

  2. 提高开发效率:框架通过提供各种工具、类库和模板等,可以大大减少开发工作量,提高开发效率。开发者可以基于框架的规范和约定进行开发,减少重复性的代码编写。

  3. 提供标准化:框架通常定义了一套规范和标准,使得开发者之间可以使用相同的开发模式和设计思想进行协作。这样可以提高开发团队的协作效率,降低沟通成本。

主流框架技术简介(为什么要学习Mybatis框架

我了解到的,并分析

1.Mybatis框架(使用灵活,简单易学,性能优秀)

MyBatis 框架是一个基于ORM(Object RelationalMapping,对象/关系映射)的优秀的持久化框架。它提供了一种将数据库操作与Java对象之间的映射关系进行配置的方式,使得开发者可以通过简单的配置文件和注解来实现数据库的增删改查操作,而无需编写繁琐的SQL语句。

使用Mybatis框架,开发者只需要定义好Java对象和数据库表之间的映射关系,然后编写简单的接口和SQL语句,就可以实现对象的持久化和数据的访问。Mybatis框架负责将Java对象与数据库表进行转换,将SQL语句与数据库操作进行关联,以及处理事务和连接管理等底层细节。

2.Spring框架(使应用程序更加轻巧,开发过程更加快捷高效)

Spring框架是一个用于构建企业级Java应用程序的开源框架。它提供了一套全面的解决方案,用于简化应用程序的开发和集成,包括依赖注入、面向切面编程、事务管理、Web开发等功能。

使用Spring框架,开发者可以将应用程序的各个模块解耦,使得它们可以独立开发、测试和维护。核心特性之一是依赖注入(DI),它通过配置文件或注解的方式,自动将对象之间的依赖关系注入到代码中,降低了组件之间的耦合性。

还包括面向切面编程(aop)它可以将应用程序中的横切关注点(如日志记录、安全性、事务管理等)与核心业务逻辑分离,提高了代码的可维护性和可重用性。

Spring框架还支持Web开发,提供了一套简化的MVC(模型-视图-控制器)架构,方便开发者构建Web应用程序。

3.Spring MVC框架(方便进行定制化开发)

Spring MVC框架是Spring框架中的一个模块,用于开发基于MVC(模型-视图-控制器)架构的Web应用程序。它提供了一种结构化的方式来组织和管理Web应用程序的开发。

使用Spring MVC框架,开发者可以将Web应用程序分为三个主要的部分:模型、视图和控制器。

模型(Model)代表应用程序的数据和业务逻辑。它负责处理数据的读取、处理和存储,并提供给控制器进行处理。

视图(View)负责展示数据给用户,通常是通过HTML页面来实现。视图可以根据模型中的数据进行渲染,并将结果返回给用户。

控制器(Controller)是应用程序的核心部分,负责接收用户的请求,调用相应的模型处理数据,然后选择合适的视图将结果返回给用户。

总结起来,Spring MVC框架是Spring框架中的一个模块,用于开发基于MVC架构的Web应用程序。它通过提供一套注解和配置方式,简化了Web应用程序的开发流程,提高了代码的可维护性和可测试性。

RMO

上面说到MyBatis 框架是一个基于ORM(Object RelationalMapping,对象/关系映射)的优秀的持久化框架。那什么是数据持久化和ORM呢

持久化

数据分为持久化数据和瞬时数据
    ·持久化数据:保存在硬盘中的数据,关掉软件,数据依然存在
   · 瞬时数据:保存在内存中的数据,关掉软件,数据就没了

持久化就是将数据永久地保存下来,以便在系统关闭或重新启动后能够重新加载和使用这些数据。

在软件开发中,持久化通常用于将内存中的数据保存到数据库中,或者将数据以文件的形式存储到磁盘上。通过持久化,我们可以保证数据的持久性,即使在系统崩溃或断电的情况下,数据也不会丢失。

ORM

ORM是一种在关系型数据库和面向对象编程语言之间进行数据转换的编程技术。它是通过在对象模型和数据库关系模型之间建立起对应关系

 搭建Mybatis框架的开发环境

z主要的是核心配置文件以及映射文件

1.下载Mybatis框架:访问Mybatis官方网站

2.创建mybatis-config.xml配置文件

<?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"/>
    <property name="url" value="jdbc:mysql://localhost:3306/mydatabase"/>
    <property name="username" value="root"/>
    <property name="password" value="password"/>
    </dataSource>
  </environment>
  </environments>
  <mappers>
  <mapper resource="com/example/mapper/MyMapper.xml"/>
  </mappers>
</configuration>

3.创建MyMapper.xml映射文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.MyMapper">
//select语句
  <select id="getUser" parameterType="int" resultType="com.example.model.User">
  SELECT * FROM user WHERE id = #{id}
  </select>

//insert语句
  <insert id="insertUser" parameterType="com.example.model.User">
  INSERT INTO user (id, name, age) VALUES (#{id}, #{name}, #{age})
  </insert>
</mapper>

4.创建User.java实体类

package com.example.model;

public class User {
  private int id;
  private String name;
  private int age;

  //get&set方法
  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 int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

5.创建MyMapper.java接口

package com.example.mapper;

import com.example.model.User;

public interface MyMapper {
//查询用户
  User getUser(int id);
//插入用户
  void insertUser(User user);
}

6.编写测试类

public class Main {
  public static void main(String[] args) {
    try (Reader reader = Resources.getResourceAsReader("mybatis-config.xml")) {
      SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
      SqlSession sqlSession = sqlSessionFactory.openSession();

      MyMapper mapper = sqlSession.getMapper(MyMapper.class);
      
      // 查询用户
      User user = mapper.getUser(1);
      System.out.println(user.getName());

      // 插入用户
      User newUser = new User();
      newUser.setId(2);
      newUser.setName("Alice");
      newUser.setAge(25);
      mapper.insertUser(newUser);
      sqlSession.commit();
      
      sqlSession.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Mybatis框架的优点以及缺点

1.优点

  1. 简化数据库操作:Mybatis框架通过配置文件和注解的方式,将数据库操作和Java对象之间的映射关系进行配置,使开发者可以通过简单的接口和SQL语句来实现数据库的增删改查操作,减少了编写繁琐SQL语句的工作量。与JDBC相比代码量起码减少50%

  2. 灵活性和可扩展性:Mybatis框架提供了灵活的配置选项,开发者可以根据具体的需求进行定制和扩展,适应不同的业务场景。可以自定义SQL语句、参数映射、结果集处理等,让这个框架变得更加灵活和可定制。

  3. 轻量级和高性能:Mybatis框架是一个轻量级的框架,不依赖于其他复杂的框架,占用资源较少。同时,Mybatis框架采用了预编译的SQL语句和缓存机制,提高了数据库操作的性能。

2.缺点

  1. 学习比较难,特别是sql语句:相对于其他ORM框架,Mybatis框架对于开发者的学习曲线较陡峭。开发者需要掌握XML配置和SQL语句的编写,对于初学者来说可能需要花费一些时间来熟悉和掌握。

  2. 代码量较多:相比于其他ORM框架,使用Mybatis框架可能需要编写更多的代码。因为需要手动编写SQL语句和参数映射,相对来说会增加一定的开发工作量。

Mybatis的核心对象

    SqlSessionFactoryBuilder    SqlSession工厂建造器
    
  
 SqlSessionFactory            SqlSession工厂
    
  
 SqlSession                    Sql会话,一个会话相当于一个连接

  1. SqlSessionFactoryBuilder:SqlSessionFactoryBuilder是用来创建SqlSessionFactory的建造器。它负责读取配置文件和映射文件,然后根据这些配置信息构建出SqlSessionFactory对象。SqlSessionFactoryBuilder的生命周期是短暂的。一旦SqlSessionFactory对象创建完成,SqlSessionFactoryBuilder的任务就完成了,它的实例可以被丢弃或者垃圾回收。

  2. SqlSessionFactory是用来创建SqlSession对象的工厂。它是一个线程安全的对象,一般在应用程序启动时创建,并在整个应用程序生命周期中重复使用。通过SqlSessionFactory可以创建SqlSession对象。

  3. SqlSession:SqlSession是执行数据库操作的接口。它提供了对数据库的增删改查等操作方法,并且支持事务管理。SqlSession对象是线程不安全的,每个线程都应该拥有自己的SqlSession实例。SqlSession对象的生命周期应该尽量短暂,用完即关闭,用于释放数据库连接和其他资源。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值