MyBatis如何动态创建表
这篇文章给大家分享的是有关MyBatis如何动态创建表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
创新互联公司是一家朝气蓬勃的网站建设公司。公司专注于为企业提供信息化建设解决方案。从事网站开发,网站制作,网站设计,网站模板,微信公众号开发,软件开发,成都小程序开发,十多年建站对成都被动防护网等多个行业,拥有多年的网站制作经验。
项目中业务需求的不同,有时候我们需要动态操作数据表(如:动态建表、操作表字段等)。常见的我们会把日志、设备实时位置信息等存入数据表,并且以一定时间段生成一个表来存储,log_201806、log_201807等。在这里我们用MyBatis实现,会用到动态SQL。
动态SQL是Mybatis的强大特性之一,MyBatis在对sql语句进行预编译之前,会对sql进行动态解析,解析为一个BoundSql对象,也是在此对动态sql进行处理。
在动态sql解析过程中,#{ }与${ }的效果是不一样的:
#{ } 解析为一个JDBC预编译语句(prepared statement)的参数标记符。
如以下sql语句:
select * from user where name = #{name};
会被解析为:
select * from user where name = ?;
可以看到#{ }被解析为一个参数占位符 ? 。
${ } 仅仅为一个纯粹的String替换,在动态SQL解析阶段将会进行变量替换。
如以下sql语句:
select * from user where name = ${name};
当我们传递参数“joanna”时,sql会解析为:
select * from user where name = “joanna”;
可以看到预编译之前的sql语句已经不包含变量name了。
综上所述,${ }的变量的替换阶段是在动态SQL解析阶段,而#{ } 的变量的替换是在DBMS中。
下面实现MyBatis动态创建表,判断表是否存在,删除表功能。
Mapper.xml
Mapper.java
package xx.xxx.xx.mapper;
import org.apache.ibatis.annotations.Param; import xx.xxx.xx.po.Trackpoint; public interface OperateTableMapper { int existTable(String tableName); int dropTable(@Param("tableName")String tableName); int createNewTable(@Param("tableName")String tableName); int insert(@Param("tableName")String tableName,@Param("trackpoint")Trackpoint trackpoint); }
感谢各位的阅读!关于“MyBatis如何动态创建表”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
文章标题:MyBatis如何动态创建表
标题URL:http://dcwzsj.com/article/gihicp.html