IDEA+Maven使用MyBatis实现CRUD操作(内容详细,万字长文带你了解MyBatis~)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: IDEA+Maven使用MyBatis实现CRUD操作(内容详细,万字长文带你了解MyBatis~)

IDEA+Maven使用MyBatis实现CRUD操作

Hello,大家好,今天我为大家带来在IDEA中使用Maven构建MyBatis项目,实现简单的增删改查操作,

总结了博主在学习过程中的一些经验,下面进入构建项目

MyBatis介绍

在这里插入图片描述

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

---> 摘自MyBatis官网

为什么使用MyBatis

首先,之前用的是JDBC实现数据库的CRUD操作,拼接SQL语句过于麻烦,代码容易出错,大大降低开发效率

使用MyBatis实现CRUD操作大大提升了开发效率,MyBatis作为一款优秀的持久层框架,大大减少了SQL语句的拼接,提升了代码的易读性,便于维护,利用MyBatis采用接口对应XML文件的方式来实现对数据库的CRUD操作。

新建Maven项目

File --> New ---> Project

在这里插入图片描述

如下:

在这里插入图片描述

单击Next

在这里插入图片描述

单击Finish完成Maven项目创建

==注意:Maven构建项目时需要看Maven指向的路径是不是本地路径==

File --> setting --> Build,Exception,Eeployment --> Build Tools --> Maven

在这里插入图片描述

配置完后,单击Apply同意,OK确认

配置pom.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.4</version>
        </dependency>
<!--        junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
            <resource>
                <directory>libs/</directory>
                <targetPath>libs</targetPath>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>
        </resources>
    </build>

项目结构

在这里插入图片描述

数据库准备

新建数据库mybatis ,数据表user

CREATE DATABASE mybatis;
USE mybatis;
CREATE TABLE `user` (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) DEFAULT NULL,
  `password` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
)

resources ---> New ---> File 命名为db.properties配置数据库信息

在这里插入图片描述

db.properties文件

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1/mybatis?useSSL=true
username=root
password=111111

MyBatis核心配置文件

resources ---> New ---> File 命名为mybatis-config.xml

在这里插入图片描述

==注意:单击刷新键,将配置的文件从远程仓库下载到本地仓库中==

在这里插入图片描述

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>

<!--    引入数据库配置信息-->
    <properties resource="db.properties"/>
    <settings>
        <!--        标准的日志工厂实现-->
        <setting name="logImpl" value="StDOUT_LOGGING"/>
        <!--        <setting name="logImpl" value="LOG4J"/>-->
    </settings>
    <typeAliases>
        <package name="com.wanshi.bean"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driverClassName}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--    注册接口-->
    <mappers>
        <mapper resource="com/wanshi/mapper/UserMapper.xml"></mapper>
    </mappers>
</configuration>

编写源代码

新建如下项目结构

在这里插入图片描述

MyBatis工具类

编写MyBatisUtils类

package com.wanshi.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 {
        try {
            String resources = "mybatis-config.xml";
            //将mybatis核心配置文件封装成输入流
            InputStream in = Resources.getResourceAsStream(resources);
            //SqlSessionFactoryBuilder对输入流进行build编译为sqlSessionFactory
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * sqlSessionFactory构造返回一个SqlSession进行数据库CRUD操作
     * @return
     */
    public SqlSession getSession() {
        return sqlSessionFactory.openSession();
    }
}

实体类

编写User类

package com.wanshi.bean;

public class User {

    private Integer id;
    private String name;
    private Integer password;

    public User() {
    }

    public User(Integer id, String name, Integer password) {
        this.id = id;
        this.name = name;
        this.password = password;
    }

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public Integer getPassword() {
        return password;
    }

    public void setPassword(Integer password) {
        this.password = password;
    }

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

mapper接口与xml文件编写

编写UserMapper接口

package com.wanshi.mapper;

import com.wanshi.bean.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface UserMapper {

    /**
     * 查询所有的用户
     * @return
     */
    List<User> getUserList();

    /**
     * 根据用户id查询一个用户信息
     * @param id
     * @return
     */
    User getByUserId(@Param("uid") Integer id);

    /**
     * 增加一个用户
     * @param user
     * @return
     */
    Integer add(User user);

    /**
     * 修改一个用户信息
     * @param user
     * @return
     */
    Integer update(User user);

    /**
     * 根据用户id删除一个用户
     * @param id
     * @return
     */
    Integer delete(@Param("uid") Integer id);
}

UserMapper.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.wanshi.mapper.UserMapper">

    <select id="getUserList" resultType="user">
        select * from user
    </select>

    <select id="getByUserId" resultType="user">
        select * from user where id = #{uid}
    </select>

    <insert id="insert" parameterType="user">
        insert into user (name, password) values(#{name}, #{password})
    </insert>

    <update id="update" parameterType="user">
        update user set name = #{name}, password = #{password} where id = #{id}
    </update>

    <delete id="delete" parameterType="int">
        delete from user where id = #{uid}
    </delete>
</mapper>

IDEA中连接数据库

单击右侧DataSource选项连接数据库

在这里插入图片描述

单击+

在这里插入图片描述

选择DataSource --- > MySQL
在这里插入图片描述

单击apply同意,单击ok,连接成功,如下页面

在这里插入图片描述

测试

新建测试类,TestUser,这里利用Junit单元测试来实现

package com.wanshi.test;

import com.wanshi.bean.User;
import com.wanshi.mapper.UserMapper;
import com.wanshi.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class TestUser {

    @Test
    public void getUserList() {
        SqlSession sqlSession = MyBatisUtils.getSession();

        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        List<User> userList = userMapper.getUserList();
        for (User user : userList) {
            System.out.println(user);
        }
        sqlSession.close();
    }

    @Test
    public void getByUserId() {
        SqlSession sqlSession = MyBatisUtils.getSession();

        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User user = userMapper.getByUserId(1);
        System.out.println(user);
        sqlSession.close();
    }

    @Test
    public void insert() {
        SqlSession sqlSession = MyBatisUtils.getSession();

        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User user = new User();
        user.setName("admin");
        user.setPassword(1234);
        Integer i = userMapper.insert(user);
        System.out.println(i);
        //    注意:增删改操作需要手动开启事务,否则无法执行
        if (i > 0) {
            sqlSession.commit();
        }
        sqlSession.close();
        
    }

    @Test
    public void update() {
        SqlSession sqlSession = MyBatisUtils.getSession();

        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        Integer i = userMapper.update(new User(3, "李三", 123445));
        System.out.println(i);
        //    注意:增删改操作需要手动开启事务,否则无法执行
        if (i > 0) {
            sqlSession.commit();
        }
        sqlSession.close();
    }

    @Test
    public void delete() {
        SqlSession sqlSession = MyBatisUtils.getSession();

        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        Integer i = userMapper.delete(2);
        System.out.println(i);
        //    注意:增删改操作需要手动开启事务,否则无法执行
        if (i > 0) {
            sqlSession.commit();
        }
        sqlSession.close();
    }

}

测试结果

查询所有用户
在这里插入图片描述

根据用户id查询指定用户

在这里插入图片描述

增加用户

在这里插入图片描述

修改用户

在这里插入图片描述

删除用户

在这里插入图片描述

结语

MyBatis入门级的增删改查操作就结束了,程序执行肯定没问题,遇到问题的小伙伴可在评论区留言,我们下篇见,Mybatis系列文章!
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
Java Maven
解决idea每次新建maven项目都需要重新配置maven的问题
解决idea每次新建maven项目都需要重新配置maven的问题
204 1
|
2月前
|
SQL Java 数据库连接
MyBatis-Plus:简化 CRUD 操作的艺术
MyBatis-Plus 是一个基于 MyBatis 的增强工具,它旨在简化 MyBatis 的使用,提高开发效率。
83 1
MyBatis-Plus:简化 CRUD 操作的艺术
|
2月前
|
Java Maven Kotlin
idea maven创建kotlin项目
本文介绍了在IntelliJ IDEA中使用Maven创建Kotlin项目的步骤,包括在`pom.xml`文件中添加Maven中央仓库、配置`kotlin-maven-plugin`插件、指定源目录、添加测试插件和执行插件,以及添加Kotlin测试依赖和标准库依赖。文中还提到了如何通过更换镜像或使用代理来解决依赖下载速度慢的问题,并展示了运行示例代码的截图。
151 4
idea maven创建kotlin项目
|
2月前
|
搜索推荐 Java 数据库连接
Java|在 IDEA 里自动生成 MyBatis 模板代码
基于 MyBatis 开发的项目,新增数据库表以后,总是需要编写对应的 Entity、Mapper 和 Service 等等 Class 的代码,这些都是重复的工作,我们可以想一些办法来自动生成这些代码。
41 6
|
2月前
|
缓存 IDE Java
idea的maven项目打包时没有source下的文件
【10月更文挑战第21天】idea的maven项目打包时没有source下的文件
108 1
|
2月前
|
Java 应用服务中间件 Maven
【终极解决方案】IDEA maven 项目修改代码不生效。
【终极解决方案】IDEA maven 项目修改代码不生效。
490 1
|
2月前
|
Java Linux Maven
IDEA如何用maven打包(界面和命令两种方式)
【10月更文挑战第14天】本文介绍了两种Maven项目打包方法:命令行与IDEA界面。首先确保已安装Maven并配置环境变量,通过`mvn -v`检查安装。命令行打包需进入项目目录,执行`mvn package`,之后在`target`目录查看结果。IDEA打包则需配置Maven路径,打开Maven Projects窗口,双击Lifecycle下的`package`阶段,同样在`target`目录查找生成文件,并在Build窗口查看日志以排查问题。
1371 1
|
2月前
|
Java Devops 持续交付
Maven学习笔记(二):Maven基础(基于IDEA)
【10月更文挑战第1天】Maven 是一款 Java 项目构建工具,主要用于管理 jar 包及其依赖关系。上一篇简单介绍了Maven的基础知识,本文主要介绍IDEA上的实际使用场景。内容上几近全为学习《尚硅谷2022版Maven教程》整理所得。仅供参考。
193 0
Maven学习笔记(二):Maven基础(基于IDEA)
|
2月前
|
Java 应用服务中间件 Maven
idea+maven+tomcat+spring 创建一个jsp项目
这篇文章介绍了如何在IntelliJ IDEA中使用Maven和Tomcat创建一个JSP项目,包括配置Maven依赖、设置Tomcat服务器、编写JSP页面、创建控制器和配置文件,以及项目的运行结果。
248 0
idea+maven+tomcat+spring 创建一个jsp项目
|
2月前
|
Java Maven
震惊!idea专业版如何配置maven国内源手把手教学
文章提供了如何在IDEA专业版中配置Maven使用国内源(如阿里云)的详细步骤,以加快依赖下载速度,并解释了配置国内源的原因。
718 0
震惊!idea专业版如何配置maven国内源手把手教学