当前位置:

首页 > 编程开发 > SpringBoot怎么整合Mybatis实现增删改查

SpringBoot怎么整合Mybatis实现增删改查

第一:创建MySQL数据库首先我们应该先创建一个数据库,用于操作我们CRUD的数据(可以使用可视化工具进行创建,也可以使用SQL命令进行创建),数据库的名字可以自己定义,创建完数据库之后,我们就要创建表进行数据的存储了,表的名字叫’user‘表,字段可以自己设置,只要和后边自己创建的实体对应就好了。CREATETABLE`user`(`userId`bigintNOTNULLAUTO_INCREMENT,`userName`varchar(255)COLLATEutf8mb4_bi

本文目录

    第一:创建MySQL数据库

    首先我们应该先创建一个数据库,用于操作我们CRUD的数据(可以使用可视化工具进行创建,也可以使用SQL命令进行创建),数据库的名字可以自己定义,创建完数据库之后,我们就要创建表进行数据的存储了,表的名字叫’ user ‘表,字段可以自己设置,只要和后边自己创建的实体对应就好了。

    SpringBoot怎么整合Mybatis实现增删改查

    CREATE TABLE `user` (
      `userId` bigint NOT NULL AUTO_INCREMENT,
      `userName` varchar(255) COLLATE utf8mb4_bin NOT NULL,
      `userAddress` varchar(255) COLLATE utf8mb4_bin NOT NULL,
      PRIMARY KEY (`userId`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

    第二:创建SpringBoot项目,引入需要的依赖包

    用IDEA创建SpringBoot项目:

    • 1、选择Spring Initializr创建,然后JDK选择1.8,Java8版本。

    • 2、初始化组件选择Spring Web、JDBC API、Mybatis Framework、MySQL Driver,Lombok也可以选择一下,可能会用到。

    • 3、选择好了之后点击Finish创建就好了。

    • 4、创建好了SpringBoot之后看看自己的Maven有没用配置好,如果没有配置好去查询如何配置Maven,不然你的pom依赖是加载不了的,就下载一下Maven,如何换个阿里源镜像地址和本地仓库,然后IDEA选择一下Maven的xml文件和本地仓库地址就好了。

    SpringBoot怎么整合Mybatis实现增删改查

    SpringBoot怎么整合Mybatis实现增删改查

    SpringBoot怎么整合Mybatis实现增删改查

    SpringBoot怎么整合Mybatis实现增删改查

    以上是所需要的依赖包,如果忘记引入的,可以直接添加即可,不用再重新创建项目了

    第三:创建程序目录和配置核心application.xml文件

    首先需要创建四个文件夹,分别是:Entity(用户实体)、Controller、Service、Dao,然后还需要在 resource 目录下新建 Mapper 目录,这个 Mapper 目录是用来存放 SQL 语句的地方。到这里我觉得需要理解一下MVC模式,由于我们的访问一层调用一层,然后查询到数据之后再返回过去的,所以我们的层级应该是:Controller(控制层,也是接收前端传递参数的层) -> Service(业务层,我们所有的业务,如判断和一些循环语句就需要写到这个层当中) -> Dao(持久层,这个层主要是和数据库打交道的,主要负责数据的操作,也就是CRUD操作) -> 数据库,

    如下图所示:

    SpringBoot怎么整合Mybatis实现增删改查

    没有啥好的画图工具,就随便画了一下,反正数据的流向就是这样的,大家可以凑合看一下。

    SpringBoot怎么整合Mybatis实现增删改查

    在resources文件夹下创建yml文件,并输入如下内容:

    server:
      port: 8080    //本机的端口号
    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/自己数据库的名称?useUnicode=true & characterEncoding=utf-8 &
          useSSL=true & serverTimezone=Asia/Shanghai
        username: root      //数据库的用户名
        password: xxxxxx    //数据库的密码
    
    mybatis:
      mapper-locations: classpath:/Mapper/*.xml
      type-aliases-package: com.example.test.Entity    //这个是扫描到Entity实体包的路径,可根据自己的配置

    SpringBoot怎么整合Mybatis实现增删改查

    配置好yml文件之后,我们去看右侧的Databases去看看能不能连接自己本地的MySQL数据库:

    SpringBoot怎么整合Mybatis实现增删改查

    SpringBoot怎么整合Mybatis实现增删改查

    依次分别填,数据表名字(这里我们的表是user表),用户名和密码、还有数据库名

    第四:依次编写Entity、Dao、Service、Controller层,还有创建mapper.xml文件

    Entity包:创建一个UserEntity类,内容如下:

    public class UserEntity {
        private Integer userId;
        private String userName;
        private String userAddress;
    
        public Integer getUserId() {
            return userId;
        }
    
        public void setUserId(Integer userId) {
            this.userId = userId;
        }
    
        public String getUserName() {
            return userName;
        }
    
        public void setUserName(String userName) {
            this.userName = userName;
        }
    
        public String getUserAddress() {
            return userAddress;
        }
    
        public void setUserAddress(String userAddress) {
            this.userAddress = userAddress;
        }
    }

    Dao包:创建一个UserDao接口,内容如下:

    import com.example.test.Entity.UserEntity;
    import org.apache.ibatis.annotations.Mapper;
    
    import java.util.List;
    
    @Mapper
    public interface UserDao {
         List queryLimit(Integer currentPage, Integer pageSize);
    
         Integer addUser(UserEntity user);
    
         Integer updateUser(UserEntity user);
    
         Integer deleteUser(UserEntity user);
    }

    Service包:创建一个UserService类,内容如下:

    import com.example.test.Dao.UserDao;
    import com.example.test.Entity.UserEntity;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    @Service("UserService")
    public class UserService {
        @Autowired
        private UserDao userDao;
    
        public List queryLimit(Integer currentPage,Integer pageSzie){
            return userDao.queryLimit(currentPage,pageSzie);
        }
    
        public Integer addUser(UserEntity user){
            return userDao.addUser(user);
        }
    
        public Integer updateUser(UserEntity user){
            return userDao.updateUser(user);
        }
    
        public Integer deleteUser(UserEntity user){
            return userDao.deleteUser(user);
        }
    }

    Controller包:创建一个UserController类,内容为:

    import com.example.test.Entity.UserEntity;
    import com.example.test.Service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    
    import java.util.List;
    
    @RestController
    @RequestMapping("user")
    public class UserController {
        @Autowired
        private UserService userService;
    
        String message = "";
        @RequestMapping("/queryLimit")
        public List queryLimit(@RequestParam("currentPage") Integer currentPage,@RequestParam("pageSize") Integer pageSize){
            return userService.queryLimit(currentPage,pageSize);
        }
    
        @PostMapping("/addUser")
        public String addUer(@RequestBody UserEntity user){
            //用Mybatis执行insert语句的时候,插入成功会返回1,不成功则会抛出异常,捕获一下异常就好
            try {
                userService.addUser(user);
                message = "增加用户成功";
            }catch (Exception exception){
                message = "增加用户异常";
            }
            return message;
        }
    
        @PutMapping("/updateUser")
        public String updateUser(@RequestBody UserEntity user){
            //Mybatis的更新操作成功返回1,用户不存在返回0,失败则抛异常
            try {
                message = userService.updateUser(user) == 1?"更新用户成功":"用户不存在,更新失败";
            }catch (Exception exception){
                message = "更新异常";
            }
            return message;
        }
    
        @DeleteMapping("/deleteUser")
        public String deleteUser(@RequestBody UserEntity user){
            //Mybatis的删除操作和更新返回值一样,成功返回1,用户不存在返回0,失败则抛异常
            try {
                message = userService.deleteUser(user) == 1?"删除用户成功":"用户不存在,删除失败";
            }catch (Exception exception){
                message = "删除异常";
            }
            return message;
        }
    }

    编写完上面的内容之后我们需要在Mapper文件夹下创建mapper.xml文件,如下图:

    SpringBoot怎么整合Mybatis实现增删改查

    mapper.xml文件内容如下:需要注意的地方是namespace:这个路径是你的UserDao接口的路径,因为你传过来的数据需要和xml进行一个绑定,这样你编写的SQL语句才能接收到你前端传过来的数据(大体意思可以这么理解),而id则是和你UserDao中的接口方法相对应,比如我的UserDao接口中的查找方法命名是queryLimit,那么我在xml文件中的查询语句的id就应该和queryLimit想对应,即:id=“queryLimit”。
    resultType是返回数据的类型
    parameterType则是传入的数据类型

    
    
    
        
            select * from user limit #{currentPage},#{pageSize};
        
    
        
            insert into user(userName,userAddress) values(#{userName},#{userAddress});
        
    
        
            update user set userName=#{userName},userAddress=#{userAddress} where userId=#{userId};
        
    
        
            delete from user where userId=#{userId};
        
    

    最后我们需要在启动类加一点东西(MapperScan扫描的是我们Dao包的地址,填写自己的就好)

    SpringBoot怎么整合Mybatis实现增删改查

    第五:测试结果(这里我用的postman来进行接口测试)

    查询用户数据->地址为:http://localhost:8080/user/queryLimit?currentPage=0&pageSize=5

    SpringBoot怎么整合Mybatis实现增删改查

    添加用户数据-> 地址为:http://localhost:8080/user/addUser

    SpringBoot怎么整合Mybatis实现增删改查

    数据库也能看到数据:

    SpringBoot怎么整合Mybatis实现增删改查

    更新用户数据-> 地址为:http://localhost:8080/user/updateUser

    SpringBoot怎么整合Mybatis实现增删改查

    更新之后数据库数据为:

    SpringBoot怎么整合Mybatis实现增删改查

    删除用户数据-> 地址为:http://localhost:8080/user/deleteUser

    SpringBoot怎么整合Mybatis实现增删改查

    查看数据库数据已经删除:

    SpringBoot怎么整合Mybatis实现增删改查

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    相关文章 更多
    MyBatis XML开发全面完整指南
    MyBatis XML开发全面完整指南

    MyBatisXML开发方式适合复杂SQL逻辑,通过配置数据库连接与mapper路径,在接口和XML映射文件中实现增删改查操作。XML支持多表查询及结果映射,#{}使用预编译防注入,${}直接拼接需注意字符串引号。

    MyBatis Mapper 接口原理与实现解析
    MyBatis Mapper 接口原理与实现解析

    MyBatis通过动态代理自动生成Mapper接口实现类,运行时将接口方法绑定到SQL语句,结合XML映射文件中的SQL与参数配置,由SqlSession执行并返回结果,避免了手动编写实现类的繁琐过程。

    MyBatis框架常见问题及解决方案
    MyBatis框架常见问题及解决方案

    MyBatis常见问题包含:1.实体类属性与数据库字段不一致,解决方案为使用@Column注解映射;2.执行更新操作失败,需要配置update元素并检查SQL语句;3.查询结果映射出错,需检查resultMap配置是否正确;4.解析SQL参数失败,要使用#{}占位符并确保参数类型匹配。

    MyBatis框架中设计模式的应用
    MyBatis框架中设计模式的应用

    MyBatis框架广泛应用设计模式,包括:工厂模式:创建SqlSessionFactory对象,管理数据库连接和查询;代理模式:实现延迟加载和懒加载,提高性能。外观模式:封装对数据库访问,简化代码维护。其中,一对多关系映射可以通过User和Order类、Mapper接口和MapperXML配置实现,使用延迟加载和嵌套resultMap优化性能。

    MyBatis 的动态 SQL 解析:原理、实现和优化
    MyBatis 的动态 SQL 解析:原理、实现和优化

    MyBatis动态SQL解析:原理:使用TAG和OGNL表达式动态构建SQL语句。实现:通过SqlNode、SqlSource和ParameterHandler接口实现。优化:避免不必要的动态SQL、优化OGNL表达式、使用PreparedStatement缓存和配置查询超时。

    springBoot项目常用目录有哪些
    springBoot项目常用目录有哪些

    springBoot项目常用目录springBoot项目的目录结构及名规范介绍基于SpringBoot开发时的目录结构及命名规范,通过介绍能够为你解决,在实际项目中如何规划目录结构?如何命名目录更规范?各个目录分别代表什么含义?等三个问题。目录说明servicex//项目名|-admin-ui//管理服务前端代码(一般将UI和SERVICE放到一个工程中,便于管理)|-servicex-auth//模块1|-servicex-common//模块2|-servicex-gateway//模块3|-serv

    正确使用MyBatis中的小于符号
    正确使用MyBatis中的小于符号

    MyBatis是一个用Java语言编写的持久层框架,广泛用于数据库操作。在MyBatis中,使用小于号(<)进行条件查询是很常见的操作。但是,小于号在MyBatis中有一些使用注意事项,本文将介绍MyBatis小于号的正确使用方法,并提供具体的代码示例。1.在MyBatis中使用小于号的基本方法在MyBatis中使用小于号进行条件查询,一般是在SQL

    解析MyBatis的缓存机制:比较一级缓存和二级缓存的使用场景
    解析MyBatis的缓存机制:比较一级缓存和二级缓存的使用场景

    MyBatis的缓存机制解析:一级缓存与二级缓存的区别与应用在MyBatis框架中,缓存是一个非常重要的特性,可以有效提升数据库操作的性能。其中,一级缓存和二级缓存是MyBatis中常用的两种缓存机制。本文将详细解析一级缓存与二级缓存的区别与应用,并提供具体的代码示例进行说明。一、一级缓存一级缓存也被称为本地缓存,它默认开启且不可关闭。一级缓存是SqlSes

    深入了解MyBatis缓存机制:揭秘缓存存储原理
    深入了解MyBatis缓存机制:揭秘缓存存储原理

    MyBatis缓存机制详解:一文读懂缓存存储原理引言在使用MyBatis进行数据库访问时,缓存是一个非常重要的机制,能够有效减少对数据库的访问,提高系统性能。本文将详细介绍MyBatis的缓存机制,包括缓存的分类、存储原理和具体的代码示例。一、缓存的分类MyBatis的缓存主要分为一级缓存和二级缓存两种。一级缓存一级缓存是SqlSession级别的缓存,当在

    详解在MyBatis中使用小于符号的方法
    详解在MyBatis中使用小于符号的方法

    MyBatis中小于号的写法详解MyBatis是一个优秀的持久层框架,广泛应用于Java开发中。在使用MyBatis进行数据库操作的过程中,我们经常会用到小于号(<)进行条件查询。但是,MyBatis中小于号的写法并不像普通的SQL语句那样直接使用小于号符号,而是需要使用特定的方式来实现。本文将详细解释MyBatis中小于号的写法,并提供具体的代码示例

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。