ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Springboot3+MyBatis_Plus学习项目(一)

Springboot3+MyBatis_Plus学习项目(一) 从零创建后端项目实现CRUD接口目标从零创建后端项目实现用户 CRUD 接口环境JDK17、Maven、IDEA、MySQL8、SpringBoot3一、创建 SpringBoot 项目IDEA 新建项目1.文件 → 新建 → 项目选择Spring Initializr2.项目元信息组com.example工件secd_newjava版本17和本机jdk版本一致3.选择依赖Spring Webweb 开发写接口用MyBatis‑Plus Spring Boot Startermybatis‑plus 简化数据库操作MySQL Drivermysql 数据库驱动Lombok简化实体类省去手写 get、set、toString原理Spring Initializr 帮我们生成 Maven 项目骨架自动把依赖写到pom.xml。pom.xml是 Maven 配置文件所有 jar 包都在这里管理不需要手动下载 jar。Lombok编译阶段自动生成 get/set代码更简洁IDEA 必须安装 Lombok 插件否则代码报错。项目目录结构讲解src └── main ├── java/com/example/secd_new# Java源代码│ ├── SecdNewApplication.java# 项目启动类main方法整个程序入口│ ├── controller# 控制器接收浏览器/前端请求│ ├── entity# 实体类和数据库表一一对应│ ├── mapper# Mapper接口数据库交互│ └──service# 业务层后面写└── resources └── application.yml# 项目配置文件数据库、mybatis‑plus配置原理SecdNewApplication上面有SpringBootApplication代表这是 SpringBoot 启动入口运行 main 方法就启动整个 web 服务。SpringBoot 默认自动扫描启动类同包以及子包下面所有类所以 controller、entity、mapper 必须放在启动类的子包下面否则组件不生效创建数据库和表打开 Navicat新建数据库例如demo_db执行建表 SQLcreatetablet_user(idbigintprimarykeyauto_increment,namevarchar(50),ageint);--插入测试数据insertintot_user(name,age)values(小明,18),(小红,24),(小李,28),(小周,17),(小张,22);原理bigint对应 Java 的Long不能用 Integer类型不匹配查询报错。auto_increment主键自增新增数据不用手动传 id数据库自动生成。修改 application.yml 配置文件把默认的application.properties删掉新建application.ymlspring:datasource:driver-class-name:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://127.0.0.1:3306/demo_db?useSSLfalseserverTimezoneAsia/Shanghaiusername:rootpassword:你的mysql密码mybatis-plus:configuration:map-underscore-to-camel-case:true#下划线转驼峰 t_user → tUser原理spring.datasource告诉 SpringBoot 如何连接 MySQL 数据库地址、库名、账号密码。map‑underscore‑to‑camel‑case数据库字段带下划线Java 实体驼峰命名自动映射不用手动写映射。yml 格式注意冒号后面必须有空格缩进严格缩进错配置直接失效。编写 Entity 实体类 entity/User.javapackagecom.example.secd_new.entity;importcom.baomidou.mybatisplus.annotation.IdType;importcom.baomidou.mybatisplus.annotation.TableId;importcom.baomidou.mybatisplus.annotation.TableName;importlombok.Data;DataTableName(t_user)//绑定数据库哪一张表publicclassUser{TableId(typeIdType.AUTO)//主键自增privateLongid;privateStringname;privateIntegerage;}Datalombok 注解编译自动生成 get、set、toString。TableName(t_user)指定对应数据库表名如果实体类名和表名完全一致可以省略。TableId(type IdType.AUTO)标记主键告诉数据库主键自增。id 用Long数据库 bigint 必须对应 Long。Mapper 接口 Mapper/UserMapper.javapackagecom.example.secd_new.mapper;importcom.baomidou.mybatisplus.core.mapper.BaseMapper;importcom.example.secd_new.entity.User;importorg.apache.ibatis.annotations.Mapper;MapperpublicinterfaceUserMapperextendsBaseMapperUser{}原理MyBatis‑Plus 核心Mapper告诉 MyBatis 这是 mapper 接口用来操作数据库。继承BaseMapperUser直接拥有内置方法selectById、selectList、insert、updateById、deleteById不用自己写 SQL 语句。MyBatis 原生需要写 xml 写 SQLMyBatis‑Plus 封装通用 CRUD单表操作不用写 SQL。Controller 控制器 UserController.java接收前端请求调用 mapper 操作数据库返回结果。注意SpringBoot3 JDK17PathVariable(id)必须写括号里面的名字不能省略省略直接 500 报错packagecom.example.secd_new.controller;importcom.baomidou.mybatisplus.core.mapper.BaseMapper;importcom.example.secd_new.entity.User;importcom.example.secd_new.mapper.UserMapper;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.*;importjava.util.List;RestController//标记这是接口控制器返回JSON/字符串不是返回页面RequestMapping(/user)//统一接口前缀所有接口地址前面带上 /userpublicclassUserController{//把mapper注入进来AutowiredprivateUserMapperuserMapper;//1. 查询全部用户 GET请求GetMapping(/list)publicListUsergetAll(){returnuserMapper.selectList(null);}//2. 根据id查询单个用户 GETGetMapping(/{id})publicStringgetById(PathVariable(id)Longid){UseruseruserMapper.selectById(id);if(usernull){return查无此人;}returnid:user.getId() name:user.getName() age:user.getAge();}//3. 新增用户 POSTPostMapping(/add)publicStringadd(RequestBodyUseruser){userMapper.insert(user);return新增成功;}//4. 修改用户 PUTPutMapping(/update)publicStringupdate(RequestBodyUseruser){userMapper.updateById(user);return修改成功;}//5. 删除用户 DELETEDeleteMapping(/del/{id})publicStringdel(PathVariable(id)Longid){userMapper.deleteById(id);return删除成功;}}注解原理RestControllerController ResponseBody方法返回值直接输出给前端不是跳转网页。RequestMapping(/user)统一接口前缀。GetMapping接收 GET 请求浏览器地址栏访问就是 GET。PostMapping / PutMapping / DeleteMappingPOST/PUT/DELETE 请求浏览器地址栏无法直接发起。PathVariable(id)从 url 路径获取参数例如/user/33 赋值给 id 变量。RequestBody接收前端传过来的 JSON 格式数据。AutowiredSpring 自动把 Mapper 对象注入进来不用自己 new 对象。启动项目 浏览器测试开头运行启动类SecdNewApplication的 main 方法。控制台输出Started SecdNewApplication代表项目启动成功默认端口8080。打开浏览器输入地址http://localhost:8080/user/list可以看到全部用户 JSON 数据代表整套流程跑通。再测试单查http://localhost:8080/user/3浏览器局限浏览器地址栏只能发送 GET 请求。新增、修改、删除是 POST/PUT/DELETE浏览器地址栏做不到需要 IDEA 的 http 文件或者 Postman 测试。后续待拓展抽离 Service 层把业务逻辑从 Controller 拿出来Controller 只负责接收请求。统一返回 JSON 格式不再返回普通字符串。参数校验、全局异常处理。http 文件测试 POST/PUT/DELETE 接口。
返回列表