• day02---搭建项目工程(service模块)(03)


    一、搭建service模块

    1、在父工程guli_parent下面创建模块service

    2、添加模块类型pom
    <artifactId> 节点后面添加 pom类型

     <artifactId>service</artifactId>
    <packaging>pom</packaging>
    

    3、添加项目需要的依赖

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </dependency>
        <!--hystrix依赖,主要是用  @HystrixCommand -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
        <!--服务注册-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--服务调用-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!-- velocity 模板引擎, Mybatis Plus 代码生成器需要 -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
        </dependency>
        <!--swagger-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
        </dependency>
        <!--lombok用来简化实体类:需要安装lombok插件-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <!--xls-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
        </dependency>
        <!--httpclient-->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>
        <!--commons-io-->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
        </dependency>
        <!--gson-->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
        </dependency>
    
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>
    

    二、搭建service-edu模块

    1、在父工程的service模块下面再创建子模块service-edu

    2、在service下面service_edu模块中创建配置文件
    在resources目录下创建文件 application.properties

     # 服务端口
    server.port=8001
    # 服务名
    spring.application.name=service-edu
    # 环境设置:dev、test、prod
    spring.profiles.active=dev
    # mysql数据库连接
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/guli?serverTimezone=GMT%2B8
    spring.datasource.username=root
    spring.datasource.password=root
    #mybatis日志
    mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
    

    2、创建MP代码生成器

    在test目录的java目录下创建包com.atguigu.eduservice,创建代码生成器:getCode.java

     public class getCode {
        @Test
        public void main1() {
            // 1、创建代码生成器
            AutoGenerator mpg = new AutoGenerator();
            // 2、全局配置
            GlobalConfig gc = new GlobalConfig();
            String projectPath = System.getProperty("user.dir");
            System.out.println(projectPath);
            gc.setOutputDir(projectPath + "/src/main/java");
            gc.setAuthor("atguigu");
            gc.setOpen(false); //生成后是否打开资源管理器
            gc.setFileOverride(false); //重新生成时文件是否覆盖
            /*
             * mp生成service层代码,默认接口名称第一个字母有 I
             * UcenterService
             * */
            gc.setServiceName("%sService"); //去掉Service接口的首字母I
            gc.setIdType(IdType.ID_WORKER); //主键策略
            gc.setDateType(DateType.ONLY_DATE);//定义生成的实体类中日期类型
            gc.setSwagger2(true);//开启Swagger2模式
            mpg.setGlobalConfig(gc);
    
            // 3、数据源配置
            DataSourceConfig dsc = new DataSourceConfig();
            dsc.setUrl("jdbc:mysql://localhost:3306/guli?serverTimezone=GMT%2B8");
            dsc.setDriverName("com.mysql.cj.jdbc.Driver");
            dsc.setUsername("root");
            dsc.setPassword("root");
            dsc.setDbType(DbType.MYSQL);
            mpg.setDataSource(dsc);
            // 4、包配置
            PackageConfig pc = new PackageConfig();
            pc.setModuleName("serviceedu"); //模块名
            pc.setParent("com.atguigu");
            pc.setController("controller");
            pc.setEntity("entity");
            pc.setService("service");
            pc.setMapper("mapper");
            mpg.setPackageInfo(pc);
            // 5、策略配置
            StrategyConfig strategy = new StrategyConfig();
            strategy.setInclude("edu_teacher");
            strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
            strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉表前缀
            strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略
            strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作
            strategy.setRestControllerStyle(true); //restful api风格控制器
            strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符
            mpg.setStrategy(strategy);
            // 6、执行
            mpg.execute();
        }
    }
    

    二、编写后台管理api接口

    1、编写controller代码

    package com.atguigu.eduservice.controller;
    import com.alibaba.nacos.client.naming.utils.StringUtils;
    import com.atguigu.commonutils.R;
    import com.atguigu.eduservice.entity.EduTeacher;
    import com.atguigu.eduservice.query.TeacherQuery;
    import com.atguigu.eduservice.service.EduTeacherService;
    import com.atguigu.servicebase.handler.GuliException;
    import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
    import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiOperation;
    import io.swagger.annotations.ApiParam;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    @CrossOrigin //跨域
    @RestController
    @RequestMapping("/eduservice/eduteacher")
    public class EduTeacherController {
        //引入service
        @Autowired
    	private EduTeacherService eduTeacherService;
    	@ApiOperation(value = "所有讲师列表")
        @GetMapping
    	public List<EduTeacher> list(){
        return eduTeacherService.list(null);
          }
    }
    

    2、创建SpringBoot配置类

    在eduservice包下创建config包,创建EduConfig.java

    package com.atguigu.eduservice.config;
    @Configuration
    @EnableTransactionManagement
    @MapperScan("com.atguigu.eduservice.mapper")
    public class EduConfig {
     /**
     	* SQL 执行性能分析插件
     	* 开发环境使用,线上不推荐。 maxTime 指的是 sql 最大执行时长
        */
        @Bean
        @Profile({"dev","test"})// 设置 dev test 环境开启
        public PerformanceInterceptor performanceInterceptor() {
           PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
           performanceInterceptor.setMaxTime(1000);//ms,超过此处设置的ms则sql不执行
           performanceInterceptor.setFormat(true);
           return performanceInterceptor;
           }
    }
    

    4、创建SpringBoot启动类

    创建启动类 EduApplication.java,注意启动类的创建位置要在com.atguigu.eduservice目录下。

    package com.atguigu.eduservice;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.ComponentScan;
    @SpringBootApplication
    @ComponentScan(basePackages={"com.atguigu"})
    public class EduApplication {
        public static void main(String[] args) {
            SpringApplication.run(EduApplication.class, args);
        }
    }
    

    5、运行启动类

    访问http://localhost:8001/eduservice/eduteacher
    得到json数据

    6、统一返回的json时间格式

    默认情况下json时间格式带有时区,并且是世界标准时间,和我们的时间差了八个小时
    application.properties中添加配置

    #返回json的全局时间格式
    spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
    spring.jackson.time-zone=GMT+8
    

    三、逻辑删除功能

    1、EduTeacherController添加删除方法

    @ApiOperation(value = "根据ID删除讲师")
    @DeleteMapping("{id}")
    public boolean removeById(@PathVariable String id){
       return eduTeacherService.removeById(id);
    }
    

    2、配置逻辑删除插件

    在EduConfig中添加逻辑删除的配置

    /**
     * 逻辑删除插件
     */
    @Bean
    public ISqlInjector sqlInjector() {
        return new LogicSqlInjector();
    }
    

    3、使用postman测试删除

    测试正确结果为:数据库中的is_deleted字段被修改为1
    若不是上述结果,则是错误的,需要审计配置和代码。

    四、跨域配置

    1、什么是跨域

    浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域 。前后端分离开发中,需要考虑ajax跨域的问题。我们可以从服务端解决这个问题

    2、配置

    在Controller类上添加注解@CrossOrigin即可实现跨域

     @CrossOrigin //跨域
    

    在这里插入图片描述

  • 相关阅读:
    关于windows CE Platform Builder中模拟器的限制
    送给每天都用电脑的人
    用eVC4开发SmartPhone、Pocket PC程序之 开发工具下载、安装、配置
    在手机上显示图片
    如何禁止回车的使用
    弹出窗口的方法
    Request.Form同Request.querystring的区别.txt
    找前几天
    手机上可移动的图片
    httphandler是做什么的?
  • 原文地址:https://www.cnblogs.com/lvwuwa/p/14129554.html
Copyright © 2020-2023  润新知