码迷,mamicode.com
首页 > 其他好文 > 详细

Mybatis动态建表

时间:2017-07-29 00:58:18      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:http   str   传递参数   tle   key   其他   dex   iba   index   

在网上查了很多,都说Mybatis不支持动态建表,心凉了一节。还好找到这么一篇,找到了希望:http://www.zzzyk.com/show/ec5660d9cf1071b3.htm

 

经过在mysql环境下验证,确实可用,不知道其他数据库是否支持,如下:

 

Mapper.xml

  <update id="createNewTable">

    create table `${realTableName}`(

        `id` int(11) NOT NULL AUTO_INCREMENT,

        <foreach collection="newColumns" index="index" item="item">

        `${item.columnName}` varchar(1000) COMMENT #{item.columnComment},

        </foreach>

        PRIMARY KEY (`id`)

    )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT #{tableComment};

  </update>

 

需要注意的是:

1.      表名和列名都不能使用正常的#{},系统会报错。还好iBatis提供一个方法:用${}保证原样输出。

2.      而且,表名和列名两边的引号不能少

3.      COMMENT可以正常使用#{},而且不需要引号

4.      另外,传递参数支持对象列表,很强大,学习了,呵呵。

 

Dao.java

void createNewTable(@Param("realTableName") String realTableName, @Param("newColumns") List<TitleName> newColumns, @Param("tableName") String tableComment);

 注:这里使用了之前的一篇文章:Mybatis传多个参数(三种解决方案),使用的是第三种方案。

 

Service.java

public void createNewTable(String realTableName, List<TitleName> newColumns, String tableComment);

 

Test.java

List<ColumnName> newColumns = new ArrayList< ColumnName >();

newColumns.add(new ColumnName("col_1", "第1列"));

newColumns.add(new ColumnName("col_2", "第2列"));

newColumns.add(new ColumnName("col_3", "第3列"));

service.createNewTable("test_new_table", newColumns, "测试动态建表");

 

ColumnName.java

private String columnName;

private String columnComment;

 

如果还有其他方法,欢迎交流指教,:)

Mybatis动态建表

标签:http   str   传递参数   tle   key   其他   dex   iba   index   

原文地址:http://www.cnblogs.com/wangjuns8/p/7252985.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!