4

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

 2 years ago
source link: https://www.cnblogs.com/haoxi135/p/16177687.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

上一篇: 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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK