JFinal使用技巧-动态建库

RT
马上下班五一了, @zz210891470 你这样@ 我不好23333  我写在这里吧,如果还有其他人问的话, 很简单的。

public class Db_CREATE {

    public static void main(String[] args) {
        DruidPlugin druidPlugin = new DruidPlugin(
                "jdbc:mysql://127.0.0.1:3306/information_schema?characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull",
                "root", "").set(1, 1, 100);
        ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
        // 启动管理库
        druidPlugin.start();
        arp.start();

        String name = "test_1";
        // 建库
        Db.update("CREATE DATABASE " + name);

        // 启动业务库
        DruidPlugin druidPluginTest = new DruidPlugin("jdbc:mysql://127.0.0.1:3306/" + name
                + "?characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull",
                "root", "").set(1, 1, 100);
        ActiveRecordPlugin arpTest = new ActiveRecordPlugin(name, druidPluginTest);
        druidPluginTest.start();
        arpTest.start();
        // 建表
        DbPro testDb = Db.use(name);
        testDb.update(
                "CREATE TABLE `a` ( `id`  int NOT NULL AUTO_INCREMENT , `xx`  varchar(255) NULL , PRIMARY KEY (`id`) ) ");
        // 写入数据
        testDb.update("INSERT INTO `a` (`xx`) VALUES ('xxxxx')");
        // 查询
        List<Record> list = testDb.find("SELECT * FROM `a` LIMIT 100");
        System.out.println(list.toString());

        arpTest.stop();
        druidPluginTest.stop();
        arp.stop();
        druidPlugin.stop();
    }

}

注意要使用 有权限的账户 才能建库, 比如 root 账户。 有用就点个赞

评论区

JFinal

2019-04-30 17:35

没想到还真能动态创建 database,自此建库、建表、建字段、改字段,完全动态化了,超赞

琴海森林

2019-04-30 17:42

这个好,先收藏了

杜福忠

2019-04-30 17:46

@JFinal 以前学习EOVA @Jieven 老师的项目,了解了MySQL的information_schema数据库。以及里面的:
SCHEMATA表
---SCHEMATA表提供了当前mysql实例中所有数据库的信息。是show databases的结果取之此表。
TABLES表
---TABLES表提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间,等等信息。是show tables from schemaname的结果取之此表。

这两个表, 根据这两个表, 就能比对数据库的差异。 根据差异生成对应SQL。就能做到为平台多租户的SaaS客户实现全库升级。轻轻松松实现上百个库同时升级。而ActiveRecordPlugin天然支持任何连接,不限制是否是一台机器,也就支持了操作集群数据库的骚操作了

杜福忠

2019-04-30 17:59

@琴海森林 就佩服你们做开源项目的人, 要付出太多太多时间和精力去维护这个项目。我就写写短篇分享划划水了

JFinal

2019-04-30 18:19

@杜福忠 这种用法,适合十分灵活的应用,eova 这个项目极其动态化,全程 Db + Record,连 Model 都没使用

感谢分享

lyh061619

2019-05-01 22:01

@JFinal 呵呵,我的项目商业也是全程Db+Record的连Model都没有使用到过。

zz210891470

2019-05-04 09:22

感谢 好文章

小徐同学

2019-05-05 09:10

yang1995

2019-05-07 13:37

postgresql 错误: CREATE DATABASE 无法在事物块中运行 什么原因呢

杜福忠

2019-05-07 13:57

@yang1995 postgresql没有使用过,你开启事务了 ?先用 DEMO跑通了再放业务里试试。

yang1995

2019-05-08 09:44

@杜福忠 可以了,换个方法调用一下就好了,谢谢