使用mybatis-plus-generator生成代码

为了避免手动创建entity以及相应mapper,service等文件,使用mybatis-plus-generator代码自动生成功能,根据数据库表自动生成所需文件,本次记录一下使用过程,方便回顾

1、创建工程

        创建了一个maven工程(我是在一个父项目下创建的一个字项目,后续准备在拓展其他工程,没有直接创建springboot工程,想慢慢自己手动创建,熟悉过程,后续可以直接通过idea 的springboot创建实现工程创建),端口在application.yml先配置为7022(自己随意设置,就是个空闲端口);

2. maven依赖

        这些都是自己先是参考网上使用mybatis-plus-generator时引入了哪些包,然后加上自己的个性化所需的jar包依赖

 <dependencies>
        <!--自己创建的一个公共返回类,用户返回http请求信息-->
        <dependency>
            <groupId>com.cdc</groupId>
            <artifactId>oa-common-core</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--spring boot核心启动类,用于将代码生成服务启动  没他用不了SpringbootApplication注解-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!--spring boot web核心启动类,用于http请求访问  没他用不了RestMapping 等-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--代码生成依赖包-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
        </dependency>
        <!--代码生成器模板引擎 这个是mybatis代码生成的依赖包-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.3</version>
        </dependency>
        <!--数据库连接包,我用的是mysql8以上版本-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--mybatis核心包 没他用不了BaseMapper-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-core</artifactId>
        </dependency>
    </dependencies>

3、代码编写

        初版尝试先使用简单的方法,通过一个Springboot的Controller类,通过http的url访问(也可以直接用一个单元测试来实现,我这么整主要后面想优化拓展,比如用前端页面图形化访问实现),来创建对应表文件;核心部分的代码先参考网上的写法,根据自己的包名,先生成看看效果

这个是对应Controller的生成方法,这里先写死了,后面再慢慢改吧

 @RequestMapping("/generatorCode")
    public CommonResult getGeneratorResult() {
        //数据库连接
        String url = "jdbc:mysql://127.0.0.1:3306/housebooking?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false";//数据库url
        String username = "root";//账号
        String password = "123456";//密码
        //全局配置参数
        String author = "cdc";//作者
        String outputDir = System.getProperty("user.dir") + "\\src\\main\\java";//指定输出目录

        //包配置参数
        String parent = "com.cdc.oa";//父包名
        String moduleName = "auth";//父包模块名
        String entity = "entity";//Entity 实体类包名
        String mapper = "mapper";//Mapper 包名
        String mapperXml = "mapper.xml";//Mapper XML 包名
        String service = "service";//Service 包名
        String serviceImpl = "service.impl";//Service Impl 包名
        String controller = "controller";//Controller 包名
        //要生成的数据库表
        List<String> tables = new ArrayList<>();
        tables.add("sys_user");
        //开始生成
        FastAutoGenerator.create(url, username, password)
                //全局配置
                .globalConfig(builder -> {
                    builder.author(author)
                            .outputDir(outputDir)
                            .enableSwagger()//开启swagger
                            .commentDate("yyyy-MM-dd");//注释日期
                })
                //包配置
                .packageConfig(builder -> {
                    builder.parent(parent)
                            .moduleName(moduleName)
                            .entity(entity)
                            .mapper(mapper)
                            .xml(mapperXml)
                            .service(service)
                            .serviceImpl(serviceImpl)
                            .controller(controller);
                })
                //策略配置
                .strategyConfig(builder -> {
                    builder.addInclude(tables)
                            //开启生成实体类
                            .entityBuilder()
                            .enableLombok()//开启 lombok 模型
                            .enableTableFieldAnnotation()//开启生成实体时生成字段注解
                            //开启生成mapper
                            .mapperBuilder()
                            .enableBaseResultMap()//启用 BaseResultMap 生成
                            .superClass(BaseMapper.class)//设置父类
                            .enableMapperAnnotation()//开启 @Mapper 注解
                            .formatMapperFileName("%sMapper")//格式化 mapper 文件名称
                            .formatXmlFileName("%sMapper")//格式化 xml 实现类文件名称
                            //开启生成service及impl
                            .serviceBuilder()
                            .formatServiceFileName("%sService")//格式化 service 接口文件名称
                            .formatServiceImplFileName("%sServiceImpl")//格式化 service 实现类文件名称
                            //开启生成controller
                            .controllerBuilder()
                            // 映射路径使用连字符格式,而不是驼峰
                            .enableHyphenStyle()
                            .formatFileName("%sController")//格式化文件名称
                            .enableRestStyle();
                })
                .templateEngine(new VelocityTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();
        //先随便整一个公共的返回数据
        CommonResult commonResult = new CommonResult();
        commonResult.setCode(200);
        commonResult.setMessage("创建成功");
        commonResult.setData(null);
        return commonResult;
    }

   4、启动项目尝试访问     

访问http://127.0.0.1:7022/generatorCode 然后返回创建成功;

{"code":200,"message":"创建成功","data":null}

查看项目相应路径,就会生成对应的文件了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值