精华内容
下载资源
问答
  • 内容 ... 1.异常简介 2.常见异常 3.trycatch 4.throws 5.自定义异常 一....当程序出现异常情况时,如果我们没有处理,那么程序会直接终止运行,也就是崩溃。...注意:错误是和异常是区别的,错误不能被处理,只能退出J...

    内容

    详细请看:https://www.jianshu.com/p/7cf0611738b1

    1.异常简介
    2.常见异常
    3.trycatch
    4.throws
    5.自定义异常

    一.异常简介

    当程序出现异常情况时,如果我们没有处理,那么程序会直接终止运行,也就是崩溃。但是我们不知道是哪里出了问题。所以为了解决这个问题,就要使用“异常”。注意:错误是和异常是有区别的,错误不能被处理,只能退出JVM,而异常是可以处理的。两者都继承Throwable。

    异常继承结构图(蕴含与错误关系)

    二.常见异常

    常见异常有
    空指针异常NullPointerException
    类型转换异常ClassCastException
    数组越界IndexOutOfBoundsException
    等等

    三.trycatch

    可以使用try catch捕获异常

    1.注意点

    ①当try代码块里面出现异常之后,后面的代码不会执行。
    所以②不要让try包裹太多的内容,虽然try可以嵌套,但是最好不要多层嵌套。这样代码结构会混乱,可读性会变差。如果非要嵌套,那最多弄两层就够了。
    其实③catch可以写多个,所以没必要搞嵌套
    即try{
    }catch(){
    }catch(){
    }finally{
    }

    2.finally

    这里finally是释放资源。不管有没有异常,finally里面的东西一定会执行。注意:①一般需要释放文件、网络和数据库资源的时候需要用finally,就是哪些代码必须要执行,就把这些代码放在finally里面。
    ②Java只会自动释放在堆或者栈上的资源,不会释放外部资源。比如打开文件之后,出现了异常,那么文件可能不会关闭,这里Java不会自动关闭文件的
    ③finally里面也可以进行trycatch,比如文件可能也关闭不了,就在finally里面trycatch一下。

    3.使用格式

    try {
                
            }catch() {
                
            }catch() {
                
            }finally {
                try {
                    
                }catch() {
                    
                }
            }

    4.注意点(续)

    ④当有多个catch的时候,按照子类到父类的顺序进行捕获,如果父类的异常捕获在前,那么就会拦截子类的catch。
    ⑤但是很多情况我们不太会关心具体是捕获什么异常只是关心异常的处理,就可以使用所有异常的父类Exeption来捕获即可。打印出来的内容其实也是具体的异常。这样会方便很多,而且代码也会更加简洁。

    四.throws

    除了使用trycatch,也可以使用throws抛出异常,后面可以是抛出具体的异常,也可以直接抛出Exception

    1.何时用

    某个方法完成某个功能,当执行时可能出现异常,这种异常需要调用者自己决定该如何处理,也就是说程序员自己不知道,不确定该怎么处理,就使用throws抛出异常

    2.使用示例

    import java.io.*;
    import java.util.*;
    
    class Test{
        public void show() throws IOException{
            FileReader fr = null;
        }
    }
    
    public class 测试程序   {                                                                                                             
                   
        public static void main(String[] args)    {
        
            Test t = new Test();
            try {
                t.show();
            }catch(IOException e) {
                e.printStackTrace();
            }    
            
        }
    
    }

    五.自定义异常

    1.使用

    1.如果是编译时异常:直接继承Exception
    2.如果是运行时异常:直接继承RuntimeException
    当然也都可以笼统继承Exception

    2.注意点

    自定义异常里面一般提供两个构造方法,其中一个是无参的,另外一个传字符串,并且在构造函数里面执行super(传入的字符串)
    (这个字符串就是出现异常的时候提示的内容)

    3.使用示例

    import java.io.*;
    import java.util.*;
    
    class Test{
        //登录方法
        //不允许首字母是数字1
        public void login(String name,String pwd) throws LoginException {
            if(name.startsWith("1")) {
                //自己定义一个异常
                LoginException e = new LoginException("用户名不能以1开头");
                throw e;
                //或者直接
                //throw new LoginException("用户名不能以1开头");
            }
        }
    }
    
    class LoginException extends Exception{
          public LoginException() {
              
          }
          public LoginException(String s) {//字符串是提示的内容
              super(s);
          }
        
    }
    public class 测试程序   {                                                                                                             
               
        
        public static void main(String[] args)    {
        
            Test t = new Test();
            try {
                t.login("1Jack", "123");
            }catch(LoginException e) {
                e.printStackTrace();
            }
    
        
            
        }
    
    }
    输出结果

    总结

    收获颇丰!尤其是对throws和自定义异常的理解更透彻了!

    展开全文
  • 我们已经开发完了一个用户注册的接口,但是我们并没有测试也不知道里面哪里忽略了,什么问题,先讲下下swagger2,然后集成到spring boot这个项目中。源码:https://github.com/limingios/wxProgram.git 中的wx-...

    我们已经开发完了一个用户注册的接口,但是我们并没有测试也不知道里面哪里忽略了,有什么问题,先讲下下swagger2,然后集成到spring boot这个项目中。源码:https://github.com/limingios/wxProgram.git 中的wx-springboot

     

    swagger2

    • 介绍

    swagger2 是可以构建一个非常强大的,是个非常好用的工具也是个非常好用的插件。

    1. 可以生成文档形式的api并提供给不同的团队
    2. 便于自测,也便于领导查阅任务量。
    3. 无需过多冗余的word文档。保证文档是最新的。
    • 使用方法

    在spring boot common中pom中引入

    <!-- swagger2 配置 -->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.4.0</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.4.0</version>
            </dependency>
    
    • 添加swagger2的配置文件

    在spring boot api中加入java类

    package com.idig8;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.ParameterBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.schema.ModelRef;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.service.Contact;
    import springfox.documentation.service.Parameter;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    @Configuration
    @EnableSwagger2
    public class Swagger2 {
    
        /**
         * @Description:swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
         */
        @Bean
        public Docket createRestApi() {
    
            // 为swagger添加header参数可供输入  
            ParameterBuilder userTokenHeader = new ParameterBuilder();
            ParameterBuilder userIdHeader = new ParameterBuilder();
            List<Parameter> pars = new ArrayList<Parameter>();  
            userTokenHeader.name("headerUserToken").description("userToken")
                .modelRef(new ModelRef("string")).parameterType("header")
                .required(false).build();  
            userIdHeader.name("headerUserId").description("userId")
                .modelRef(new ModelRef("string")).parameterType("header")
                .required(false).build(); 
            pars.add(userTokenHeader.build());
            pars.add(userIdHeader.build());
    
            return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
                    .apis(RequestHandlerSelectors.basePackage("com.idig8.controller"))
                    .paths(PathSelectors.any()).build()
                    .globalOperationParameters(pars);
        }
    
        /**
         * @Description: 构建 api文档的信息
         */
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    // 设置页面标题
                    .title("使用swagger2构建小程序后端api接口文档")
                    // 设置联系人
                    .contact(new Contact("IT人故事会", "https://idig8.com", "公众号:编程坑太多"))
                    // 描述
                    .description("欢迎访问接口文档")
                    // 定义版本号
                    .version("1.0").build();
        }
    
    }
    
    
    • 修改原有的controller的修改
    package com.idig8.controller;
    
    import org.apache.commons.lang3.StringUtils;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.github.pagehelper.util.StringUtil;
    import com.idig8.pojo.Users;
    import com.idig8.service.UserService;
    import com.idig8.utils.JSONResult;
    import com.idig8.utils.MD5Utils;
    
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiOperation;
    
    @RestController
    @Api(value="用户注册登录的接口",tags={"注册和登录的controller"})
    public class RegistLoginController {
    
        @Autowired
        private UserService userService;
    
    
        @ApiOperation(value="用户注册",notes="用户注册的接口")
        @PostMapping("/regist")
        public JSONResult regist(@RequestBody Users user) {
            //1.判断用户名和密码不能为空
            if(StringUtils.isBlank(user.getUsername())||StringUtils.isBlank(user.getPassword())) {
                return JSONResult.errorMsg("用户名或密码不能为空");
            }
    
            //2.判断用户名是否存在
            boolean usernameIsExist = userService.queryUsernameIsExist(user.getUsername());
            if(!usernameIsExist) {
                user.setNickname(user.getUsername());
                try {
                    user.setPassword(MD5Utils.getMD5Str(user.getPassword()));
                } catch (Exception e) {
    
                    return JSONResult.errorMsg(e.getMessage());
                }
                user.setFollowCounts(0);
                user.setReceiveLikeCounts(0);
                user.setFansCounts(0);
                userService.saveUser(user);
            }else {
                return JSONResult.errorMsg("用户名或已经存在,请更换在试试!");
            }
    
    
    
            return JSONResult.ok();
        }
    }
    
    
    • 增加Users属性的限制,那些必填 ,spring-boot pojo项目
    package com.idig8.pojo;
    
    import javax.persistence.*;
    
    import io.swagger.annotations.ApiModel;
    import io.swagger.annotations.ApiModelProperty;
    
    @ApiModel(value="用户对象",description="这是用户对象")
    public class Users {
        @Id
        @ApiModelProperty(hidden=true)
        private String id;
    
        /**
         * 用户名
         */
        @ApiModelProperty(value="用户名",name="username",example="idig8",required=true)
        private String username;
    
        /**
         * 密码
         */
        @ApiModelProperty(value="密码",name="password",example="123456",required=true)
        private String password;
    
        /** 
         * 我的头像,如果没有默认给一张
         */
        @Column(name = "face_image")
        private String faceImage;
    
        /**
         * 昵称
         */
        @ApiModelProperty(hidden=true)
        private String nickname;
    
        /**
         * 我的粉丝数量
         */
        @ApiModelProperty(hidden=true)
        @Column(name = "fans_counts")
        private Integer fansCounts;
    
        /**
         * 我关注的人总数
         */
        @ApiModelProperty(hidden=true)
        @Column(name = "follow_counts")
        private Integer followCounts;
    
        /**
         * 我接受到的赞美/收藏 的数量
         */
        @ApiModelProperty(hidden=true)
        @Column(name = "receive_like_counts")
        private Integer receiveLikeCounts;
    
        /**
         * @return id
         */
        public String getId() {
            return id;
        }
    
        /**
         * @param id
         */
        public void setId(String id) {
            this.id = id;
        }
    
        /**
         * 获取用户名
         *
         * @return username - 用户名
         */
        public String getUsername() {
            return username;
        }
    
        /**
         * 设置用户名
         *
         * @param username 用户名
         */
        public void setUsername(String username) {
            this.username = username;
        }
    
        /**
         * 获取密码
         *
         * @return password - 密码
         */
        public String getPassword() {
            return password;
        }
    
        /**
         * 设置密码
         *
         * @param password 密码
         */
        public void setPassword(String password) {
            this.password = password;
        }
    
        /**
         * 获取我的头像,如果没有默认给一张
         *
         * @return face_image - 我的头像,如果没有默认给一张
         */
        public String getFaceImage() {
            return faceImage;
        }
    
        /**
         * 设置我的头像,如果没有默认给一张
         *
         * @param faceImage 我的头像,如果没有默认给一张
         */
        public void setFaceImage(String faceImage) {
            this.faceImage = faceImage;
        }
    
        /**
         * 获取昵称
         *
         * @return nickname - 昵称
         */
        public String getNickname() {
            return nickname;
        }
    
        /**
         * 设置昵称
         *
         * @param nickname 昵称
         */
        public void setNickname(String nickname) {
            this.nickname = nickname;
        }
    
        /**
         * 获取我的粉丝数量
         *
         * @return fans_counts - 我的粉丝数量
         */
        public Integer getFansCounts() {
            return fansCounts;
        }
    
        /**
         * 设置我的粉丝数量
         *
         * @param fansCounts 我的粉丝数量
         */
        public void setFansCounts(Integer fansCounts) {
            this.fansCounts = fansCounts;
        }
    
        /**
         * 获取我关注的人总数
         *
         * @return follow_counts - 我关注的人总数
         */
        public Integer getFollowCounts() {
            return followCounts;
        }
    
        /**
         * 设置我关注的人总数
         *
         * @param followCounts 我关注的人总数
         */
        public void setFollowCounts(Integer followCounts) {
            this.followCounts = followCounts;
        }
    
        /**
         * 获取我接受到的赞美/收藏 的数量
         *
         * @return receive_like_counts - 我接受到的赞美/收藏 的数量
         */
        public Integer getReceiveLikeCounts() {
            return receiveLikeCounts;
        }
    
        /**
         * 设置我接受到的赞美/收藏 的数量
         *
         * @param receiveLikeCounts 我接受到的赞美/收藏 的数量
         */
        public void setReceiveLikeCounts(Integer receiveLikeCounts) {
            this.receiveLikeCounts = receiveLikeCounts;
        }
    }
    
    

    运行项目

    • 报错:没有增加扫描
    Action:
    
    Consider defining a bean of type 'com.idig8.mapper.UsersMapper' in your configuration.
    
    

    增加id自动生成Sid的扫描,在service里面注入了和mapper的扫描

    package com.idig8;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.ComponentScan;
    
    import tk.mybatis.spring.annotation.MapperScan;
    
    @SpringBootApplication
    @MapperScan(basePackages="com.idig8.mapper")
    @ComponentScan(basePackages= {"com.idig8","org.n3r.idworker"})
    public class Application {
    
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    
    }
    
    
    • 访问网址http://localhost:8081/swagger-ui.html

    点击左边的实例,修改内容,点击try it out!

    返回的结果

    数据库插入正常

    • 里面的内容设置成空

    • 用户名设置成idig8 在试试接口

    PS:到这里swagger2的文档配置和接口配置,包括错误的的接口测试基本都演示完毕了。

    展开全文
  • 讲解的很详细也很生动,其中包括Java基础,Java中级,Java高级,Java应用,前端部分,J2EE,Java框架,工具和中间件,数据库,实践项目Java面试题,整个java体系讲解的非常详细,还有项目例子天猫商城实战练习,...

    最近看到一个讲解Java的网站,讲解的很详细也很生动,其中包括Java基础,Java中级,Java高级,Java应用,前端部分,J2EE,Java框架,工具和中间件,数据库,实践项目,Java面试题,整个java体系讲解的非常详细,还有项目例子天猫商城实战练习,既适合刚学java不知道从哪里学起的新手观看学习,也适合有一定基础但是不扎实缺少经验的同学观看,在这里分享给大家,有点大,368m,建议大家保存到网盘后直接解压打开index.html就可以了。里面会显示已经是全新版本,点击使用就可以链接https://pan.baidu.com/s/1lBIIGPbY27ySW1njoayKkA 提取码mfti

    展开全文
  • 我们已经开发完了一个用户注册的接口,但是我们并没有测试也不知道里面哪里忽略了,什么问题,先讲下下swagger2,然后集成到spring boot这个项目中。源码:https://github.com/limingios/wxProgram.git 中的wx-...

    09f4cabd4d5fee7de81ca53127688150.png
    我们已经开发完了一个用户注册的接口,但是我们并没有测试也不知道里面哪里忽略了,有什么问题,先讲下下swagger2,然后集成到spring boot这个项目中。源码:https://github.com/limingios/wxProgram.git 中的wx-springboot

    swagger2

    • 介绍
    swagger2 是可以构建一个非常强大的,是个非常好用的工具也是个非常好用的插件。
    1. 可以生成文档形式的api并提供给不同的团队
    2. 便于自测,也便于领导查阅任务量。
    3. 无需过多冗余的word文档。保证文档是最新的。
    • 使用方法
    在spring boot common中pom中引入

    d15b96a08afa25ac085a6caa5d47050a.png
    <!-- swagger2 配置 -->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.4.0</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.4.0</version>
            </dependency>
    • 添加swagger2的配置文件
    在spring boot api中加入java类

    f1f8d84b6c30f7fda05ae892b3da3b9a.png
    package com.idig8;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.ParameterBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.schema.ModelRef;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.service.Contact;
    import springfox.documentation.service.Parameter;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    @Configuration
    @EnableSwagger2
    public class Swagger2 {
    
        /**
         * @Description:swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
         */
        @Bean
        public Docket createRestApi() {
    
            // 为swagger添加header参数可供输入  
            ParameterBuilder userTokenHeader = new ParameterBuilder();
            ParameterBuilder userIdHeader = new ParameterBuilder();
            List<Parameter> pars = new ArrayList<Parameter>();  
            userTokenHeader.name("headerUserToken").description("userToken")
                .modelRef(new ModelRef("string")).parameterType("header")
                .required(false).build();  
            userIdHeader.name("headerUserId").description("userId")
                .modelRef(new ModelRef("string")).parameterType("header")
                .required(false).build(); 
            pars.add(userTokenHeader.build());
            pars.add(userIdHeader.build());
    
            return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
                    .apis(RequestHandlerSelectors.basePackage("com.idig8.controller"))
                    .paths(PathSelectors.any()).build()
                    .globalOperationParameters(pars);
        }
    
        /**
         * @Description: 构建 api文档的信息
         */
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    // 设置页面标题
                    .title("使用swagger2构建小程序后端api接口文档")
                    // 设置联系人
                    .contact(new Contact("IT人故事会", "https://idig8.com", "公众号:编程坑太多"))
                    // 描述
                    .description("欢迎访问接口文档")
                    // 定义版本号
                    .version("1.0").build();
        }
    
    }
    • 修改原有的controller的修改
    package com.idig8.controller;
    
    import org.apache.commons.lang3.StringUtils;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.github.pagehelper.util.StringUtil;
    import com.idig8.pojo.Users;
    import com.idig8.service.UserService;
    import com.idig8.utils.JSONResult;
    import com.idig8.utils.MD5Utils;
    
    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiOperation;
    
    @RestController
    @Api(value="用户注册登录的接口",tags={"注册和登录的controller"})
    public class RegistLoginController {
    
        @Autowired
        private UserService userService;
    
    
        @ApiOperation(value="用户注册",notes="用户注册的接口")
        @PostMapping("/regist")
        public JSONResult regist(@RequestBody Users user) {
            //1.判断用户名和密码不能为空
            if(StringUtils.isBlank(user.getUsername())||StringUtils.isBlank(user.getPassword())) {
                return JSONResult.errorMsg("用户名或密码不能为空");
            }
    
            //2.判断用户名是否存在
            boolean usernameIsExist = userService.queryUsernameIsExist(user.getUsername());
            if(!usernameIsExist) {
                user.setNickname(user.getUsername());
                try {
                    user.setPassword(MD5Utils.getMD5Str(user.getPassword()));
                } catch (Exception e) {
    
                    return JSONResult.errorMsg(e.getMessage());
                }
                user.setFollowCounts(0);
                user.setReceiveLikeCounts(0);
                user.setFansCounts(0);
                userService.saveUser(user);
            }else {
                return JSONResult.errorMsg("用户名或已经存在,请更换在试试!");
            }
    
    
    
            return JSONResult.ok();
        }
    }
    • 增加Users属性的限制,那些必填 ,spring-boot pojo项目
    package com.idig8.pojo;
    
    import javax.persistence.*;
    
    import io.swagger.annotations.ApiModel;
    import io.swagger.annotations.ApiModelProperty;
    
    @ApiModel(value="用户对象",description="这是用户对象")
    public class Users {
        @Id
        @ApiModelProperty(hidden=true)
        private String id;
    
        /**
         * 用户名
         */
        @ApiModelProperty(value="用户名",name="username",example="idig8",required=true)
        private String username;
    
        /**
         * 密码
         */
        @ApiModelProperty(value="密码",name="password",example="123456",required=true)
        private String password;
    
        /** 
         * 我的头像,如果没有默认给一张
         */
        @Column(name = "face_image")
        private String faceImage;
    
        /**
         * 昵称
         */
        @ApiModelProperty(hidden=true)
        private String nickname;
    
        /**
         * 我的粉丝数量
         */
        @ApiModelProperty(hidden=true)
        @Column(name = "fans_counts")
        private Integer fansCounts;
    
        /**
         * 我关注的人总数
         */
        @ApiModelProperty(hidden=true)
        @Column(name = "follow_counts")
        private Integer followCounts;
    
        /**
         * 我接受到的赞美/收藏 的数量
         */
        @ApiModelProperty(hidden=true)
        @Column(name = "receive_like_counts")
        private Integer receiveLikeCounts;
    
        /**
         * @return id
         */
        public String getId() {
            return id;
        }
    
        /**
         * @param id
         */
        public void setId(String id) {
            this.id = id;
        }
    
        /**
         * 获取用户名
         *
         * @return username - 用户名
         */
        public String getUsername() {
            return username;
        }
    
        /**
         * 设置用户名
         *
         * @param username 用户名
         */
        public void setUsername(String username) {
            this.username = username;
        }
    
        /**
         * 获取密码
         *
         * @return password - 密码
         */
        public String getPassword() {
            return password;
        }
    
        /**
         * 设置密码
         *
         * @param password 密码
         */
        public void setPassword(String password) {
            this.password = password;
        }
    
        /**
         * 获取我的头像,如果没有默认给一张
         *
         * @return face_image - 我的头像,如果没有默认给一张
         */
        public String getFaceImage() {
            return faceImage;
        }
    
        /**
         * 设置我的头像,如果没有默认给一张
         *
         * @param faceImage 我的头像,如果没有默认给一张
         */
        public void setFaceImage(String faceImage) {
            this.faceImage = faceImage;
        }
    
        /**
         * 获取昵称
         *
         * @return nickname - 昵称
         */
        public String getNickname() {
            return nickname;
        }
    
        /**
         * 设置昵称
         *
         * @param nickname 昵称
         */
        public void setNickname(String nickname) {
            this.nickname = nickname;
        }
    
        /**
         * 获取我的粉丝数量
         *
         * @return fans_counts - 我的粉丝数量
         */
        public Integer getFansCounts() {
            return fansCounts;
        }
    
        /**
         * 设置我的粉丝数量
         *
         * @param fansCounts 我的粉丝数量
         */
        public void setFansCounts(Integer fansCounts) {
            this.fansCounts = fansCounts;
        }
    
        /**
         * 获取我关注的人总数
         *
         * @return follow_counts - 我关注的人总数
         */
        public Integer getFollowCounts() {
            return followCounts;
        }
    
        /**
         * 设置我关注的人总数
         *
         * @param followCounts 我关注的人总数
         */
        public void setFollowCounts(Integer followCounts) {
            this.followCounts = followCounts;
        }
    
        /**
         * 获取我接受到的赞美/收藏 的数量
         *
         * @return receive_like_counts - 我接受到的赞美/收藏 的数量
         */
        public Integer getReceiveLikeCounts() {
            return receiveLikeCounts;
        }
    
        /**
         * 设置我接受到的赞美/收藏 的数量
         *
         * @param receiveLikeCounts 我接受到的赞美/收藏 的数量
         */
        public void setReceiveLikeCounts(Integer receiveLikeCounts) {
            this.receiveLikeCounts = receiveLikeCounts;
        }
    }

    运行项目

    • 报错:没有增加扫描
    Action:
    
    Consider defining a bean of type 'com.idig8.mapper.UsersMapper' in your configuration.
    增加id自动生成Sid的扫描,在service里面注入了和mapper的扫描

    c10e7e5ecc8cafb470263a42caabb3ff.png
    package com.idig8;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.ComponentScan;
    
    import tk.mybatis.spring.annotation.MapperScan;
    
    @SpringBootApplication
    @MapperScan(basePackages="com.idig8.mapper")
    @ComponentScan(basePackages= {"com.idig8","org.n3r.idworker"})
    public class Application {
    
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    
    }
    • 访问网址http://localhost:8081/swagger-ui.html

    a5774cd0579d103d6869c892f7d02fe1.png
    点击左边的实例,修改内容,点击try it out!

    cadc818dfb3db0cdb8cd64d37eb5f958.png
    返回的结果

    29cd10c2470dbde4adee0a252a7887f4.png
    数据库插入正常

    7de66c746ee347345a830d8eab516ba1.png
    • 里面的内容设置成空

    d020e4e6fd21201dc896ea6a6acd113a.png

    b026a960fddb71161e43abd0daac33ae.png
    • 用户名设置成idig8 在试试接口

    1e5ebbd4612abcd2399380ccf98ea96b.png

    d9500c5d9e4613f94f9b9c8ee3e47167.png

    PS:到这里swagger2的文档配置和接口配置,包括错误的的接口测试基本都演示完毕了。

    展开全文
  • 我们已经开发完了一个用户注册的接口,但是我们并没有测试也不知道里面哪里忽略了,什么问题,先讲下下swagger2,然后集成到spring boot这个项目中。源码:https://github.com/limingios/wxProgram.git 中的wx-...
  • 前言 重点动手做,永远是学习的最好的方式! 文章目录前言1.mysql左右连接和内...你项目里的数据都是从哪里来的,怎么获取的。13.你在项目里还有个推荐这一功能,你是怎么实现的?14.接口和抽象类的区别15.面对对象的
  • 前言:现在自己的学习似乎遇到了瓶颈,感觉学习了 SSM 之后一些迷茫,不知道接下来该往哪里去努力了,我觉得这是个很不好的状态,为了度过这段时期,我准备把天猫模仿下来(给自己找点事做)之后开始去巩固 Java ...
  • (5)人说“做软件开发就是吃青春饭,干不到35岁”,是不是35岁以后我就失业了? (6)IT行业的技术发展这么快,是不是我学的很快就会被淘汰?学什么不会被淘汰? (7)这么多技术,我该学什么?我该怎么学? (8...
  • 线上OOM问题实战

    2019-03-26 11:43:30
    遇到这种错误,往往很难知道是哪里出错,我去年记录定位OOM的问题的文章,刚好重温一下:线上java.lang.OutOfMemoryError问题定位三板斧 先不着急重启,先看看内存情况: top 查看java运行的pid jmap -heap pid ...
  • JVM性能优化实战

    2020-08-27 17:57:34
    一个java程序运行,最少三个类加载器实例,负责不同类的加载。 查看类对应的加载器 通过JDK-API进行查看:java.lang.Class.getClassLoader(),返回装载类的类加载器。如果这个类是由bootstrapClassLoader加载的,...
  • 《Android开发入门与实战》配套400多分钟的全程开发视频光盘,指导读者快速、无障碍地学通Android实战开发技术。《Android开发入门与实战》适合具备一定软件开发经验,想快速进入Android开发领域的程序员;具备...
  •  本书配套400多分钟的全程开发视频光盘,指导读者快速、无障碍地学通android实战开发技术。..  本书适合具备一定软件开发经验,想快速进入android开发领域的程序员;具备一些手机开发经验的开发者和android开发...
  • 知识地图就是你前进的灯塔,了它你知道目标在哪里,也知道差距在哪里,路漫漫其修远兮希望你能早日通关~ 目录(善用Ctrl+F) 学Java有哪些热门就业方向? 安卓开发 Java 后端开发 大数据/数据仓库 Java...
  • 现在个小项目需求很简单,就是数据库中读东西出来显示,但是我参与过这个项目的前期工作,觉得数据库的设计修改太快了,一旦数据库修改了,我好多地方都要重写,而且这个项目的负责人对使用什么数据库都没确定,我...
  • 实战项目 推荐系统 实时数据仓库搭建 大数据相关面试 算法篇 JavaJava Web 数据库和分布式篇 GitHub上一些技术书籍、翻译书籍、面试题库推荐 eBook和视频资源 Python Java系列 Hadoop系列资源 Spark...
  • 在网上找一个符合自己能力与找工作需求的实战项目视频或者博客跟着老师一起做。做的过程中,你要自己的思考,不要浅尝辄止,对于很多知识点,别人的讲解可能只是满足项目就够了,你自己想多点知识的话,对于重要的...
  • Android基础教程

    2013-04-09 10:56:38
    前13章章尾均“快速阅读指南”,你无需按照顺序阅读该章,即可迅速找到所需信息,并高效地完成工作。 《Android基础教程(第3版·修订版)》适合所有移动开发人员学习参考。 目录 第一部分 Android简介 第1章 快速...
  • 以大家都熟悉的登录操作为例:三个文件LoginActivty.java、LoginViewModel.java、activity_login.xml 2.1.1、关联ViewModel 在activity_login.xml中关联LoginViewModel。 <layout> <data> <...
  • <div><h2>3月份前端资源分享 ...几种常见的JavaScript混淆和反混淆工具分析实战</a></li><li><a href="http://gold.xitu.io/entry/56dfce84f3609a005536a53a">让图片加载这件事儿变得更美好</a></li><li><a href=...
  • 3. 培训机构的项目实战具体指的...所谓的实战项目一部分来源于企业,一部分来源于网络。但不管来源于哪里,其实都是在照着葫芦画瓢,没有相应的业务。 比如学java,通常的项目就是模仿淘宝网站,做一个具有淘宝网

空空如也

空空如也

1 2
收藏数 26
精华内容 10
关键字:

哪里有java实战项目

java 订阅