Mybatis对数据库数据进行增删改查

以下是使用IntelliJ IDEA 2021创建基于JDK 1.8的名为Mybatis的Maven项目结构,并结合Navicat操作数据库以及使用Mybatis进行增删改查操作的详细步骤:

一、创建Maven项目

  1. 打开IntelliJ IDEA 2021:启动IntelliJ IDEA开发工具。
  2. 新建项目:点击File -> New -> Project,在弹出的窗口中选择Maven项目类型,然后点击Next
  3. 配置项目基本信息
    • GroupId:填写项目的组织标识,例如com.example(可根据实际情况自定义)。
    • ArtifactId:填写项目的唯一标识符,这里填写Mybatis(和项目名对应)。
    • Version:项目版本号,如1.0-SNAPSHOT
    • Project SDK:选择JDK 1.8版本(前提是你已经安装配置好JDK 1.8)。
    • 点击Next,然后选择项目的存储路径,点击Finish完成项目的创建。

二、在Navicat中设计数据库表

  1. 打开Navicat:启动Navicat数据库管理工具,连接到相应的数据库(比如MySQL等,确保数据库服务已正常运行并且你有权限操作)。
  2. 创建数据库(如果不存在):右键点击连接,选择新建数据库,输入数据库名称(例如mybatis_demo),选择合适的字符集和排序规则,点击确定创建数据库。
  3. 创建表
    • 双击打开刚创建的数据库,在表的操作区域右键点击,选择新建表
    • 在表设计界面中,依次添加以下字段:
      • id:字段类型选择int,勾选主键(一般作为唯一标识每条记录的序号),可以设置为自增长(根据具体数据库语法来设置自增长属性,如MySQL中设置AUTO_INCREMENT)。
      • username:字段类型根据实际需求选择合适的字符串类型,比如varchar,并设置合适的长度(如50),用于存储用户姓名。
      • addr:同样选择合适的字符串类型,例如varchar,设置长度来存储籍贯信息。
      • age:字段类型为int,用于存储年龄信息。
    • 点击保存,输入表名user,保存该表结构。
  4. 插入测试数据
    • 右键点击user表,选择打开表,在弹出的数据录入界面中,手动输入不少于3条的记录数据,例如:
      • id1username张三addr北京age25
      • id2username李四addr上海age30
      • id3username王五addr广州age28等。
    • 输入完每条记录后点击保存按钮插入数据到表中。

三、配置Mybatis相关依赖及项目结构

  1. 在项目的pom.xml文件中添加Mybatis及数据库驱动等依赖(以MySQL数据库为例)

<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.0modelVersion>

    <groupId>com.examplegroupId>
    <artifactId>MybatisartifactId>
    <version>1.0-SNAPSHOTversion>

    <properties>
        <maven.compiler.source>8maven.compiler.source>
        <maven.compiler.target>8maven.compiler.target>
    properties>

    <dependencies>
        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
            <version>3.5.10version>
        dependency>
        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>8.0.26version>
        dependency>
    dependencies>
project>

保存pom.xml文件,Maven会自动下载相关依赖到本地仓库(如果网络和配置正常的话)。
2. 创建项目结构
- 在src/main/java目录下创建项目的包结构,例如com.example.mybatis(根据实际的GroupId和项目组织情况来定),后续的Java代码类将放在对应的包下。
- 在src/main/resources目录下创建mybatis-config.xml配置文件,用于配置Mybatis的全局设置,示例内容如下:


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?useSSL=false&serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="your_password"/>
            dataSource>
        environment>
    environments>
    
    <mappers>
        <package>com.example.mybatis.mapperpackage>
    mappers>
configuration>

注意将上述配置中的数据库连接相关信息(如用户名、密码、数据库名称等)替换为你实际使用的内容。

四、创建实体类、Mapper接口及对应的Mapper XML文件

  1. 创建实体类:在com.example.mybatis包下创建User实体类,用于映射数据库中的user表记录,代码示例如下:
package com.example.mybatis;

public class User {
    private Integer id;
    private String username;
    private String addr;
    private Integer age;

    // 生成对应的getter和setter方法
    public Integer getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }

    public Integer getAge() {
        return age;
    }

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

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", addr='" + addr + '\'' +
                ", age=" + age +
                '}';
    }
}
  1. 创建Mapper接口:在com.example.mybatis包下新建mapper子包,在该子包中创建UserMapper接口,定义对user表进行增删改查的抽象方法,示例代码如下:
package com.example.mybatis.mapper;

import com.example.mybatis.User;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

public interface UserMapper {
    // 查询所有用户
    @Select("SELECT * FROM user")
    List<User> findAllUsers();

    // 根据id查询用户
    @Select("SELECT * FROM user WHERE id = #{id}")
    User findUserById(Integer id);

    // 新增用户
    @Insert("INSERT INTO user (username, addr, age) VALUES (#{username}, #{addr}, #{age})")
    int insertUser(User user);

    // 更新用户信息
    @Update("UPDATE user SET username = #{username}, addr = #{addr}, age = #{age} WHERE id = #{id}")
    int updateUser(User user);

    // 删除用户
    @Delete("DELETE FROM user WHERE id = #{id}")
    int deleteUser(Integer id);
}

这里使用了Mybatis的注解方式来定义SQL语句,也可以使用XML方式(下面会简单提及XML方式的配置)。
3. 创建Mapper XML文件(可选,如果采用XML方式定义SQL语句)
- 在src/main/resources目录下创建与mapper包结构对应的目录结构(即com/example/mybatis/mapper),在该目录下创建UserMapper.xml文件,内容示例如下(以查询所有用户为例,展示XML方式编写SQL语句):


DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mybatis.mapper.UserMapper">
    <select id="findAllUsers" resultMap="UserResultMap">
        SELECT * FROM user
    select>
    <resultMap id="UserResultMap" type="com.example.mybatis.User">
        <id property="id" column="id"/>
        <result property="username" column="username"/>
        <result property="addr" column="addr"/>
        <result property="age" column="age"/>
    resultMap>
mapper>

同时需要在mybatis-config.xml标签中配置对应的Mapper XML文件路径(如果采用XML方式),例如:

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

五、编写测试类进行增删改查操作验证

src/test/java目录下创建测试类(例如MybatisTest),使用JUnit(需要添加JUnit依赖到pom.xml,此处省略添加依赖步骤)或者直接编写main方法来测试Mybatis的增删改查功能,示例代码如下(以JUnit 5为例):

package com.example.mybatis;

import com.example.mybatis.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 org.junit.jupiter.api.Test;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

import static org.junit.jupiter.api.Assertions.*;

public class MybatisTest {

    @Test
    public void testFindAllUsers() throws IOException {
        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        SqlSession sqlSession = sqlSessionFactory.openSession();

        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        List<User> userList = userMapper.findAllUsers();

        assertNotNull(userList);
        for (User user : userList) {
            System.out.println(user);
        }

        sqlSession.close();
    }

    @Test
    public void testFindUserById() throws IOException {
        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        SqlSession sqlSession = sqlSessionFactory.openSession();

        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User user = userMapper.findUserById(1);

        assertNotNull(user);
        System.out.println(user);

        sqlSession.close();
    }

    @Test
    public void testInsertUser() throws IOException {
        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        SqlSession sqlSession = sqlSessionFactory.openSession();

        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User newUser = new User();
        newUser.setUsername("赵六");
        newUser.setAddr("深圳");
        newUser.setAge(26);

        int result = userMapper.insertUser(newUser);
        sqlSession.commit();

        assertEquals(1, result);

        sqlSession.close();
    }

    @Test
    public void testUpdateUser() throws IOException {
        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        SqlSession sqlSession = sqlSessionFactory.openSession();

        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User updateUser = userMapper.findUserById(1);
        updateUser.setUsername("张三改");
        updateUser.setAddr("北京改");
        updateUser.setAge(26);

        int result = userMapper.updateUser(updateUser);
        sqlSession.commit();

        assertEquals(1, result);

        sqlSession.close();
    }

    @Test
    public void testDeleteUser() throws IOException {
        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        SqlSession sqlSession = sqlSessionFactory.openSession();

        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        int result = userMapper.deleteUser(3);
        sqlSession.commit();

        assertEquals(1, result);

        sqlSession.close();
    }
}

上述代码中的各个测试方法分别演示了查询所有用户、根据id查询用户、新增用户、更新用户和删除用户的操作流程。

通过以上完整的步骤,就完成了使用IntelliJ IDEA 2021创建名为Mybatis的Maven项目结构,并实现了基于Mybatis对数据库中user表数据的增删改查操作。在实际应用中,还可以根据具体业务需求进一步优化和扩展功能。

你可能感兴趣的:(数据库,mybatis,mysql)