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

java中MyBatis项目的搭建与配置

MyBatis 项目搭建与配置教程

一、环境准备

  1. JDK:Java 开发工具包,建议使用 JDK 8 或更高版本。可以从 Oracle 官网(Java Downloads | Oracle)或 OpenJDK 相关网站下载并按照安装向导进行安装。安装完成后,配置好系统的环境变量,使得在命令行中能够正确执行 java 和 javac 命令。
  2. Maven:用于项目的依赖管理和构建,你可以从 Maven 官网(Welcome to Apache Maven – Maven)下载并安装。安装后同样配置好环境变量,确保在命令行中可以使用 mvn 命令。可以通过 mvn -v 命令检查 Maven 是否安装成功并查看其版本信息。
  3. 数据库:例如 MySQL,你需要安装并启动 MySQL 服务,创建一个名为 test_db 的数据库用于项目测试。可以使用以下 SQL 语句创建数据库、表并插入测试数据:

CREATE DATABASE test_db;
USE test_db;
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);
INSERT INTO users (name, age) VALUES ('Alice', 25);
INSERT INTO users (name, age) VALUES ('Bob', 30);

二、项目命名建议

项目的命名应具有一定的描述性,能够清晰地表达项目的功能或用途。例如,我们可以将这个 MyBatis 示例项目命名为 mybatis-user-management-demo,表示这是一个使用 MyBatis 进行用户管理的示例项目。当然,你也可以根据自己的喜好和实际需求进行命名。

三、使用 IntelliJ IDEA 创建项目的步骤

  1. 打开 IntelliJ IDEA,选择 File -> New -> Project
  2. 在左侧面板中选择 Maven,确保勾选 Create from archetype,选择 org.apache.maven.archetypes:maven-archetype-quickstart。这个原型会创建一个基本的 Maven 项目结构,包含以下目录:
    • src/main/java:用于存放主代码。后续我们将在这个目录下创建实体类和 Mapper 接口。
    • src/main/resources:用于存放资源文件,如配置文件。我们会在此目录下创建 MyBatis 的配置文件 mybatis-config.xml 和 Mapper XML 文件。
    • src/test/java:用于存放测试代码。我们将在这个目录下编写测试代码来验证 MyBatis 的功能。
  3. 填写 GroupId(例如 com.example)、ArtifactId(例如 mybatis-user-management-demo)和 Version(例如 1.0-SNAPSHOT)等信息。GroupId 通常是公司或组织的反向域名,用于唯一标识项目所属的组织;ArtifactId 是项目的名称;Version 是项目的版本号。然后点击 Next
  4. 配置 Maven 的相关信息,如 Maven home directory(Maven 的安装目录)等,确保 Maven 能够正确运行。点击 Next
  5. 确认项目名称和存储路径,点击 Finish。IntelliJ IDEA 会自动生成项目的基本结构,并下载相关的 Maven 依赖。

四、项目的 Maven 配置(pom.xml 文件)

在生成的项目中,pom.xml 文件用于管理项目的依赖和构建配置,内容如下:

<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.example</groupId>
    <artifactId>mybatis-user-management-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

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

    <dependencies>
        <!-- MyBatis 核心依赖 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.9</version>
        </dependency>
        <!-- MySQL 数据库驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.26</version>
        </dependency>
    </dependencies>
</project>

五、配置 MyBatis

  1. 在 src/main/resources 目录下创建 mybatis-config.xml 文件,用于配置 MyBatis 的核心设置。示例配置如下:

<?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.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test_db?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!-- 这里可以添加 Mapper XML 文件的路径 -->
    </mappers>
</configuration>

  1. 错误处理
    • URI is not registered (Settings | Languages & Frameworks | Schemas and DTDs) 错误
      • 错误原因:IDE(如 IntelliJ IDEA)无法找到并注册 mybatis-config.xml 文件中引用的 DTD 文件(http://mybatis.org/dtd/mybatis-3-config.dtd),这可能是由于网络问题、IDE 配置问题或者 DTD 文件未被正确缓存导致的。
      • 解决办法
        • 手动注册 DTD:打开 IDE 的设置(在 IntelliJ IDEA 中,选择 File -> Settings -> Languages & Frameworks -> Schemas and DTDs)。点击 + 按钮,在 URI 输入框中粘贴 http://mybatis.org/dtd/mybatis-3-config.dtd,在 File or directory 中选择本地保存的 mybatis-3-config.dtd 文件(可以从 MyBatis 官方网站下载),或者让 IDE 自动下载(如果网络允许)。点击 OK 保存设置。
        • 忽略 DTD 验证:如果你不想手动注册 DTD 文件,也可以在 IDE 中配置忽略 DTD 验证。在 IntelliJ IDEA 中,选择 File -> Settings -> Editor -> Inspections,搜索 XML 相关的验证选项,取消勾选 DTD validation 等相关选项。
    • Unescaped & or nonterminated character/entity reference 错误
      • 错误原因:在 XML 文件中,& 是一个特殊字符,用于表示实体引用(如 &lt; 表示 <)。如果直接在 XML 文件中使用 & 而没有进行转义,就会导致解析错误。在 mybatis-config.xml 文件的 url 属性中,& 用于连接多个参数,需要进行转义。
      • 解决办法:将 url 属性中的 & 转义为 &amp;,如上述 mybatis-config.xml 文件中的配置所示。

六、创建实体类

在 src/main/java 目录下创建 com.example.entity 包(如果不存在该包需手动创建),在该包下创建实体类 User,用于映射数据库表中的数据,代码如下:

package com.example.entity;

public class User {
    private int id;
    private String name;
    private int age;

    // 构造方法、Getter 和 Setter 方法
    public User() {}

    public User(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

七、创建 Mapper 接口和 XML 文件

  1. Mapper 接口:在 src/main/java 目录下创建 com.example.mapper 包(如果不存在需手动创建),在该包下创建 Mapper 接口 UserMapper,定义数据库操作的方法,代码如下:

package com.example.mapper;

import com.example.entity.User;

import java.util.List;

public interface UserMapper {
    List<User> getAllUsers();
}

这个接口定义了一个方法 getAllUsers,用于从数据库中获取所有用户的信息。
2. Mapper XML 文件:在 src/main/resources 目录下创建 com/example/mapper 目录(如果不存在需手动创建),在该目录下创建与 Mapper 接口对应的 XML 文件 UserMapper.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.example.mapper.UserMapper">
    <select id="getAllUsers" resultType="com.example.entity.User">
        SELECT * FROM users
    </select>
</mapper>

namespace 属性指定了该 Mapper XML 文件对应的 Mapper 接口的全限定名,id 属性对应 Mapper 接口中的方法名,resultType 指定了查询结果映射的实体类。
3. 同时,需要在 mybatis-config.xml 文件的 <mappers> 标签中添加该 Mapper XML 文件的路径:

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

这样 MyBatis 才能找到并加载 Mapper XML 文件中的 SQL 语句。

八、编写测试代码

在 src/test/java 目录下创建 com.example 包(如果不存在需手动创建),在该包下创建测试类 MyBatisTest,验证 MyBatis 配置和数据库操作是否正常,代码如下:

package com.example;

import com.example.entity.User;
import com.example.mapper.UserMapper;
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.InputStream;
import java.util.List;

public class MyBatisTest {
    public static void main(String[] args) throws Exception {
        // 加载 MyBatis 配置文件
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        // 打开 SqlSession
        try (SqlSession session = sqlSessionFactory.openSession()) {
            // 获取 Mapper 接口实例
            UserMapper userMapper = session.getMapper(UserMapper.class);
            // 调用 Mapper 方法
            List<User> users = userMapper.getAllUsers();
            // 输出查询结果
            for (User user : users) {
                System.out.println(user);
            }
        }
    }
}

这段测试代码首先加载 MyBatis 配置文件,创建 SqlSessionFactory,然后打开一个 SqlSession,获取 UserMapper 接口的实例,调用 getAllUsers 方法获取用户列表,并输出查询结果。

九、运行测试代码

运行 MyBatisTest 类的 main 方法,如果一切配置正确,你应该能够看到从数据库中查询到的用户信息,例如:

User{id=1, name='Alice', age=25}
User{id=2, name='Bob', age=30}

通过以上更加完善的步骤,你就可以完成一个基本的 MyBatis 项目的搭建和配置。在实际开发中,你可以根据需求扩展和优化项目,例如添加更多的数据库操作方法、进行事务管理等。

相关文章:

  • MaxKB 如何通过Nginx修改浮框提示文字
  • 【记录】并行运行olmocr把服务器跑崩
  • vmware虚拟机突然连不上网
  • EF Core 异步方法
  • 高性能 Android 自定义 View:数据渲染与事件分发的双重优化
  • @Resource 与 @Autowired:Spring 中的依赖注入注解大比拼
  • gz sim机器人SDF模型 [持续更新]
  • trino查询mysql报Unknown or incorrect time zone: ‘Asia/Shanghai‘
  • Maven插件学习(一)——生成可执行的 JAR 文件
  • Redis集群哨兵相关面试题
  • SSM驾校预约管理系统
  • 【开题报告+论文+源码】基于SpringBoot的智能安全与急救知识科普系统设计与实现
  • 字节跳动前端开发实习生面试总结
  • Pytorch学习笔记(一)Learn the Basics - Quickstart
  • 辉视智慧会所:一键“唤”醒高端服务,乐享智慧生活新“声”级!
  • 动态规划 力扣hot100热门面试算法题 面试基础 核心思路 背题
  • 2024Android高频精选面试题讲解,程序人生
  • 协作机械臂需要加安全墙吗? 安全墙 光栅 干涉区
  • docker安装hyperf环境,连接本机redis问题处理
  • 9.4分漏洞!Next.js Middleware鉴权绕过漏洞安全风险通告
  • 商务网站建设与维护/seo网站优化方案书
  • 设计网站名称/谷歌seo和百度seo区别
  • 网络广告一般收费价目表/seo外包方法
  • 网站建设不用备案的/打开百度网址
  • 常州企业建站系统模板/搜索引擎优化关键词选择的方法有哪些
  • 政务公开和网站建设工作问题/网络推广员的工作内容和步骤