SpringBoot+Vue开发记录(六)-- 后端配置mybatis

原型图什么的就先不管,后面再写。

本篇文章的主要内容就是springboot通过mybatis操作数据库实现增删改查。

重点是mybatis配置与相关文件数据,以后开新项目忘记了怎么配置的话可以再照着这个搞。

这算是最基础的部分了吧。

文章目录

一,配置pom.xml文件

先就要往pom.xml文件里添加配置。

好像这个东西是maven里面的,等我待我背背八股再解释这些。

xml 复制代码
		<!-- MyBatis Starter -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.3.0</version>
        </dependency>

        <!-- MySQL Driver -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

先说一下,我还不确定这个对不对,等一会儿看看能不能跑通项目。

你问我这个从哪里来的?

如下:(失败了

应该复制粘贴这些:

xml 复制代码
	<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-jdbc -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
            <version>3.2.5</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.32</version>
            <scope>provided</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <version>8.3.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.3.0</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>3.0.3</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.7</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>RELEASE</version>
            <scope>test</scope>
        </dependency>

<!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter-security</artifactId>-->
<!--            <version>3.2.4</version>-->
<!--        </dependency>-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>

二、配置application.yml文件

这个文件的作用大概就是springboot项目的全局配置吧。

application.yaml

yaml 复制代码
server:
  port: 9527

spring:
  datasource:
    url: jdbc:mysql://localhost:3300/questionDataBase?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

三、新建对应的包

我们的项目结构如下:

1. 在自己的项目里新建如上的包和目录

当包都建好后,就可以开始弄了,我们以Category表为例展示

2. 后端与数据库产生连接

  1. 新建Caregory类
    这个类要求里面的属性与表中一致
java 复制代码
package com.ques.questionSystem.entity;

import lombok.*;
//由于我们已经引入了lombok包,所以我们就不用再写那些繁杂的get,set函数了。
//直接使用以下注解即可
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Category {
    private Integer categoryid;
    private String name;
    private Integer parentCategory;
    private Integer level;
}
  1. 新建CaregoryMapper接口和CaregoryMapper.xml
    这个Mapper接口将会和CaregoryMapper.xml的内容关联

CaregoryMapper类:

java 复制代码
package com.ques.questionSystem.mapper;

import com.ques.questionSystem.entity.Category;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface CategoryMapper {
    List<Category> findAll();
    int insert(Category category);
    int delete(Integer id);
    Category getCategoryById(Integer id);
}

CaregoryMapper.xml

xml文件主要就用来往里面塞sql语句了。

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">
<!-- 首先这个namespace 的内容就是对应Mapper接口 ,我们得输入正确的位置才可-->
<mapper namespace="com.ques.questionSystem.mapper.CategoryMapper">

	<!-- 接下来的这个resultMap 是我们自定义一个输出类型,一个xml文件里可以写多个,这个在后面的使用中会有显示 -->
    <resultMap type="com.ques.questionSystem.entity.Category" id="CategoryResultMap">
        <result property="categoryid" column="categoryid" jdbcType="INTEGER"/>
        <result property="name" column="name" jdbcType="VARCHAR"/>
        <result property="parentCategory" column="parentCategory" jdbcType="INTEGER"/>
        <result property="level" column="level" jdbcType="INTEGER"/>
    </resultMap>

    <!-- 查询所有   -->
    <!-- 这里就是sql语句了, id里面的内容填对应接口的函数名, resultMap则是我们上面写好了的一种输出 -->
    <select id="findAll" resultMap="CategoryResultMap" >
        select * from category;
    </select>

    <insert id="insert" useGeneratedKeys="true" parameterType="com.ques.questionSystem.entity.Category">
        insert into category(name, parentCategory,level)VALUE (#{name},#{parentCategory},#{level});
    </insert>

    <delete id="delete" parameterType="int">
        delete from category where categoryid = #{id};
    </delete>

    <select id="getCategoryById" parameterType="int" resultMap="CategoryResultMap">
        select * from category where categoryid = #{id};
    </select>

</mapper>

后端操作数据库功能实现

  1. 写对应的Service接口与实现类:
    一般功能都是在Service层里定义实现的

    CategoryService接口:
java 复制代码
package com.ques.questionSystem.service;

import com.ques.questionSystem.entity.Category;

import java.util.List;
//接口嘛,定义个函数名,不用实现。
public interface CategoryService {
    public List<Category> findAll();
    public int insert(Category category);
    public int delete(Integer id);
    public Category getCategoryById(Integer id);
}

CategoryServiceImpl实现类:

java 复制代码
package com.ques.questionSystem.service.impl;

import com.ques.questionSystem.entity.Category;
import com.ques.questionSystem.mapper.CategoryMapper;
import com.ques.questionSystem.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service
public class CategoryServiceImpl implements CategoryService {

    @Autowired
    private CategoryMapper categoryMapper;//自动注入一个Mapper,在接下来的函数中调用这个Mapper

    @Override
    public List<Category> findAll() {
        return categoryMapper.findAll();
    }

    @Override
    public int insert(Category category) {
        return categoryMapper.insert(category);
    }

    @Override
    public int delete(Integer id) {
        return categoryMapper.delete(id);
    }

    @Override
    public Category getCategoryById(Integer id) {
        return categoryMapper.getCategoryById(id);
    }
}

通过以上步骤,这个Service层就实现了。
2. Controller层实现
在后端中Controller层的功能大概就是分配路由这些。
CategoryController类:

java 复制代码
package com.ques.questionSystem.controller;

import com.ques.questionSystem.entity.Category;
import com.ques.questionSystem.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/category")
public class CategoryController {
    @Autowired
    private CategoryService categoryService;

    @GetMapping("/all")
    public List<Category> findAll() {
        return categoryService.findAll();
    }

    @PostMapping("/input")
    public void insert(@RequestParam("name") String name, @RequestParam("parentCategory") Integer parentCategory, @RequestParam("level") Integer level) {
        System.out.println(name+parentCategory+level);
        Category category = new Category();
        category.setName(name);
        category.setParentCategory(parentCategory);
        category.setLevel(level);
        categoryService.insert(category);
    }

    @PostMapping("/delete")
    public void delete(@RequestParam("id") Integer id) {
        categoryService.delete(id);
    }
    @PostMapping("/find")
    public Category getCategoryById(@RequestParam("id") Integer id) {
        return categoryService.getCategoryById(id);
    }
}

四、 使用Postman测试接口

  1. 测试findAll:

  2. 测试insert:

  3. 测试delete:


  4. 测试getCategoryById:

完成

五、 结语

看着简单做着就出现了很多问题。

这篇文章是完全版,照着上面来倒不会有什么错。

至此,后端操作数据库就完成了,就是这样。接下来就是其他的扩展。

相关推荐
骆晨学长13 分钟前
基于springboot的智慧社区微信小程序
java·数据库·spring boot·后端·微信小程序·小程序
AskHarries18 分钟前
利用反射实现动态代理
java·后端·reflect
bjzhang7520 分钟前
SpringBoot开发——整合SpringDoc实现在线接口文档
spring boot·springdoc
想退休的搬砖人38 分钟前
vue选项式写法项目案例(购物车)
前端·javascript·vue.js
Flying_Fish_roe42 分钟前
Spring Boot-Session管理问题
java·spring boot·后端
赚钱给孩子买茅台喝43 分钟前
智能BI项目第四期
java·spring boot·spring cloud·aigc
啥子花道1 小时前
Vue3.4 中 v-model 双向数据绑定新玩法详解
前端·javascript·vue.js
清灵xmf1 小时前
揭开 Vue 3 中大量使用 ref 的隐藏危机
前端·javascript·vue.js·ref
hai405872 小时前
Spring Boot中的响应与分层解耦架构
spring boot·后端·架构
学习路上的小刘2 小时前
vue h5 蓝牙连接 webBluetooth API
前端·javascript·vue.js