寒假javaEE学习计划---MyBatis入门

一、认识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"作为项目类型,并按照向导完成项目的创建。(成功创好的效果如下)

寒假javaEE学习计划---MyBatis入门_第1张图片

b.添加MyBatis依赖

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



    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),它可以根据预定义的模板生成项目的基本结构和配置文件。若出现构建插件失败请检查插件版本,并通过删除原版本插件联网重构的方式完成依赖或插件配置

寒假javaEE学习计划---MyBatis入门_第2张图片

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

c.创建MyBatis配置文件

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

寒假javaEE学习计划---MyBatis入门_第3张图片




    
    
    
        
            
            
                
                
                
                
            
        
    
    
        
    


所引入外部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的属性

寒假javaEE学习计划---MyBatis入门_第4张图片

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

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映射文件的配置如下:

 
       
   

在项目中的位置

寒假javaEE学习计划---MyBatis入门_第5张图片

具体代码如下






        

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的情况下数据库中的信息:

寒假javaEE学习计划---MyBatis入门_第6张图片三、总结

1、MyBatis工作原理

寒假javaEE学习计划---MyBatis入门_第7张图片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提供了更高层次的抽象和封装,简化了数据库访问的代码编写和维护工作,提高了开发效率和系统性能。

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

 

 

你可能感兴趣的:(JavaEE企业级应用软件开发,java-ee,学习,mybatis)