关于动态创建删除数据库表一共包含三个步骤,
前提自己先创建一个springboot的项目
1. pom中mysql三剑客依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.9</version>
</dependency>
1. controlle
@RequestMapping("/createTable") //动态创建表
public void test2(){
String tableName = "t2"; //mybatis中#() 占位符,对应的变量会自动加上引号 $() 拼接符,对应的变量不会自动加上引号
String name = "name"; //表中字段名字
testService.test12(tableName,name);//创建表
return;
}
2. service
void test12(String tableName,String name);
3. serviceimpl
@Override
public void test12(String tableName,String name) {
testMapper.test2(tableName,name);
return;
}
4. mappe
void test2(@Param("tableName") String tableName,@Param("name") String name);
5. mapper.xml
<!--这个注意是用${} 因为$这个符号是拼接的意思,而#{}是占位符,会自动把变量的值两边加上引号-->
<update id="test2" parameterType="java.lang.String">
CREATE TABLE ${tableName}(
id int NOT NULL AUTO_INCREMENT PRIMARY KEY ,
${name} varchar(10) NOT null
)
</update>
1. controlle
@RequestMapping("/deleteTable") //动态删除表
public void deletetable(){
String tableName = "t2";
testService.test3(tableName);
return;
}
2. service
void test3(String tableName);
3. serviceimp
@Override
public void test3(String tableName) {
testMapper.test3(tableName);
}
4. mappe
void test3(@Param("tableName") String tableName);
5. mapper.xml
<update id="test3" parameterType="java.lang.String">
DROP TABLE IF EXISTS ${tableName}
</update>