1. 程式人生 > >公司開發過程中遇到的問題總結(一)

公司開發過程中遇到的問題總結(一)

來公司已經兩個多月了,之前一直忽略了文件的積累,經過公司大佬貓哥的帶領下,我才慢慢意識到優秀的文件到底是什麼樣?
如果說生活是一門藝術,那麼每天的文件記錄是程式設計師生活中的一首高昂的讚歌!!

自己寫的工具類在測試時候報錯,

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

相關推薦

no