MyBatis動態建立表

2021-09-07 19:15:03 字數 1891 閱讀 4611

專案中業務需求的不同,有時候我們需要動態運算元據表(如:動態建表、操作表字段等)。常見的我們會把日誌、裝置實時位置資訊等存入資料表,並且以一定時間段生成乙個表來儲存,log_201806、log_201807等。在這裡我們用mybatis實現,會用到動態sql。

動態sql是mybatis的強大特性之一,mybatis在對sql語句進行預編譯之前,會對sql進行動態解析,解析為乙個boundsql物件,也是在此對動態sql進行處理。

在動態sql解析過程中,#與$的效果是不一樣的:

# 解析為乙個jdbc預編譯語句(prepared statement)的引數標記符。

如以下sql語句:

select * from user where name = #;

會被解析為:

select * from user where name = ?;

可以看到#被解析為乙個引數佔位符 ? 。

$ 僅僅為乙個純粹的string替換,在動態sql解析階段將會進行變數替換。

如以下sql語句:

select * from user where name = $;

當我們傳遞引數「joanna」時,sql會解析為:

select * from user where name = 「joanna」;

可以看到預編譯之前的sql語句已經不包含變數name了。

綜上所述,$的變數的替換階段是在動態sql解析階段,而# 的變數的替換是在dbms中。

下面實現mybatis動態建立表,判斷表是否存在,刪除表功能。

<?xml version="1.0" encoding="utf-8" ?>

from information_schema.tables

where lcase(table_name)=#

drop table if exists $

create table $ (

id bigint(20) not null auto_increment,

entityid bigint(20) not null,

dx double not null,

dy double not null,

dz double not null,

ntype varchar(32) not null,

gnsstime bigint(20) not null,

speed float default null,

direction float default null,

attributes varchar(255) default null,

primary key (id))

insert into $

(entityid,dx,dy,dz,ntype,gnsstime,speed,direction,attributes)

values

(#,#,

#,#,

#,#,

#,#,

#)import org.apache.ibatis.annotations.param;

import xx.***.xx.po.trackpoint;

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 的動態sql中我們常用的是 來指定我們需要動態填入的資料 insert insert into t news category,title,content,url values int inserttest tnews news select select from t news ...

Mybatis 動態表名,插入資料

int insert param tablename string tablename param user user user mybatis xml id insert parametertype com.ihuaqiang.spring.bean.user insert into id,nam...

建立動態鍊錶

3 建立動態鍊錶 學自徐洪波c語言教程 include include 鍊錶結構體 struct node int value struct node next void creat struct node root struct node tail struct node p p struct n...