mybatis的基础环境如何搭建起来的?

本文讲述了两种方式搭建mybatis的基础环境

(以下介绍的都是基础搭建,使用的都是idea工具,本人使用的idea是2020.3版本的)

1.导jar包的方式

2、通过搭建maven项目,导入依赖来搭建

一、导jar包的方式

1、导jar包

我们先来讲述一下通过搭建一个很简单的javase项目来搭建mybatis的基础环境

创建好一个javase项目之后呢,先建一个Directory,命名为lib

然后再GitHub搜索mybatis,找到mybatis项目,在里面下载zip,zip里面有jar包以及一份快速上手简介,顺便也可以下载一份源码,到时候导进到idea中就可以看到源码

将下载的zip解压,然后将zip里面的lib包下的jar包复制到我们自己创建的项目里面,还有那个mybatis的jar包,还有mysql的驱动包,8.0以上或者6.0以下的都没什么影响,只是你在后面连接数据库的时候要注意写法和加时区。

总结一下,需要那些jar包

  • zip里面的lib包下的所有jar包
  • mybatis的jar包(核心jar包)
  • mysql的驱动包

贴一张我搭建的里面的jar包图(超级贴心)

jar包导好,记得讲jar包 add as library... 一定要做这一步

2、编写实体类

ok,以上的步骤完成之后,我们先建一个放实体包的pojo包,然后建一个实体类,下面我贴出我的实体类,以及数据库的结构

注意: 使用mybatis,不需要POJO实体类名称和数据库表名一致,因为mybatis是POJO与SQL语句之间映射,只要pojo实体中的属性和数据表中的字段保持一致即可


package com.gec.pojo;

public class Course {
    private String cno;

    private String cname;

    private String tno;

    public String getCno() {
        return cno;
    }

    public void setCno(String cno) {
        this.cno = cno == null ? null : cno.trim();
    }

    public String getCname() {
        return cname;
    }

    public void setCname(String cname) {
        this.cname = cname == null ? null : cname.trim();
    }

    public String getTno() {
        return tno;
    }

    public void setTno(String tno) {
        this.tno = tno == null ? null : tno.trim();
    }

    @Override
    public String toString() {
        return "Course{" +
                "cno='" + cno + '\'' +
                ", cname='" + cname + '\'' +
                ", tno='" + tno + '\'' +
                '}';
    }
}

这里我贴一下我创建数据表的sql吧-----(是不是超级贴心)

点击查看代码
LOCK TABLES `COURSE` WRITE;
/*!40000 ALTER TABLE `COURSE` DISABLE KEYS */;
INSERT INTO `COURSE` VALUES ('3-105','计算机导论','825'),('3-245','操作系统','804'),('6-166','数据电路','856'),('9-888','高等数学','100');
/*!40000 ALTER TABLE `COURSE` ENABLE KEYS */;
UNLOCK TABLES;

3、编写配置文件

ok,以上的准备工作做好了,我们就开始写了,首先我们需要创建一个file,直接放在src路径之下就行,(咱们刚学啊,咱们就写这样放哦)
命名为:mybatic-config.xml

第一次写这个呢,就需要在刚刚下载的zip里面有一个文档找到他的头声明,刚学习的小伙伴可以去找找一下,加深印象哦

你可以把找到的这一段全部复制到你的mybatic-config.xml中,然后去改对应的位置就行,但是新手,我建议还是自己写一遍,加深一下印象,同时也认识一下。

下面贴出的我的mybatic-config.xml 小伙伴们要根据你的数据库驱动来更改你的数据库连接配置,下面的mappers标签里的内容后面会讲到

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

    <!--配置数据库环境-->
    <!--default="dev", 这default指的是默认的数据库,
     当environments中有多个数据源时,指定那个数据源为默认的。
    -->
    <environments default="dev">
<!--        可以配置多数据源 -->
        <environment id="dev">
            <!--事务管理,目前交给JDBC管理-->
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <!--这里面的name是不能更改的,这是别人定义的名字-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatisdemo"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    
    <!--在主配置文件中关联mapper sql映射文件-->
    <mappers>
        <mapper resource="com/gec/pojo/CourseMapper.xml"></mapper>
    </mappers>

</configuration>

一般呢我们写mybatis是使用的是接口的方式,但是对于新学的小伙伴,我觉得还是需要了解一下,没有使用接口方式的写法(仅仅是了解)

首先我们写一个mapper.xml,这个mapper.xml的的命名呢是你的实体类名称+Mapper.xml

例如:我的就是CourseMapper.xml,放在跟实体类的包里面(暂时先这样放着)

我们编写这个CourceMapper.xml也是需要头声明的,同样的头声明去zip包里面的pdf中找

ok,我们先复制下来,然后呢改代码

<?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="aaa">
<!---这个是编写sql语句,在mapper里面有增删改查四种标签,这里我们写的是select 查询的这种标签--->
    <select id="selectById" resultType="com.gec.pojo.Course">
        select  * from course where cno=#{cno}<!--#{} 一种占位符的写法-->
    </select>
</mapper>

接口方式

首先我们创建一个包mapper,然后写个接口命名为CourseMapper

接口开发模式需要遵循的原则

1. 映射文件中namespace要等于接口的全路径名称

2. 映射文件中sql语句的id要等于接口的方法名称

3. 映射文件中输入参数类型要等于接口方法中的参数类型

4. 映射文件中的返回值类型要等于接口方法中的返回值类型----歧义 这个你在以后的项目开发中就会有深刻的体会

下面我贴出我的CourseMapper

package com.gec.mapper;


import com.gec.pojo.Course;

public interface CourseMapper {

    public Course selectById(String cno);


}

下面我贴出我的CourseMapper.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.gec.mapper.CourseMapper">
    <select id="selectById" resultType="com.gec.pojo.Course">
        select  * from course where cno=#{cno}
    </select>
</mapper>

完成上面这些,我们就需要将CourceMapper.xml跟mybatic-config.xml 关联起来,这就是在mybatic-config.xml 中mappers标签的作用

 
    <mappers>
        <mapper resource="com\gec\entity\UserMapper.xml"></mapper>
    </mappers>

4、编写测试类

新建一个包,然后新建一个测试类,测试类如下

package com.gec.demotest;

import com.gec.mapper.CourseMapper;
import com.gec.pojo.Course;
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 java.io.IOException;
import java.io.InputStream;

public class CourseTest {
    public static void main(String[] args) throws IOException {
        String config="mybatis-config.xml";
//        读取配置文件,创建输入流
        InputStream resourceAsStream = Resources.getResourceAsStream(config);
//    会话工厂构建者对象  创建  SqlSessionFactory   SqlSessionFactory是专门帮我们创建SqlSession对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//     SqlSession专门用来操作数据库的增删改查,事物操作。
//     SqlSession是可以创建多个,但是一旦调用了close方法,那么当前sqlSession就废了
        SqlSession sqlSession = sqlSessionFactory.openSession();

//        Course course = sqlSession.selectOne("aaa.selectById","3-105");
//
//        System.out.println(course);
        CourseMapper mapper = sqlSession.getMapper(CourseMapper.class);

        Course course = mapper.selectById("3-105");

        System.out.println(course);


    }
}

运行成功呢,就说明你的第一个mybatis的helloword运行成功

这里着重说明一下,要是想了解一下测试类里面的SqlSessionFactory ,SqlSessionFactoryBuilder,SqlSession 对象,可以去
https://pdai.tech/
这个全栈网站找到mybatis的源码解析部分看一下,对你学习mybatis有一定的提升

通过搭建maven项目,导入依赖来搭建

这种方式,只要把maven搭建起来,然后导入依赖,步骤接着第一种方式的第二步开始就可以完成

主要就是要注意依赖的导入以及Mapper.xml文件的放置位置就行

1、搭建maven项目,这里有个maven仓库的配置,emmm,可以去看看我的文章,里面有一片专门讲maven仓库配置的

2、添加依赖


<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>com.gec</groupId>
  <artifactId>01-mybatisTest</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>01-mybatisTest</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.ow2.asm/asm -->
    <dependency>
      <groupId>org.ow2.asm</groupId>
      <artifactId>asm</artifactId>
      <version>7.1</version>
    </dependency>



    <dependency>
      <groupId>ognl</groupId>
      <artifactId>ognl</artifactId>
      <version>3.3.3</version>
      <scope>compile</scope>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>org.javassist</groupId>
      <artifactId>javassist</artifactId>
      <version>3.29.1-GA</version>
      <scope>compile</scope>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.36</version>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>ch.qos.reload4j</groupId>
      <artifactId>reload4j</artifactId>
      <version>1.2.22</version>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>2.18.0</version>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.2</version>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>cglib</groupId>
      <artifactId>cglib</artifactId>
      <version>3.3.0</version>
      <optional>true</optional>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.10</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.47</version>
    </dependency>

  </dependencies>

  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
<!--        <plugin>-->
<!--          <artifactId>maven-project-info-reports-plugin</artifactId>-->
<!--          <version>3.0.0</version>-->
<!--        </plugin>-->
      </plugins>
    </pluginManagement>
  </build>
</project>

这里的mybatic-cofig.xml文件放在resources下面,CourseMapper.xml是要放在resources下的mapper包下,不然你运行的时候很可能会出现CourseMapper跟CourseMapoer.xml文件映射不到的问题。

ok,以上两种方法都介绍完毕,源码,我会放在gitee,欢迎大家拉取使用!

https://gitee.com/ye-yi919/Mybatis_code.git

(要是不会用idea拉取,可以点下面那个连接,里面的.md有详细讲解)

https://gitee.com/ye-yi919/gitTest.git

创作不易,多多点赞,感谢

posted @   岁_穗  阅读(155)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示