• IDEA SpringBoot-Mybatis-plus 实现增删改查(CRUD)


    上一篇: IDEA SpringBoot-Mybatis实现增删改查(CRUD)
    下一篇:Intellij IDEA 高效使用教程 (插件,实用技巧) 最好用的idea插件大全

    一、前言

    • Mybatis:数据持久化框架
    • Mybatis-Plus:对Mybatis进行了增强,它封装了基本的增删改查操作,使我们自己不需要再去写很多重复的代码,大大解放了生产力!

    二、创建项目

    • 新建项目时选择Spring Initializer。
    • 也可以选择maven新建,但是不建议新手,因为要自己导入依赖,会给自己搞懵
    • 打开IDEA,选择New Project >>>
      在这里插入图片描述
    • 创建项目文件结构、选择jdk版本
    • 一般选择Java version8
    • 然后下一步 Next
      在这里插入图片描述
    • 选择项目需要的依赖
    • 首先点击web选择spring web,再点击SQL选择MySQL driver 等,然后再一路Finish到新建完成。
      在这里插入图片描述
      查看项目 修改pom.xml文件
    <?xml version="1.0" encoding="UTF-8"?>
    <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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.6.5</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.hao</groupId>
        <artifactId>demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>demo</name>
        <description>demo</description>
        <properties>
            <java.version>1.8</java.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!--        热部署 可有可无自行选择-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
            </dependency>
            <!--        @Data 注解 省力的插件 自动生成set get 有参无参-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
            <!--        mysql-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
            <!--      mybatis-plus-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.2.0</version>
            </dependency>
            <!--        jdbc连接池-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    
    

    创建成功后删除src下面的test目录
    说明:
    中 spring-boot-starter-parent 帮我们做了SpringBoot相关依赖包的版本号管理,所以有些依赖包不需要我们自己去写
    但像 mybatis-plus-boot-starter 它是不属于spring-boot相关的, parent中没有做版本号管理,所以还需要手动写一下。

    三、目录结构

    在这里插入图片描述

    四、sql和application.yml

    4.1 导入sql语句

    CREATE TABLE `user_info` (
    	`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '用户id',
    	`username` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '用户名' COLLATE 'utf8mb4_general_ci',
    	`password` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '密码' COLLATE 'utf8mb4_general_ci',
    	`create_time` DATETIME NOT NULL COMMENT '创建时间',
    	PRIMARY KEY (`id`) USING BTREE
    );
    

    说明:创建一个数据库,然后运行上述sql语句,生成用户表,主要就下面四个字段

    • id 用户id 自增主键
    • username 用户名
    • password 密码
    • create_time 创建时间

    4.2 修改application.yml配置文件

    把文件里的application.properties修改成yml格式 yml更加便于管理,看起来也更舒适

    server:
      port: 8887 #端口号可以自定义
    spring:
      devtools:    #这个就是前面我下的热部署,自行了解
        restart:
          enabled: true  #开启
          additional-paths: src/main/java 
          exclude: WEB-INF/**
      freemarker:
        cache: false  
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        username: root #自己的数据库账号
        password: 123456  #自己的密码
        url: jdbc:mysql:///test?characterEncoding=utf-8&serverTimezone=UTC  #"?"号前面是数据库名称 我的是test   "///"默认为localhost:3306 如果你的不是默认端口自行修改
    
      #配置MP和在控制台打印sql语句
    mybatis-plus:
      mapper-locations: classpath*:/mapper/**/*.xml
      configuration:
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    
    logging:
      level:
        com:
          hao:
            mapper: debug  //这里根据自己的路径添加debug
    

    五,修改程序的启动入口类DemoApplication

    作用是扫描到mapper里面中的类,注意路径要和项目中实际路径一致
    @MapperScan(value = "com.对应自己的路径.mapper")

    package com.hao;
    
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    @MapperScan("com.hao.mapper")
    @SpringBootApplication
    public class DemoApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    
    }
    
    

    六,在实体类包中新建UserInfo.java,使之与数据库中的字段一一对应 我的包叫pojo 也可以叫entity

    package com.hao.pojo;
    
    import com.baomidou.mybatisplus.annotation.IdType;
    import com.baomidou.mybatisplus.annotation.TableId;
    import com.baomidou.mybatisplus.annotation.TableName;
    import lombok.Data;
    
    import java.time.LocalDateTime;
    //@Data 就是lombok 的注解 自动生成了set get
    @Data 
    @TableName(value = "user_info")  //@TableName 对应你的数据库表名
    public class UserInfo {
        @TableId(value = "id",type = IdType.AUTO)  //@TableId 说明这条数据自增长也是对应数据库自增长的
        private Integer id;
        private String username;
        private String password;
        private LocalDateTime createTime;
    }
    
    

    说明:这里类成员变量和数据库字段对应,Mybatis自动做了驼峰法到下划线的转换
    如:数据库 create_time -> 类变量 createTime

    七,在mapper包中新建UserInfoMapper接口

    package com.hao.mapper;
    
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import com.hao.pojo.UserInfo;
    
    public interface UserInfoMapper extends BaseMapper<UserInfo> {
    }
    
    

    说明:BaseMapper 类封装了dao层基本的增删改查操作

    八,在src/main/resources/maping文件夹下新建UserInfoMapper的映射文件UserInfoMapper.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.自己的路径.UserInfoMapper">
    
    </mapper>
    

    说明:这里的namespace和上述的UserInfoMapper路径对应一致

    九,在service里新建 impl和UserInfoService 接口类

    package com.hao.service;
    
    import com.baomidou.mybatisplus.extension.service.IService;
    import com.hao.pojo.UserInfo;
    
    public interface UserInfoService extends IService<UserInfo> {
    }
    
    

    说明:这里IService封装了service层基本的增删改查

    十,在service里的impl新建UserInfoServiceImpl 类

    package com.hao.service.impl;
    
    import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
    import com.hao.mapper.UserInfoMapper;
    import com.hao.pojo.UserInfo;
    import com.hao.service.UserInfoService;
    import org.springframework.stereotype.Service;
    
    @Service
    public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> implements UserInfoService {
    }
    
    

    十一,在controller里新建 UserInfoController类

    package com.hao.controller;
    
    import com.hao.pojo.UserInfo;
    import com.hao.service.UserInfoService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    
    import java.time.LocalDateTime;
    import java.util.List;
    
    @RestController
    @RequestMapping("/userInfo")
    public class UserInfoController {
        @Autowired
        private UserInfoService userInfoService;
    
        //增加
        @PostMapping("/add")
        public Boolean add(@RequestBody UserInfo userInfo) {
            userInfo.setCreateTime(LocalDateTime.now());
            return userInfoService.save(userInfo);
        }
    
        //删除
        @GetMapping("delete/{id}")
        public Boolean delete(@PathVariable Integer id) {
            return userInfoService.removeById(id);
        }
    
        //修改
        @PostMapping("/update")
        public Boolean update(@RequestBody UserInfo userInfo) {
            return userInfoService.updateById(userInfo);
        }
    
        //查询
        @GetMapping("/get/{id}")
        public UserInfo get(@PathVariable Integer id) {
            return userInfoService.getById(id);
        }
    
        //查询全部
        @GetMapping("/list")
        public List<UserInfo> list() {
            return userInfoService.list();
        }
    
    }
    
    

    说明:增删改查接口,基本上不需要自己写sql,直接调用Mybatis-Plus封装好的接口。 没啥好讲的

    十二,使用Postman进行测试

    到这里就完成了增删改查操作,接下来我们对上面的代码在Postman中进行验证

    1.新增一条信息

    http://localhost:8887/userInfo/add
    

    在这里插入图片描述
    在这里插入图片描述
    2.通过用户id删除用户

    http://localhost:8887/userInfo/delete/215
    

    在这里插入图片描述
    在这里插入图片描述
    3.根据用户id更新用户信息

    http://localhost:8887/userInfo/update?id=1   
    

    在这里插入图片描述
    在这里插入图片描述
    这里要注意要用JSON的方式写参数

    4.通过用户id获取信息:

    http://localhost:8887/userInfo/get/1
    

    在这里插入图片描述
    5.打印所有信息

    http://localhost:8887/userInfo/list
    

    在这里插入图片描述
    在这里插入图片描述
    三条信息全部打印出来了

    !!!转载请注明出处!!!
    !!!转载请注明出处!!!
    !!!转载请注明出处!!!

  • 相关阅读:
    【ArcGIS Pro二次开发】(71):添加图层名称和路径到字段
    [Python从零到壹] 七十一.图像识别及经典案例篇之图像特效(滤镜和均衡化特效)
    OpenCV自学笔记二十六:人脸检测
    Java ByteArrayOutputStream类简介说明
    Oracle通过局域网进行连接访问的设置
    java计算机毕业设计华北地区阔叶林木叶部病虫害图像管理系统MyBatis+系统+LW文档+源码+调试部署
    蓝牙SDK状态机与车载音频HSM状态机比较
    道可云元宇宙每日资讯|中国移动启动算网大脑“天穹”全网试商用
    Linux——基础IO
    excel高级绘图技巧100讲(六)-甘特图在项目进度上的实战应用案例
  • 原文地址:https://www.cnblogs.com/haoxi135/p/16177687.html