公司开发过程中遇到的问题总结(一)

来公司已经两个多月了,之前一直忽略了文档的积累,经过公司大佬猫哥的带领下,我才慢慢意识到优秀的文档到底是什么样?
如果说生活是一门艺术,那么每天的文档记录是程序员生活中的一首高昂的赞歌!!

自己写的工具类在测试时候报错,

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.aixuexi.xiuchun.tools.DateToString' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@javax.annotation.Reso

原因是我们自己写的类上面没有加上相应的注解 @Component 加上即可
原因:
在持久层、业务层和控制层分别采用 @Repository、@Service 和 @Controller 对分层中的类进行注释,而用 @Component 对那些比较中立的类进行注释
这里就是说把这个类交给Spring管理,重新起个名字叫userManager,由于不好说这个类属于哪个层面,就用@Component

使用queryForObject查询返回一个对象本身,结果报错

 IncorrectResultSetColumnCountException  

主要是 因为我们查询的记录期待是一条数据,结果在queryForObject查询返回是 整条数据的信息,二者不匹配就会报错,我们这里采用query方法,但是在使用的时候我们返回list需要主要书写的形式

 List<FishDeviceManage> resultInstitution = myJdbcTemplate.query(sql,new Object[]{insId},new BeanPropertyRowMapper<>(FishDeviceManage.class));

对于我们使用queryForObject方法的时候,我们要求返回一个对象,这时候如果直接查询返回Object的话往往得不到想要的结果,所以我们在这里需要做一个转变,首先采用Map进行存储,

Map<String,Object> resultMap = myJdbcTemplate.queryForMap(sql,new Object[]{sn});
        if (resultMap == null || resultMap.size() == 0){
            return null;
        }
        FishDeviceManage fishDeviceManage = new FishDeviceManage();
        //对一个ORM
        handleMapping(resultMap,fishDeviceManage);
        return fishDeviceManage;

然后new一个对象,采用方法进行赋值转变,这时候我们可以得到handleMapping 的实体映射,在方法中进行赋值即可

 private void handleMapping(Map<String, Object> resultMap, FishDeviceManage fishDeviceManage) {
        fishDeviceManage.setId(MapUtils.getInteger(resultMap,"id",0));
        fishDeviceManage.setJoinTime(stringToDate.StringChangeDate(MapUtils.getString(resultMap,"joinTime","")));

对于一般String Interger基本类型我们直接使用MapUtils进行转化即可,但是对于特殊类型,比如Date类型,这里我需要自己提供工具类积习难改in转化
其实工具类在java开发中很常用,包括基本的数据类型转换啊,还有一些特殊的类型等等

在自定义的字段类型书写上,我们应该严格遵循字段映射的规律,根据驼峰进行转换,这也是java中实体类去数据库进行字段匹配的转换原则和过滤

  //fish_device_manage 所有字段
    static final String baseColumn = "fdm.id id,fdm.ins_id insId,fdm.number number,fdm.sn sn,fdm.grey_id greyId,fdm.name name,fdm.short_name " +
            "shortName,fdm.join_time joinTime,fdm.status status";

一定要严格遵循驼峰的命名,否则后面查询出现一堆null,你还不知大为什么,到处找寻自己的原因呢!!!

在springboot中,我们使用测试类时候一定要记得在测试类上加上注解

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = Application.class)

我们后面的测试才能生效,具体关于springboot的学习后期会进一步加强,我们我们先从基础来学习,在啊、慢慢的踩着前人的坑一步步前进,
在开发中遇到困难是最没有必要害怕的,正是每天出现的问题让我们变得越来越老练!
很感谢公司大佬士浩学长,能够在我遇到问题时候一针见血给我指出来,同时知道我的短板和不足,在工作中主动要求我学习新的知识点,谢谢大佬
我一定会加倍努力的! 2018/2/23 19:35

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值