在用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);
//第一种建表方式:
如果是纯数字的表名需要拼接成字符: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);