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>