mybatis3动态创建表,判断表是否存在,删除表

Posted Dreamer who

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis3动态创建表,判断表是否存在,删除表相关的知识,希望对你有一定的参考价值。

1.mybatis3动态创建表,判断表是否存在,删除表

mapper配置文件:

<span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
   "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
   
<mapper namespace="com.doctor.mybatis3practice.mapper.BlogMapper" >
	<resultMap type="Blog" id="baseResultMap">
		<id property="id" column="id"/>
		<result property="authorId" column="author_id"/>
		<result property="title" column="title"/>
	</resultMap>
	<sql id="all_collum">
		id,author_id,title
	</sql>
	
	<insert id="insertBlog" useGeneratedKeys="true" keyProperty="id">
		insert into blog ( author_id,title)
		 values (#authorId,#title)
	</insert>
	
	<select id="queryById" parameterType="Long" resultMap="baseResultMap">
		select <include refid="all_collum"/>
		from blog
		where id = #id
	</select>
	
	<select id="existTable" parameterType="String" resultType="Integer">
		select count(1)
		from sys.systables
		where LCASE(tablename)=#tableName
	</select>
	<update id="dropTable">
		drop table $tableName   
	</update>
	
	<update id="createNewTable" parameterType="String">
		create table $tableName (
							id int not null generated by default as identity,
							author_id int not null,
							title varchar(255),
							primary key (id))
	</update>
</mapper></span>

注意配置文件中的$tableName  和#tableName的区别.

mapper接口如下:

<span style="font-size:18px;">package com.doctor.mybatis3practice.mapper;

import org.apache.ibatis.annotations.Param;

import com.doctor.mybatis3practice.domain.Blog;

public interface BlogMapper 
	Blog queryById(Long id);

	int insertBlog(Blog blog);
	int createNewTable(@Param("tableName") String tableName);
	int dropTable(@Param("tableName") String tableName);
	int existTable(String tableName);

</span>

注意
<span style="font-size:18px;">@Param("tableName") 的注解.</span>

以上是关于mybatis3动态创建表,判断表是否存在,删除表的主要内容,如果未能解决你的问题,请参考以下文章

oracle创建表之前判断表是不是存在,如果存在则删除已有表

oracle创建表之前判断表是不是存在,如果存在则删除已有表

SQL SERVER 建表时先判断表有没有存在

新增表前判断同名表是否存在(mysql)

Sql Server 判断表是否存在方法

Oracle删除表字段之前判断表字段是否存在