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

86f858c757c342379b1ec99d86bb30cd.png

b.添加MyBatis依赖

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

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>untitled</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>

    </properties>
      <dependencies>
          <!-- mybatis依赖-->
          <dependency>
              <groupId>org.mybatis</groupId>
              <artifactId>mybatis</artifactId>
              <version>3.5.10</version>
          </dependency>
<!--          单元测试-->
          <dependency>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>4.13.2</version>
              <scope>test</scope>
          </dependency>
<!--       mysql驱动-->
          <dependency>
              <groupId>mysql</groupId>
              <artifactId>mysql-connector-java</artifactId>
              <version>8.0.27</version>
          </dependency>

      </dependencies>
<!--   Maven plugins配置不可少  -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-archetype-plugin</artifactId>
                <version>3.2.1</version>
            </plugin>
        </plugins>
    </build>

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

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

7b537224110b4493904ae46ee1e0cfa7.png

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

c.创建MyBatis配置文件

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

60ce23807b984fb688833955851d4bf6.png

<?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>
    <!--   引入外部db.properties -->
    <properties resource="db.properties"></properties>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${mysql.driver}"/>
                <property name="url" value="${mysql.url}"/>
                <property name="username" value="${mysql.username}"/>
                <property name="password" value="${mysql.password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>
<!--以上为MyBatis配置文件,可作为模板-->

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

f8a0fc4592da4be78958bb35b181f16b.png

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

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

 <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>

在项目中的位置

d34fe36d50864fb583ed619f5c7bd54a.png

具体代码如下

<?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="org.example.Main">
<!--        编写sql语句 namespace 和id可以任意取,parameterType可有可无仅做声明,admin为表,aId为列名,#{aId}大括号为接收的参数-->
<select id="findById"
        parameterType="int"
        resultType="org.example.Main">
        select * from admin where aId=#{aId}
</select>
        </mapper>

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

d4864df174084d5e8eb05ba956ced71d.png三、总结

1、MyBatis工作原理

69b34c3ee7f24ea78a59bd74093a3237.png2、根据查询资料总结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提供了更高层次的抽象和封装,简化了数据库访问的代码编写和维护工作,提高了开发效率和系统性能。

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

 

 

  • 24
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玛卡巴卡yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值