当前位置: 首页 > news >正文

JavaSpring+mybatis+Lombok,实现java架构[保姆教程]

1.环境与依赖配置

jdk目前稳定版本就是1.8,或者17

如果你是想选springboot3以上版本,那你就要用jdk17以上的版本

#下面这些内容是为了让MyBatis映射
#指定Mybatis的Mapper文件
mybatis.mapper-locations=classpath:mappers/*xml
#指定Mybatis的实体目录
mybatis.type-aliases-package=com.itheima.derm05.mybatis.entity   //mybatis的东西
# 应用服务 WEB 访问端口
server.port=8020  //端口spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/dormbd?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456   // 连接接口,比jdbc舒服多了// 注意这个之后要考,蛇形命名法映射驼峰命名法mybatis.configuration.map-underscore-to-camel-case=true  spring.web.cors.allowed-origins=*
spring.web.cors.allowed-methods=GET,POST,PUT,DELETE,OPTIONS
spring.web.cors.allowed-headers=*
spring.web.cors.allowed-exposed-headers=*
spring.web.cors.allowed-credentials=true    //解决跨域spring.web.resources.static-locations=file:D:/uploads/    //这个是静态资源

2.基本的架构模式

3.pojo

package com.itheima.derm05.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@AllArgsConstructor
@Data
@NoArgsConstructor
public class User {private Integer id;          //根据阿里巴巴代码规范,java里面类要用驼峰命名法private String username;private String password;private String name;private String phone;private String role;private String email;private String openId;}

注意:数据库要用蛇形命名法

4.业务层

业务层主要就是放处理业务逻辑的接口的代码

package com.itheima.derm05.service.impl;import com.itheima.derm05.pojo.Bed;
import com.itheima.derm05.mapper.BedMapper;
import com.itheima.derm05.service.BedService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.util.List;@Service
public class BedServiceImpl implements BedService {@Resourceprivate BedMapper bedMapper;@Overridepublic void insert(Bed bed) {bedMapper.insert(bed);}@Overridepublic void delete(Integer id) {bedMapper.delete(id);}@Overridepublic void update(Bed bed) {bedMapper.update(bed);}@Overridepublic Bed selectById(Integer id) {return bedMapper.selectById(id);}@Overridepublic List<Bed> selectAll() {return bedMapper.selectAll();}}
package com.itheima.derm05.service;import com.itheima.derm05.pojo.Bed;
import org.springframework.stereotype.Service;import java.util.List;@Service
public interface BedService {void insert(Bed bed);void delete(Integer id);void update(Bed bed);Bed selectById(Integer id);List<Bed> selectAll();
}

普通的增删查改

5.响应层

package com.itheima.derm05.controller;import com.itheima.derm05.pojo.Bed;
import com.itheima.derm05.service.BedService;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;
import java.util.List;
import java.util.Map;@RestController
@RequestMapping("/bed")
public class BedController {@Resourceprivate BedService bedService;@RequestMapping(path = "/insert",method = RequestMethod.POST)public String insert(@RequestBody Bed bed){bedService.insert(bed);return "success";}@RequestMapping(path = "/delete",method = RequestMethod.POST)public String delete(@RequestBody Map<String, Object> requestBody){Integer id = (Integer) requestBody.get("id");bedService.delete(id);return "success";}@RequestMapping(path = "/update",method = RequestMethod.POST)public String update(@RequestBody Bed bed){bedService.update(bed);return "success";}@RequestMapping(path = "/selectById",method = RequestMethod.POST)public Bed selectById(@RequestBody Map<String, Object> requestBody){Integer id = (Integer) requestBody.get("id");return bedService.selectById(id);}@RequestMapping(path = "/selectAll",method = RequestMethod.POST)public List<Bed> selectAll(){return bedService.selectAll();}
}

这边

@RequestBody Bed bed  是请求体里面内容是对象
@RequestBody Map<String, Object 这个就是基本数据类型或者String用这个

6.mapper和它的xml映射

package com.itheima.derm05.mapper;import com.itheima.derm05.pojo.Bed;
import org.apache.ibatis.annotations.Mapper;import java.util.List;public interface BedMapper {void insert(Bed bed);void delete(Integer id);void update(Bed bed);Bed selectById(Integer id);List<Bed> selectAll();
}
<?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.itheima.derm05.mapper.BedMapper"><insert id="insert" parameterType="com.itheima.derm05.pojo.Bed">insert into bed (id, room_id, bed_no,status,student_no,student_name)values (#{id},#{roomId},#{bedNo},#{status},#{studentNo},#{studentName})</insert><delete id="delete" parameterType="java.lang.Integer">delete from bed where id = #{id}</delete><update id="update" parameterType="com.itheima.derm05.pojo.Bed">update bed<set><if test="roomId != null">room_id = #{roomId},</if><if test="bedNo != null">bed_no = #{bedNo},</if><if test="status != null">status = #{status},</if><if test="studentNo != null">student_no = #{studentNo},</if><if test="studentName != null">student_name = #{studentName},</if></set>where id = #{id}</update><select id="selectById" parameterType="java.lang.Integer" resultType="com.itheima.derm05.pojo.Bed">select * from bed where id = #{id}</select><select id="selectAll" resultType="com.itheima.derm05.pojo.Bed">select * from bed</select>
</mapper>

这个就是和数据库交互,在里面写sql语句

<insert id="insert" parameterType="com.itheima.derm05.pojo.Bed">insert into bed (id, room_id, bed_no,status,student_no,student_name)values (#{id},#{roomId},#{bedNo},#{status},#{studentNo},#{studentName})</insert>

这边就到了上面那个蛇形和驼峰映射的自动转换

mybatis.configuration.map-underscore-to-camel-case=true

至此java后端,基本简单的功能就实现了,后期我会更新Ajax前端交互,和代码的优化

http://www.xdnf.cn/news/1352935.html

相关文章:

  • Linux PCI 子系统:工作原理与实现机制深度分析
  • Bartender 5 Mac 多功能菜单栏管理
  • 【LeetCode】85. 最大矩形 (暴力枚举)
  • 嵌入式软件/硬件工程师面试题集
  • MySql知识梳理之DDL语句
  • 力扣hot100:搜索二维矩阵与在排序数组中查找元素的第一个和最后一个位置(74,34)
  • 知识蒸馏 Knowledge Distillation 概率链式法则(Probability Chain Rule)
  • Java接口响应速度优化
  • springboot项目结构
  • leetcode80:删除有序数组中的重复项 II(快慢指针法)
  • 日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(6):51-60语法
  • Day33 MLP神经网络的训练
  • 「ECG信号处理——(24)基于ECG和EEG信号的多模态融合疲劳分析」2025年8月23日
  • 前端 H5分片上传 vue实现大文件
  • 【卫星通信】超低码率语音编码ULBC:EnCodec神经音频编解码器架构深度解析
  • piclist+gitee操作指南
  • 【Day 11】238.除自身以外数组的乘积
  • Transformer核心概念I-token
  • SpringBoot 快速上手:从环境搭建到 HelloWorld 实战
  • Excel 条件高亮工具,秒高亮显示符合筛选条件的行数据
  • 「数据获取」《中国能源统计年鉴》(1986-2023)(获取方式看绑定的资源)
  • 蓝桥杯算法之基础知识(2)——Python赛道
  • 【51单片机学习】直流电机驱动(PWM)、AD/DA、红外遥控(外部中断)
  • mmdetection:记录算法训练配置文件
  • A Large Scale Synthetic Graph Dataset Generation Framework的学习笔记
  • Mysql EXPLAIN详解:从底层原理到性能优化实战
  • 如何在Ubuntu中删除或修改已有的IP地址设置?
  • C语言---数据类型
  • PyTorch生成式人工智能——VQ-VAE详解与实现
  • TypeScript 的泛型(Generics)作用理解