手把手教你SpringBoot+Mybatis框架搭建步骤(例:JDK11)

目录

一、结构概要

二、项目创建

2.1、新建项目,选择Spring Initializr,构建项目名称等信息

2.2、选择搭建项目骨架,添加依赖项Spring web、Lombok、MySQL Driver进行项目搭建

2.3、可根据需求,酌情删除冗余文件

三、搭建三层架构

3.1、pom.xml文件添加对应依赖jar包

3.2、application.yml配置文件

3.3、统一返回结构集Result类 + pojo实体类

3.3.1 、Result类

3.3.2、实体类Dept

3.4、controller层 DeptController.java

3.5、service层 DeptServiceImpl.java(接口请自行补充)

3.6、mapper层

3.6.1、DeptMapper接口类

3.6.2、DeptMapper.xml文件

3.7、mysql数据表创建

建议小贴士 


一、结构概要

                                               详:

二、项目创建

2.1、新建项目,选择Spring Initializr,构建项目名称等信息

2.2、选择搭建项目骨架,添加依赖项Spring web、Lombok、MySQL Driver进行项目搭建

2.3、可根据需求,酌情删除冗余文件

三、搭建三层架构

3.1、pom.xml文件添加对应依赖jar包

<?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.7.16</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.itweizi</groupId>
    <artifactId>demo2</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <properties>
        <java.version>11</java.version>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!---mybatis 起步依赖;-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.3.1</version>
        </dependency>
        <!--分页-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.6</version>
        </dependency>
        <!-- yml上显示自定义的配置信息-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
            <version>2.7.15</version>
        </dependency>
    </dependencies>

</project>

3.2、application.yml配置文件

#数据源配置
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql:///db01
    username: root
    password: 1234

#问价上传大小限制
servert:
  multipart:
    max-file-size: 10MB
    max-request-size: 100MB

#mybatis配置
mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case:  true

#配xml文件的别名
  type-aliases-package: com.itweizi.pojo

#日志控制
logging:
  level:
    org.springframework.jdbc.support.JdbcTransactionManager= debug:

#程序端口设置
server:
  port:
   8080

3.3、统一返回结构集Result类 + pojo实体类

3.3.1 、Result类

package com.itweizi.pojo;

import lombok.Data;

/**
 * 后端统一返回结果
 */
@Data
public class Result {

    private Integer code; //编码:1成功,0为失败
    private String msg; //错误信息
    private Object data; //数据

    public static Result success() {
        Result result = new Result();
        result.code = 1;
        result.msg = "success";
        return result;
    }

    public static Result success(Object object) {
        Result result = new Result();
        result.data = object;
        result.code = 1;
        result.msg = "success";
        return result;
    }

    public static Result error(String msg) {
        Result result = new Result();
        result.msg = msg;
        result.code = 0;
        return result;
    }

}

3.3.2、实体类Dept

package com.itweizi.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Data//自动生成 getter 和 setter 方法,以及 toString、equals 和 hashCode 方法。
@AllArgsConstructor//生成全参构造方法
@NoArgsConstructor//生成无参构造方法
public class Dept {
    private Integer id;//部门id
    private String name;//部门名称
    private String createTime;//创建时间
    private LocalDateTime updateTime;//修改时间
}

3.4、controller层 DeptController.java

package com.itweizi.controller;

import com.itweizi.pojo.Dept;
import com.itweizi.pojo.Result;
import com.itweizi.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/depts")
public class DeptController {

    @Autowired
    private DeptService deptService;

    //部门查询
    @GetMapping
    public Result list(){
      List<Dept> list= deptService.list();
        return Result.success(list);
    }


    // 新增部门数据
    @PostMapping
    public Result save(@RequestBody Dept dept){
        deptService.save(dept);
        return Result.success();
    }

    // 修改部门数据
    //回显
    @GetMapping("/{id}")
    public Result getById(@PathVariable Integer id){
        Dept dept = deptService.getById(id);
        return Result.success(dept);
    }
    //修改
    @PutMapping
    public Result update(@RequestBody Dept dept){
        deptService.update(dept);
        return Result.success();
    }


    // 删除部门数据
    @DeleteMapping
    public Result deleteById(Integer id){
        deptService.deleteById(id);
        return Result.success();
    }

}

3.5、service层 DeptServiceImpl.java(接口请自行补充)

package com.itweizi.service.impl;

import com.itweizi.mapper.DeptMapper;
import com.itweizi.pojo.Dept;
import com.itweizi.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class DeptServiceImpl implements DeptService {

    @Autowired
    private DeptMapper deptMapper;
    //查询所有部门
    @Override
    public List<Dept> list() {
        List<Dept> deptList = deptMapper.list();
        return deptList;
    }

     //新增部门
    @Override
    public void save(Dept dept) {
        //补充基础字段
        dept.setCreateTime(LocalDateTime.now());
        dept.setUpdateTime(LocalDateTime.now());
        deptMapper.save(dept);
    }

    //回显数据
    @Override
    public Dept getById(Integer id) {
        return deptMapper.getById(id);
    }

    //修改部门
    @Override
    public void update(Dept dept) {
        deptMapper.update(dept);
    }

    //删除部门
    @Override
    public void deleteById(Integer id) {
        deptMapper.deleteById(id);
    }
}

3.6、mapper层

3.6.1、DeptMapper接口类

package com.itweizi.mapper;

import com.itweizi.pojo.Dept;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface DeptMapper {
 
    //简单sql可加注解书写,复杂sql可在xml文件中进行实现
    @Select("select * from db01.dept")
    List<Dept> list();

    @Delete("delete from db01.dept where id=#{id}")
    void deleteById(Integer id);

    @Insert("insert into db01.dept(id,name,create_time,update_time) value(#{id},#{name},#{createTime},#{updateTime})")
    void save(Dept dept);

    @Select("select * from db01.dept where id=#{id}")
    Dept getById(Integer id);

    //@Update("update db01.dept set name=#{name},update_time=#{updateTime} where id=#{id}")
    void update(Dept dept);
}

3.6.2、DeptMapper.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.itweizi.mapper.DeptMapper">
//若较复杂sql在此处书写
//例:修改部门
<update id="update">
        update dept
        <set>
            <if test="name !=null and name!=''">
                name =#{name},
            </if>
            <if test="updateTime != null">
                update_time=#{updateTime}
            </if>
        </set>
        where id = #{id}
    </update>
</mapper>

3.7、mysql数据表创建

-- auto-generated definition
create table dept
(
    id          int unsigned auto_increment comment '主键ID'
        primary key,
    name        varchar(10) not null comment '部门名称',
    create_time datetime    null comment '创建时间',
    update_time datetime    null comment '修改时间',
    constraint name
        unique (name)
)
    comment '部门表';

建议小贴士 

1、若需展示前端页面,需要下载启动nginx进行反向代理,再浏览器访问链接http://localhost:90/ 

例:

2、若后端响应,可下载ApifoxPostman等其他工具,发送 HTTP 请求并进行 API 调试

例:

  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值