热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:使用Mybatis动态生成MySQL表

篇首语:本文由编程笔记#小编为大家整理,主要介绍了使用Mybatis动态生成MySQL表相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了使用Mybatis动态生成MySQL表相关的知识,希望对你有一定的参考价值。






一. 首先,在数据库有一张对应的表:

在这里插入图片描述


二. controller层代码如下:

@PutMapping("/dynamicallyTable")
public AjaxResult dynamicallyTable(@RequestBody Data data){
List<Template> list &#61; templateService.DynamicallyTable(data.getSid());//此处是判断表内是否有数据,有则可以继续向下执行,无则return "false"
if (list.size()&#61;&#61;0){
return AjaxResult.success("未设置模板消息,请设置模板信息",false);
}
Project tablename &#61; (Project) templateService.creatTableName(data.getSid());
String name &#61; tablename.getYear() &#43; "_" &#43; tablename.getName() &#43; "_" &#43; tablename.getStages().getName();//这里是应需求动态拼接的表名
Map<String, String> mymap &#61; new HashMap<>(); //使用map的key,value进行存值,key:"存的是field" ,value:"存储的是type"
for (Template template : list) {
String type &#61; template.getType();
String field &#61; template.getField();
mymap.put(field, type);//遍历template中的值将其分别存储到key,value中
}
templateService.creatTemplateTable(name, mymap);//此处的name为表名
iStageService.updateByStageId(data.getSid(), name);
return AjaxResult.success("成功生成定稿表");
}

三 . Service接口及其实现类:

3.1 Service接口代码如下:

/**
* &#64;Param name : 动态生成表的表名
* &#64;Param mymap: 表的列名及类型
*/

public void creatTemplateTable(String name, Map<String, String> mymap);

3.2 Service接口实现类代码如下:

/**
* &#64;Param name : 动态生成表的表名
* &#64;Param mymap: 表的列名及类型
*/

&#64;Override
public void creatTemplateTable(String name, Map<String, String> mymap) {
templateMapper.creatTemplateTable(name,mymap);
}

四, Mapper接口及其Mapper.xml

4.1 Mapper接口:

/**
* &#64;Param name : 动态生成表的表名
* &#64;Param mymap: 表的列名及类型
*/

public void creatTemplateTable(&#64;Param("name") String name,&#64;Param("mymap") Map<String, String> mymap);

4.2 Mapper.xml:

<update id&#61;"creatTemplateTable" parameterType&#61;"map">
create table ${name} (
&#96;id&#96; int(11) NOT NULL AUTO_INCREMENT,
<foreach collection&#61;"mymap" index&#61;"key" item&#61;"value" separator&#61;",">
${key} ${value}(4000)
foreach>
,PRIMARY KEY (&#96;id&#96;)
) ENGINE&#61;InnoDB DEFAULT CHARSET&#61;utf8
update>





推荐阅读
author-avatar
@Cobub
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有