从零记录搭建一个干净的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();

    }
}

测试成功,环境搭建完成

相关推荐
Yaml41 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
小小小妮子~1 小时前
Spring Boot详解:从入门到精通
java·spring boot·后端
hong1616881 小时前
Spring Boot中实现多数据源连接和切换的方案
java·spring boot·后端
记录成长java2 小时前
ServletContext,Cookie,HttpSession的使用
java·开发语言·servlet
睡觉谁叫~~~3 小时前
一文解秘Rust如何与Java互操作
java·开发语言·后端·rust
毕业设计制作和分享3 小时前
ssm《数据库系统原理》课程平台的设计与实现+vue
前端·数据库·vue.js·oracle·mybatis
dsywws3 小时前
Linux学习笔记之vim入门
linux·笔记·学习
程序媛小果3 小时前
基于java+SpringBoot+Vue的旅游管理系统设计与实现
java·vue.js·spring boot
小屁孩大帅-杨一凡3 小时前
java后端请求想接收多个对象入参的数据
java·开发语言