美文网首页MyBatis+SpringMVC+SpringBootJava 杂谈程序员
自动生成Domain, Dao, Mybatis Mapper文

自动生成Domain, Dao, Mybatis Mapper文

作者: 阿历Ali | 来源:发表于2018-06-23 19:26 被阅读11次

    本文与《Mybatis Generator定制化注释的方法》目标相似,即定制化生成数据持久化映射对象(Domain)文件、数据操作Dao文件、及其相应的Mybatis Mapper文件。

    用Mybatis Generator有不便之处是只实现了定制化生成Domain字段注释,而不能定制化生成类注释、方法、方法注释等。本文将定制化更进一步,生成你想要的Domain,Dao,Mybatis Mapper文件。

    1. 思路

    a. 从数据库的元数据表information_schema获取表结构信息,如表名、表注释、字段名、字段类型、字段注释等。这里用到传统的jdbc。

    b. 写Mysql、java、Mybatis数据类型转化器。

    c. 实现生成Domain,Dao,Mapper的工具类。

    d. 实现生成文件的工具类。

    e. 完成串联所有工具的main方法。

    image.png
    2. 程序使用介绍

    以下代码是MybatisGenerator.java中main方法的关键代码:

    // 设置作者名
    BaseGenerator.setAUTHOR("ali");
    // 初始化数据库连接 url, username, password
    DbUtil.initConnection("jdbc:mysql://localhost/test_db", "root", "123456");
    // 生成数据库中所有的表对应的dao文件
    //        List<TableInfo> tableInfos = SchemaUtil.getTableInfos("test_db", null);
    // 生成数据库中指定表对应的dao文件
    List<TableInfo> tableInfos = SchemaUtil.getTableInfos("test_db", new ArrayList<String>(){{add("USER");add("ORDER_INFO");}});
    
    ConfigInfo configInfo = new ConfigInfo();
    // 配置包名(dao文件所在)
    configInfo.setModulePackagePath("com.me.test.dao");
    // 配置Domain文件包名(实际生成包路径为"com.me.test.dao.domain")
    configInfo.setDomainPackageName("domain");
    // 配置Domain类名后缀(生成样例,UserPo)
    configInfo.setDomainPostfix("Po");
    // 配置Dao类名后缀(生成样例,UserDao)
    configInfo.setDaoPostfix("Dao");
    // 配置Mapper后缀(生成样例,UserMapper)
    configInfo.setMapperPostfix("Mapper");
    // Mapper文件位置
    configInfo.setMapperDir("resources/test");
    FileGenerator.generate(configInfo, tableInfos);
    

    注:Domain用了lombok的@Data注解,因此没有生成get,set方法。

    3. 效果

    (只截取部分代码)
    Domain



    Dao



    Mapper

    感谢同事的启发与指导,有他们的帮助才得以此文。
    如需要源码,请下载https://github.com/code-group/mybatisGenerator.git

    相关文章

      网友评论

        本文标题:自动生成Domain, Dao, Mybatis Mapper文

        本文链接:https://www.haomeiwen.com/subject/hjkdyftx.html