美文网首页
201104:number对应类型-duceap中swagger

201104:number对应类型-duceap中swagger

作者: 弹钢琴的崽崽 | 来源:发表于2020-11-04 21:56 被阅读0次

    一. Oracle数据库中number对应什么字段类型

    数据库中为number类型的字段,在Java类型中对应的有Integer和BigDecimal都会出现;
    经测试发现当数据库为sql server和DB2时,用getObject()取出来时Integer类型,但是Oracle 中取出来就会是Integer或者BigDecimal类型。原因是oracle与java类型对应于number长度有关。

    遇到该类型问题,若要判断每个数据库和数据库字段长度不同对应的java数据类型不同太过烦琐,可采用getString()来取值,统一先转为string来判断

    另外附上
    java.sql.Types,数据库字段类型,java数据类型的对应关系

    二. duceap框架的swagger区分大小写

    http://20.20.32.132:8082/bmxft/v2/api-docs

    三. javax.persistence.EntityNotFoundException异常

    类上加@RestController注解

    四. @Qualifier

    错误信息:

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'employeeInfoControl': Injection of autowired dependencies failed;
    

    有如下接口:

    public interface EmployeeService {
        public EmployeeDto getEmployeeById(Long id);
    }
    

    同时有下述两个实现类 EmployeeServiceImpl和EmployeeServiceImpl1:

    @Service("service")
    public class EmployeeServiceImpl implements EmployeeService {
        public EmployeeDto getEmployeeById(Long id) {
            return new EmployeeDto();
        }
    }
    
    @Service("service1")
    public class EmployeeServiceImpl1 implements EmployeeService {
        public EmployeeDto getEmployeeById(Long id) {
            return new EmployeeDto();
        }
    }
    

    调用代码如下:

    @Controller
    @RequestMapping("/emplayee.do")
    public class EmployeeInfoControl {
    
        @Autowired
        EmployeeService employeeService;
    
        @RequestMapping(params = "method=showEmplayeeInfo")
        public void showEmplayeeInfo(HttpServletRequest request, HttpServletResponse response, EmployeeDto dto) {
            #略
        }
    }
    

    在启动tomcat时报如下错误:

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'employeeInfoControl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.test.service.EmployeeService com.test.controller.EmployeeInfoControl.employeeService; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [com.test.service.EmployeeService] is defined: expected single matching bean but found 2: [service1, service2]
    

    其实报错信息已经说得很明确了,在autoware时,由于有两个类实现了EmployeeService接口,所以Spring不知道应该绑定哪个实现类,所以抛出了如上错误。

    这个时候就要用到@Qualifier注解了,qualifier的意思是合格者,通过这个标示,表明了哪个实现类才是我们所需要的,我们修改调用代码,添加@Qualifier注解,需要注意的是@Qualifier的参数名称必须为我们之前定义@Service注解的名称之一!

    @Controller
    @RequestMapping("/emplayee.do")
    public class EmployeeInfoControl {
        
        @Autowired
        @Qualifier("service")
        EmployeeService employeeService;
        
        @RequestMapping(params = "method=showEmplayeeInfo")
        public void showEmplayeeInfo(HttpServletRequest request, HttpServletResponse response, EmployeeDto dto) {
            #略
        }
    }
    

    @Autowired @Resource @Qualifier的区别

    实用理解:@Autowired @Resource 二选其一,看中哪个就用哪个。

    简单理解:

    @Autowired 根据类型注入,

    @Resource 默认根据名字注入,其次按照类型搜索

    @Autowired @Qualifie("userService") 两个结合起来可以根据名字和类型注入

    相关文章

      网友评论

          本文标题:201104:number对应类型-duceap中swagger

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