栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

项目实训记录(七)——mybatis生成表

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

项目实训记录(七)——mybatis生成表

目录

一、最近做了什么?

二、问题与实现

1.问题

2.后端获取,并存到map里

3.调用service方法,创建表

4.再补充一下JDBC实现

一、最近做了什么?

还是五月份的工作,

五月底,还是在进行系统功能的完善。

首先是用户端的bug问题——已解决

然后是管理员端的创建表部分——虽然之后使用JDBC实现了。但是最开始是使用mybatis实现的。

因为从前端传来的表名、字段名和字段类型都是String类型,最后要生成数据库表。记录一下这个过程。
 

二、问题与实现

1.问题

前端通过axios 向后端post字段名和字段类型。

代码如下:

    click3(){
        //这里就直接复制粘贴即可
        this.submitForm3();
          this.dialogVisible=true
      },
         submitForm3() {
       this.columnList.forEach((item,index) => {
         let params = new URLSearchParams()
         params.append('DBid',this.dbid)
         params.append('CHARTid',this.chartid)
         params.append('MEN',this.columnList[index])
         params.append('Types',this.aboutColumns.types[index])
         params.append('ZDes',this.aboutColumns.ZDescrs[index])
         params.append('ZN',this.aboutColumns.ZNames[index])
         axios.post(`api/insertMeta`,params).then(res=>{
           console.log('表的详细信息第 '+index+' 列已经发出去了')
           console.log(res.data)
         })
});
     //这里可以查表名,也能根据查表有哪些列和类型
        //创建实体表
      let params1 = new URLSearchParams()
      params1.append('DBid',this.dbid)
      params1.append('CHARTid',this.chartid)
      params1.append('EN',this.biaoF.Ename)
      axios.post(`api/createUTable`,params1).then(res=>{
         console.log('已发出实体表相关信息')
         console.log(res.data)
         })
    
       
       
    },

2.后端获取,并存到map里

代码如下(示例):

List list = metaService.findMetasByCId(chartid,dbid);

        if (list.size()==0){
            System.out.println(("该实体表的字段信息为空!无法创建实体表!"));
        }

        Map mymap = new HashMap<>(); //使用map的key,value进行存值,key:"存的是field" ,value:"存储的是type"
        for (Meta metas : list) {
            String type = metas.getCN();
            String field = metas.getEN();
            mymap.put(field, type);//遍历template中的值将其分别存储到key,value中
        }

3.调用service方法,创建表

最后对应的mapper.xml文件代码如下:

  
        create table ${name} (
        `id` int(11) NOT NULL AUTO_INCREMENT,
        
            ${key} ${value}(255)
        
        ,PRIMARY KEY (`id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    

4.再补充一下JDBC实现

在service层中的实现代码如下:

 @Override
    public int createUTable(String cName, Map mymap,String dName) throws SQLException {

        String url="jdbc:mysql://localhost:3306/?allowPublicKeyRetrieval=true&useSSL=false";
        String user="root";
        String pw="xxxx";
        Connection con = DriverManager.getConnection(url,user,pw);//获得数据库链接对象
        con.prepareStatement("USE "+dName).execute();//使用test 表
        PreparedStatement  ps=con.prepareStatement("SHOW TABLES LIKE ""+cName+""");
        ResultSet rs=ps.executeQuery();
        if(rs.next())
            System.out.println("表已存在");
        else {
            String sql="CREATE TABLE "+cName+"(id INT(11) PRIMARY KEY,";
//            这里应该依次遍历map
            for (String key : mymap.keySet()) {
                System.out.println("key= "+ key + " and value= " + mymap.get(key));
                sql+=key +" "+mymap.get(key)+"(10), ";
            }

            sql=sql.substring(0,sql.length()-2);
            sql+=")";
            System.out.println(sql);
            ps = con.prepareStatement(sql);
            ps.executeUpdate();
            System.out.println("表创建成功");

        }
        return 0;
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/948315.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号