在不操作数据库的情况下,使用接口在 SpringBoot 项目中创建 MySQL 数据库表格

最近有一个业务是需要将计算后的数据进行存库操作,突发奇想,是否有一种方式,可以不操作数据库,在项目代码中使用 sql 语句进行建表。

准备工作,集成 MyBatis 的 SpringBoot 项目。可参考以下文章,本文示例就是在这个基础上开发的。

SpringBoot 项目整合 MyBatis 框架,附带测试示例

文章目录

    • 1、准备建表的 sql 语句
    • 2、构建含 sql 语句的 mapper.xml 文件
    • 3、创建对应的 mapper
    • 4、Controller 接口调用

1、准备建表的 sql 语句

语句还有很多可添加的操作,类似于,表格存在就不再重新建表等功能。

另外,这个是要对应数据库,如果是 MySQL 数据库就要用 MySQLsql 语法,如果是 Oracle 数据库要用 Oraclesql 语法。本文的示例是使用 MySQL 数据库。

CREATE TABLE students (  
    id INT AUTO_INCREMENT PRIMARY KEY,  
    name VARCHAR(100) NOT NULL,  
    age INT,  
    email VARCHAR(100) UNIQUE  
);

接下来,我们需要将 sql 语句放入到 mapper.xml 文件中。

2、构建含 sql 语句的 mapper.xml 文件


DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wen.mapper.SchemaMapper">
    <insert id="runSingleScript">
        SELECT 1;
    insert>

    <update id="runScript">
        CREATE TABLE student (
            id INT AUTO_INCREMENT PRIMARY KEY,
            name VARCHAR(100) NOT NULL,
            age INT,
            email VARCHAR(100) UNIQUE
        );
    update>
mapper>

3、创建对应的 mapper

package com.wen.mapper;

import org.apache.ibatis.annotations.Param;

public interface SchemaMapper {

	// 运行 sql 脚本
    void runScript(@Param("tableSuffix") String tableSuffix);

    void runSingleScript();

}

4、Controller 接口调用

package com.wen.controller;

import com.wen.mapper.SchemaMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api")
public class TaskController {

    @Autowired
    private SchemaMapper schemaMapper;

    @GetMapping("schema")
    public String schema() {
        schemaMapper.runScript("schema");
        return "success";
    }
}

调用接口就可以创建表格了。

除了使用接口外,还可以用到项目启动时,设定标识在配置文件,项目重启时执行一次。

你可能感兴趣的:(Java,项目,MyBatis,数据库,spring,boot,mysql)