从零记录搭建一个干净的mybatis环境

文章目录

      • 1.新建一个空白项目
      • 2.清理及配置pom.xml
        • [2.1 删除src文件夹](#2.1 删除src文件夹)
        • [2.2 修改pom.xml](#2.2 修改pom.xml)
      • 3.新建module工程
        • [3.1 新建项目](#3.1 新建项目)
        • [3.2 删除webapp文件夹](#3.2 删除webapp文件夹)
        • [3.3 清理pom.xml](#3.3 清理pom.xml)
        • 3.4.连接mysql数据库
      • 4.构建mybatis增删改查内容
        • [4.1 写好resources目录下的内容](#4.1 写好resources目录下的内容)
        • [4.2 构建工具类](#4.2 构建工具类)
        • [4.3 创建Student和Teacher实体类](#4.3 创建Student和Teacher实体类)
        • [4.4 编写实体类对应的mapper接口](#4.4 编写实体类对应的mapper接口)
        • [4.5 编写Mapper接口对应的Mapper.xml文件](#4.5 编写Mapper接口对应的Mapper.xml文件)
        • [4.6 给StudentMapper接口增加方法以及编写对应xml文件](#4.6 给StudentMapper接口增加方法以及编写对应xml文件)
        • 4.7顶层mapper文件注册该mapper
        • [4.8 测试](#4.8 测试)

1.新建一个空白项目

FIle-->New-->Project

注意选择maven项目,项目命名,jdk选择, Archetype选择如下

2.清理及配置pom.xml

2.1 删除src文件夹

如果不在该项目下新建多个module不需要此操作

2.2 修改pom.xml

将资源文件复制到 target 目录,以便在项目的打包或运行时能够访问这些配置文件

供复制代码

java 复制代码
  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>true</filtering>
      </resource>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>true</filtering>
      </resource>
    </resources>
  </build>

增加依赖

xml 复制代码
<!--父工程-->
  <dependencies>
    <!--mysql驱动-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.47</version>
    </dependency>
    <!--mybatis-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.2</version>
    </dependency>
    <!--junit-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>

  </dependencies>

3.新建module工程

3.1 新建项目
3.2 删除webapp文件夹
3.3 清理pom.xml
3.4.连接mysql数据库



数据库连接成功

4.构建mybatis增删改查内容

4.1 写好resources目录下的内容

mybatis-config.xml内容如下

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/mybatis?useSSL=false&amp;useUnicode=false&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
</configuration>

如下图

4.2 构建工具类

作用:提供了一个 SqlSession 对象,用于执行数据库操作并管理数据库连接

代码供复制

java 复制代码
package com.aloha.utils;

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 MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory;
    static {
        String resource = "mybatis-config.xml";
        try {
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession getSqlSession() {
        return sqlSessionFactory.openSession();
    }
}
4.3 创建Student和Teacher实体类

和你数据库表一一对应

Teacher:

java 复制代码
package com.aloha.pojo;

import lombok.Data;

@Data // getter and setter 有参无参构造 toString
public class Teacher {
    private int id;
    private String name;
}

Student

java 复制代码
package com.aloha.pojo;

import lombok.Data;

@Data
public class Student {
    private int id;
    private String name;
    // 多个学生可以是同一个老师,多对一
    private Teacher teacher;
}
4.4 编写实体类对应的mapper接口

dao下编写两个interface

StudentMapper, TeacherMapper
StudentMapper

4.5 编写Mapper接口对应的Mapper.xml文件

StudentMapper.xml

java 复制代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.aloha.dao.StudentMapper">

</mapper>

TeacherMapper.xml

java 复制代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.aloha.dao.TeacherMapper">

</mapper>
4.6 给StudentMapper接口增加方法以及编写对应xml文件
java 复制代码
package com.aloha.dao;

import com.aloha.pojo.Student;

import java.util.List;

public interface StudentMapper {
    // 获取所有学生及其老师信息
    public List<Student> getStudents();
}
xml 复制代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.aloha.dao.StudentMapper">
    <!--
    需求:获取所有学生及对应老师的信息
    思路:
        1. 获取所有学生的信息
        2. 根据获取的学生信息的老师ID->获取该老师的信息
        3. 思考问题,这样学生的结果集中应该包含老师,该如何处理呢,数据库中我们一般使用关联查询?
            1. 做一个结果集映射:StudentTeacher
            2. StudentTeacher结果集的类型为 Student
            3. 学生中老师的属性为teacher,对应数据库中为tid。
               多个 [1,...)学生关联一个老师=> 一对一,一对多
            4. 查看官网找到:association -- 一个复杂类型的关联;使用它来处理关联查询
-->
    <select id="getStudents" resultMap="StudentTeacher">
        select * from mybatis.student
    </select>
    <resultMap id="StudentTeacher" type="Student">
        <!--association关联属性  property属性名 javaType属性类型 column在多的一方的表中的列名-->
        <association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/>
    </resultMap>
    <!--
        这里传递过来的id,只有一个属性的时候,下面可以写任何值
        association中column多参数配置:
            column="{key=value,key=value}"
            其实就是键值对的形式,key是传给下个sql的取值名称,value是片段一中sql查询的字段名。
    -->
    <select id="getTeacher" resultType="teacher">
        select * from mybatis.teacher where id = #{id}
    </select>

</mapper>
4.7顶层mapper文件注册该mapper
xml 复制代码
<mappers>
        <mapper resource="com/aloha/dao/StudentMapper.xml"/>
    </mappers>
4.8 测试

src同级别目录下新建test文件,java/com.aloha.dao如下

代码供复制

java 复制代码
package com.aloha.dao;

import com.aloha.pojo.Student;
import com.aloha.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

public class StudentMapperTest {
    @Test
    public void test1() {
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        for (Student student : mapper.getStudents()) {
            System.out.println(student);
        }

        sqlSession.close();

    }
}

测试成功,环境搭建完成

相关推荐
纪元A梦几秒前
华为OD机试真题——绘图机器(2025A卷:100分)Java/python/JavaScript/C++/C/GO最佳实现
java·javascript·c++·python·华为od·go·华为od机试题
赏你个麻辣烫儿11 分钟前
机器学习学习笔记
笔记·学习
24k小善15 分钟前
FlinkSql入门与实践
java·大数据·flink·云计算
CodeCraft Studio28 分钟前
Excel处理控件Spire.XLS系列教程:Java设置Excel活动工作表或活动单元格
java·python·excel
huangyuchi.1 小时前
【C++11】Lambda表达式
开发语言·c++·笔记·c++11·lambda·lambda表达式·捕捉列表
瓯雅爱分享1 小时前
任务管理系统,Java+Vue,含源码与文档,科学规划任务节点,全程督办保障项目落地提效
java·mysql·vue·软件工程·源代码管理
chxii1 小时前
2.3java运算符
java
余辉zmh1 小时前
【Linux系统篇】:信号的生命周期---从触发到保存与捕捉的底层逻辑
android·java·linux
小布不吃竹1 小时前
Maven的概念与初识Maven
java·maven
中东大鹅1 小时前
Maven进阶
java·maven