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

使用Mybatis 连接数据库 项目示例

建一个使用 MyBatis 连接数据库的项目涉及多个步骤。以下是一个简单的示例,展示如何创建一个 Maven 项目,配置 MyBatis,并编写相关的类、方法和测试用例

1.创建Maven项目

首先,创建一个 Maven 项目。你可以使用 IDE(如 IntelliJ IDEA 或 Eclipse)来创建项目,或者在命令行中使用以下命令:

mvn archetype:generate -DgroupId=com.example -DartifactId=mybatis-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

2. 添加依赖 

在 pom.xml 文件中添加 MyBatis 和数据库驱动的依赖:

<dependencies>
    <!-- MyBatis -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.7</version>
    </dependency>

    <!-- MySQL 驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.26</version>
    </dependency>

    <!-- 测试依赖 -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>test</scope>
    </dependency>
</dependencies>

3. 配置 MyBatis

在 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/mybatis_demo"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/example/mapper/UserMapper.xml"/>
    </mappers>
</configuration>

 4. 创建实体类

创建一个简单的 User 实体类:

package com.example.model;

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

    // Getters and Setters
    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 String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

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

 5. 创建 Mapper 接口

创建一个 UserMapper 接口:

package com.example.mapper;

import com.example.model.User;

import java.util.List;

public interface UserMapper {
    User selectUserById(int id);
    List<User> selectAllUsers();
    void insertUser(User user);
    void updateUser(User user);
    void deleteUser(int id);
}

 6. 创建 Mapper XML 文件

在 src/main/resources/com/example/mapper 目录下创建 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="selectUserById" resultType="com.example.model.User">
        SELECT * FROM users WHERE id = #{id}
    </select>

    <select id="selectAllUsers" resultType="com.example.model.User">
        SELECT * FROM users
    </select>

    <insert id="insertUser" parameterType="com.example.model.User">
        INSERT INTO users (name, email) VALUES (#{name}, #{email})
    </insert>

    <update id="updateUser" parameterType="com.example.model.User">
        UPDATE users SET name = #{name}, email = #{email} WHERE id = #{id}
    </update>

    <delete id="deleteUser" parameterType="int">
        DELETE FROM users WHERE id = #{id}
    </delete>
</mapper>

7. 创建 MyBatis 工具类

创建一个工具类来获取 SqlSession

package com.example.util;

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 MyBatisUtil {
    private static SqlSessionFactory sqlSessionFactory;

    static {
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession getSqlSession() {
        return sqlSessionFactory.openSession();
    }
}

 8. 编写测试用例

在 src/test/java 目录下创建一个测试类 UserMapperTest

package com.example;

import com.example.mapper.UserMapper;
import com.example.model.User;
import com.example.util.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class UserMapperTest {

    @Test
    public void testSelectUserById() {
        try (SqlSession session = MyBatisUtil.getSqlSession()) {
            UserMapper mapper = session.getMapper(UserMapper.class);
            User user = mapper.selectUserById(1);
            System.out.println(user);
        }
    }

    @Test
    public void testSelectAllUsers() {
        try (SqlSession session = MyBatisUtil.getSqlSession()) {
            UserMapper mapper = session.getMapper(UserMapper.class);
            List<User> users = mapper.selectAllUsers();
            users.forEach(System.out::println);
        }
    }

    @Test
    public void testInsertUser() {
        try (SqlSession session = MyBatisUtil.getSqlSession()) {
            UserMapper mapper = session.getMapper(UserMapper.class);
            User user = new User();
            user.setName("John Doe");
            user.setEmail("john.doe@example.com");
            mapper.insertUser(user);
            session.commit();
        }
    }

    @Test
    public void testUpdateUser() {
        try (SqlSession session = MyBatisUtil.getSqlSession()) {
            UserMapper mapper = session.getMapper(UserMapper.class);
            User user = mapper.selectUserById(1);
            user.setName("Jane Doe");
            mapper.updateUser(user);
            session.commit();
        }
    }

    @Test
    public void testDeleteUser() {
        try (SqlSession session = MyBatisUtil.getSqlSession()) {
            UserMapper mapper = session.getMapper(UserMapper.class);
            mapper.deleteUser(1);
            session.commit();
        }
    }
}

 9. 运行测试

运行 UserMapperTest 类中的测试方法,确保 MyBatis 正确连接数据库并执行相应的操作。

10. 数据库表结构

确保数据库中有一个 users 表,表结构如下:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL
);

 总结:

以上步骤展示了如何创建一个使用 MyBatis 连接数据库的简单项目。你可以根据需要扩展这个项目,添加更多的功能和复杂性。

相关文章:

  • 图解LLM智能体(LLM Agents):构建与运作机制的全面解析
  • 网络编程——套接字、创建服务器、创建客户端
  • PyQt基础——简单闹钟ui实现(图形化界面、定时器事件)
  • CH347使用笔记:CH347结合STM32CubeIDE实现单片机下载与调试
  • [Banana Pi BPI-R4] RDK 和联发科推出Wi-Fi 7 宽带 CPE 的新硬件参考平台
  • 大语言模型中的 Function Calling
  • Oracle ASM Failgroup故障组
  • vulhub-Billu-b0x攻略
  • DevOps工具链
  • 【c++】内存序 和 内存一致性模型
  • HAL库实现SPI读写FLASH(W25Q32)
  • 组合Composition(has-a)
  • python日期
  • [Mysql]创建数据库基础
  • Rocky Linux 9.x 基于 kubeadm部署k8s 1.32
  • 【H2O2 | 软件开发】前端深拷贝的实现
  • 基于javaweb的SpringBoot公司日常考勤系统设计与实现(源码+文档+部署讲解)
  • CMake基础之-控制流
  • 【备赛】遇到的小问题-1
  • 施磊老师高级c++(一)
  • 政策一视同仁引导绿色转型,企业战略回应整齐划一?
  • 四姑娘山一游客疑因高反身亡,镇卫生院:送到时已很严重
  • 巴称巴控克什米尔地区11人在印方夜间炮击中身亡
  • 河南省平顶山市副市长许红兵主动投案,接受审查调查
  • 汪明荃,今生不负你
  • 罗氏制药全新生物制药生产基地投资项目在沪启动:预计投资20.4亿元,2031年投产