当前位置: 首页 > article >正文

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

文章目录

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

1.新建一个空白项目

FIle-->New-->Project
在这里插入图片描述
注意选择maven项目,项目命名,jdk选择, Archetype选择如下
在这里插入图片描述

2.清理及配置pom.xml

2.1 删除src文件夹

如果不在该项目下新建多个module不需要此操作
在这里插入图片描述

2.2 修改pom.xml

将资源文件复制到 target 目录,以便在项目的打包或运行时能够访问这些配置文件
在这里插入图片描述
供复制代码

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

增加依赖

<!--父工程-->
  <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 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 对象,用于执行数据库操作并管理数据库连接
在这里插入图片描述
代码供复制

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:

package com.aloha.pojo;

import lombok.Data;

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

Student

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

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

<?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文件
package com.aloha.dao;

import com.aloha.pojo.Student;

import java.util.List;

public interface StudentMapper {
    // 获取所有学生及其老师信息
    public List<Student> getStudents();
}
<?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
<mappers>
        <mapper resource="com/aloha/dao/StudentMapper.xml"/>
    </mappers>
4.8 测试

src同级别目录下新建test文件,java/com.aloha.dao如下
在这里插入图片描述
代码供复制

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();

    }
}

测试成功,环境搭建完成
在这里插入图片描述


http://www.kler.cn/a/382874.html

相关文章:

  • Linux系统I/O调优实例
  • 【C++刷题】力扣-#706-设计哈希映射
  • 计算机网络——网络层导论
  • “高效开发之路:用Spring MVC构建健壮的企业级应用”
  • 【设计模式系列】桥接模式(十三)
  • watch与computed的区别、运用的场景
  • 爬虫-------字体反爬
  • Google Guava 发布订阅模式/生产消费者模式 使用详情
  • 2024 ICPC National Invitational Collegiate Programming Contest, Wuhan Site
  • 套利定理
  • 路见不平 ! 基于tensorlfow快速迭代的户型图分类功能
  • pycharm 使用
  • 高考数学之圆锥曲线知识要点
  • 【ChatGPT】搜索趋势分析
  • 七、Spring Boot集成Spring Security之前后分离认证最佳实现
  • 智能化健身房管理:Spring Boot与Vue的创新解决方案
  • 《C++ 游戏开发》
  • Unity中c#脚本使用protocol buffers
  • 制作并量化GGUF模型上传到HuggingFace和ModelScope
  • [C++ 核心编程]笔记 4.4.1 全局函数做友元
  • 51c嵌入式~合集1
  • openvino python推理demo
  • 网络,NAT地址转换,虚拟路由冗余协议VRRP
  • Linux云计算 |【第五阶段】CLOUD-DAY8
  • Java 批量导出Word模板生成ZIP文件到浏览器默认下载位置
  • 大模型与搜索引擎结合:智能体、思维链和智谱AI搜索代码案例