mybatis在数据库创建新表的解决方法

来源:互联网 发布:中国影响力人物数据库 编辑:程序博客网 时间:2024/05/15 14:26
在用mybatis 新建表的过程中收获如下:


//第一种建表方式:


如果是纯数字的表名需要拼接成字符:String tableName="`"+"1500"+"`";


<update id="createNewTable" parameterType="java.lang.String" >
CREATE TABLE ${value} (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  ` author_id` int(11) DEFAULT NULL,
  `title` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8//注意此处不要复制分号过来
       </update>


 接口:int createNewTable(String tableName);
创建成功:返回值为0,失败直接抛异常


//第二种建表方式:
 编写一个SQL存储过程:


CREATE DEFINER=`root`@`localhost` PROCEDURE `createTable`(INOUT `mdate` varchar(50))
BEGIN
 declare sm_results_name varchar(50);  
  set @sm_results_name = concat('user_ans_',mdate);  
  set @csql = 
concat("create table if not exists ",@sm_results_name , " (`uanswer_Id` int(11) NOT NULL AUTO_INCREMENT,
  `u_name` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`uanswer_Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;");  
  PREPARE create_stmt from @csql;  
  EXECUTE create_stmt;  
END


存储过程不过多介绍,只需要注意: 在BEGIN和END  中间部分 不能直接CREATER 表名 
如需了解请自己搜索详细说明。


在mapper.xml 中配置如下:
<select id="recommend" parameterType="java.lang.String" statementType="CALLABLE" >
call createTable(#{s,jdbcType=VARCHAR,mode=IN})
</select>
调用的是存储过程的名称,
 
创建的接口返回值 String 为空:


接口:String recommend(String s);
原创粉丝点击