前文:很多时候业务当中需要建的数据库表较多,动则百张,这个时候手动建表就不现实了。这个时候我们可以自定义建表语句,在Jva层面进行动态建表。
正文:
本文拿的是oracle数据库做的操作。像mysql也是类似的操作
public static void main(String[] args) throws Exception{
//需要连接的oracle的url
String url = "jdbc:oracle:thin:@ip:port/orcl";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
//连接数据库--输入自己的url,用户和密码
Connection conn = DriverManager.getConnection(url, "user", "password");
//创建对象
Statement stmt = conn.createStatement();
//建表语句--创表语句末尾不加 符号;
String createTable = "CREATE TABLE \"TEST\".\"tb_user\" (\n" +
"\"ID\" NUMBER ( 11 ) NOT NULL,\n" +
"\"NAME\" VARCHAR2 ( 255 ),\n" +
"\"AGE\" VARCHAR2 ( 255 ),\n" +
"PRIMARY KEY ( \"ID\" ))";
//执行建表语句
stmt.executeUpdate(createTable);
//注释语句
String createExplain = "COMMENT ON COLUMN \"TEST\".\"tb_user\".\"ID\" IS 'ID';\n" +
"COMMENT ON COLUMN \"TEST\".\"tb_user\".\"NAME\" IS '姓名';\n" +
"COMMENT ON COLUMN \"TEST\".\"tb_user\".\"AGE\" IS 'AGE';";
//对注释语句进行操作
List<String> list = Arrays.asList(createExplain.split(";"));
for (String sql : list) {
sql = sql.trim();
if (StringUtils.isNotBlank(sql)) {
stmt.addBatch(sql);
}
}
//执行注释语句
int[] batch = stmt.executeBatch();
System.out.println("success");
stmt.close();
conn.close();
}catch (ClassNotFoundException e){
e.printStackTrace();
}catch (SQLException ex){
ex.printStackTrace();
}
}
所需包
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
根据自己定义好的建表语句,在配合上文的流程代码。就能自定义建表了,非常速度