我是靠谱客的博主 神勇草丛,最近开发中收集的这篇文章主要介绍根据数据库表名生成对应的bean及其相关接口、实现类、Mapper xml一、背景二、实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、背景

项目开发中,经常会根据数据库表,创建对应的bean及其相关接口、实现类、Mapper xml。都是一个固定的格式,所以不如将其写成一个固定程序,每次生成执行一次即可。

二、实现

示例如下:

public class Generator {

	/**

     * <p>

     * 读取控制台内容

     * </p>

     */

    public static String scanner(String tip) {

        Scanner scanner = new Scanner(System.in);

        StringBuilder help = new StringBuilder();

        help.append("请输入" + tip + ":");

        System.out.println(help.toString());

        if (scanner.hasNext()) {

            String ipt = scanner.next();

            if (!StringUtils.isEmpty(ipt)) {

                return ipt;

            }

        }

        throw new MybatisPlusException("请输入正确的" + tip + "!");

    }
    public static void main(String[] args) {
        // 代码生成器
        AutoGenerator mpg = new AutoGenerator();
        String projectPath = System.getProperty("user.dir");
        // 全局配置
        GlobalConfig gc = new GlobalConfig();

        // 设置数据库设置
        mpg.setDataSource(
                new DataSourceConfig()
                .setUrl("jdbc:mysql://192.168.22.111:3306/test?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Shanghai")
                .setDriverName("com.mysql.cj.jdbc.Driver")
                .setUsername("root")
                .setPassword("root123456")
                .setDbType(DbType.MYSQL)
        );

        // 包配置
        PackageConfig pc = new PackageConfig().setParent("com.gdfxit.foundwater");
        pc.setModuleName("persistence");
        mpg.setPackageInfo(pc);
        mpg.setStrategy(new StrategyConfig()
                .setNaming(NamingStrategy.underline_to_camel)
                .setInclude(scanner("表名,多个英文逗号分割").split(","))
                .setEntityColumnConstant(true)
                .setRestControllerStyle(true));

        // 自定义配置
        InjectionConfig cfg = new InjectionConfig() {
            @Override
            public void initMap() {
                // 自定义模板使用${cfg.map的key}获取该map的值
                Map<String, Object> map = new HashMap<>();
                map.put("author", "linmiao");
                this.setMap(map);
            }
        };

        // 自定义输出配置
        List<FileOutConfig> focList = new ArrayList<>();
        // 自定义配置会被优先输出
        // Mapper.xml
        focList.add(new FileOutConfig("/templates/mapper.xml.vm") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
                return projectPath+"/src/main/resources/mapper/"
                        + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
            }
        });

        // Controller.java
        focList.add(new FileOutConfig("/templates/controller.java.vm") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
                return projectPath+"/src/main/java/" + pc.getParent().replace(".", "/").replace("persistence", "controller")
                        + "/" + tableInfo.getEntityName() + "ApiController" + StringPool.DOT_JAVA;
            }
        });

        // Entity.Java
        focList.add(new FileOutConfig("/templates/entity.java.vm") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
                return projectPath+"/src/main/java/" + pc.getParent().replace(".", "/")
                        + "/entity/" + tableInfo.getEntityName() + StringPool.DOT_JAVA;
            }
        });

        // Mapper.java
        focList.add(new FileOutConfig("/templates/mapper.java.vm") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
                return projectPath+"/src/main/java/" + pc.getParent().replace(".", "/")
                        + "/mapper/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_JAVA;
            }
        });

        // Service.java
        focList.add(new FileOutConfig("/templates/service.java.vm") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
                return projectPath+"/src/main/java/" + pc.getParent().replace(".", "/")
                        + "/service/" + tableInfo.getEntityName() + "Service" + StringPool.DOT_JAVA;
            }
        });

        // ServiceImpl.java
        focList.add(new FileOutConfig("/templates/serviceImpl.java.vm") {
            @Override
            public String outputFile(TableInfo tableInfo) {
                // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
                return projectPath+"/src/main/java/" + pc.getParent().replace(".", "/")
                        + "/service/impl/" + tableInfo.getEntityName() + "ServiceImpl" + StringPool.DOT_JAVA;
            }
        });

        // 设置自定义模板
        cfg.setFileOutConfigList(focList);
        mpg.setCfg(cfg);

        // 设置模板
        TemplateConfig templateConfig = new TemplateConfig();
        templateConfig.setEntity(null)
                .setXml(null)
                .setController(null)
                .setService(null)
                .setMapper(null)
                .setServiceImpl(null);
        mpg.setTemplate(templateConfig);

        // 执行生成器
        mpg.execute();
    }

}

 

最后

以上就是神勇草丛为你收集整理的根据数据库表名生成对应的bean及其相关接口、实现类、Mapper xml一、背景二、实现的全部内容,希望文章能够帮你解决根据数据库表名生成对应的bean及其相关接口、实现类、Mapper xml一、背景二、实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部