1. 程式人生 > >2018年5月工作中遇到的問題

2018年5月工作中遇到的問題

2018年5月工作中遇到的問題

1客戶報價管理:

 

客戶名稱顯示邏輯,通過登陸使用者ID在表upms_user_jskh查詢到customer_ids和company_ids,然後通過查詢的customer_ids和company_ids再去表crm_jskh裡面查詢客戶名稱。

2、修改使用者管理:

 

1、使用者管理頁面:將新增使用者按鈕改成兩個按鈕分別為新增員工和新增客戶,點選時跳出不同的頁面。

2、在新增客戶跳出的頁面裡新增:經營單位和結算單位下拉框

3、客戶報價模板裡面無法儲存客戶型別。

4upms_user_jskh許可權表,許可權的商品庫和報關模板欄位在這個表裡面。

5、報價模板存在表crm_quote_customer

657號下午---58號修改時,增加了非法欄位導致報錯,所以進行了修改

 

F:\IdeaProjects\wanli\zheng\zheng-crm\zheng-crm-web\src\main\java\com\zheng\crm\server\controller\

saleManage\CrmQuoteCustomerController.java

F:\IdeaProjects\wanli\zheng\zheng-crm\zheng-crm-rpc-service\src\main\java\com\zheng\crmSaleManage\dao\mapper\

CrmQuoteTemplateMapper.xml

 

F:\IdeaProjects\wanli\zheng\zheng-upms\zheng-upms-server\src\main\java\com\zheng\upms\server\controller\manage\

UpmsUserRoleController.java

F:\IdeaProjects\wanli\zheng\zheng-upms\zheng-upms-server\src\

main\webapp\WEB-INF\jsp\manage\userRole

7

 

client reconnect

 to 192.168.31.102:20883:沒有連線

client(url: dubbo://192.168.31.102:20883/com.zheng.crm.rpc.api.CrmJskhContactsService:crm服務沒有啟動

 

8UpmsUserJskhMapper.xml檔案裡:

 

F:\IdeaProjects\wanli\zheng\zheng-upms\zheng-upms-rpc-service\src\main\java\com\zheng\upms\dao\mapper\UpmsUserJskhMapper.xml

 

<update id="updateData" parameterType="java.util.Map">

                 <if test="customer_text != null and ‘’= customer_text ">   //取消紅色部分

                 <![CDATA[t.customer_text = #{customer_text},]]>

                  </if>

</update>

 

修改的問題:

使用者管理,經營單位,結算單位、供應商、資料庫、報關模板 批量勾選取消全部 儲存後無效。

 

9 使用select2實現多功能下拉框                         **

 

下面是使用select2的初始化、動態賦值,實現標籤化多選、以及遇到的問題:

1,從http://select2.github.io/examples.html 處下載select2原始碼,把dist目錄中css、js引用到html中,

2,在頁面中新建:<div id="test_select2"></div>,

3,初始化select2很簡單,$('#test_select2').select2();就行,這是沒有任何屬性和值的最簡單初始化,下面介紹幾個常用的屬性:

var itemList =[{id:1,text:'測試1'}{}{}{{}{}{}{}];

//類似的json陣列格式,可以單獨用jquery的ajax獲取伺服器的資料。

$('#test_select2').select2({

    placeholder : '輸入話題關鍵字',

    tags : true,

    multiple : true,

    height: '40px',

    maximumSelectionLength : 3,

    allowClear : true,

    language: "zh-CN",

    data : itemList // itemList[{}{}{}{}]格式的陣列

    });  

10 String List<String> 的互相轉換                  **

 

String 轉換成List<String>

       private List<String> stringToList(String strs){

                String str[] = strs.split(",");

                return Arrays.asList(str);

        }

List<String > 轉換成 String

        迭代List的每個子項,將他們用“,”隔開,拼接最好是用StringBuilder 或者StringBuffer

 

 

11MyBatis框架:$#的區別:                          ***

 

${param}傳遞的引數會被當成sql語句中的一部分,比如傳遞表名,欄位名

例子:(傳入值為id)

order by ${param} 

則解析成的sql為:

order by id

 

#{parm}傳入的資料都當成一個字串,會對自動傳入的資料加一個雙引號

例子:(傳入值為id)

select * from table where name = #{param}

則解析成的sql為:

select * from table where name = "id"

為了安全,能用#的地方就用#方式傳參,這樣可以有效的防止sql注入攻擊

 

12 maven專案中採用jetty外掛啟動每次修改程式碼都會自動重啟的問題解決

 

<reload>預設值為 automatic,它與大於 0 scanIntervalSeconds 節點一起作用,實現自動熱部署的工作。設為 manual 的好處是,當你改變檔案內容並儲存時,不會馬上觸發自動掃描和重部署的動作,你還可以繼續的修改,直至你在 Console 或命令列中敲回車鍵(Enter)的時候才觸發重新載入的動作。這樣可以更加的方便除錯修改。

13 mybaits錯誤解決:There is no getter for property named 'id' in class 'java.lang.String'

 

在使用mybaitis傳引數的時候,如果僅傳入一個型別為String的引數,那麼在 xml檔案中應該使用_parameter來代替引數名。

14、為報價管理的供應商新增許可權:

 

部分程式碼如下:

   Subject subject = SecurityUtils.getSubject();

   Map<String,Object> userMap = new HashMap<>();

   userMap.put("username",subject.getPrincipal());

   userMap.put("usertype",100);

   List<Map<String,Object>> userList = upmsUserService.selectJskh(userMap);

   Map<String,Object> map = userList.get(0);

   String supplierStr =(String)map.get("supplier_ids");

   List<Map<String,Object>> list = crmSupplierService.selectSupplierName(supplierStr);

 

15 MyBatis框架傳參問題: ***

常用的兩種方案:

第一種方案:

DAO層的函式方法 

    Public User selectUser(String name,String area);

對應的Mapper.xml  

    <select id="selectUser" resultMap="BaseResultMap">

         select * from user_user_t where user_name = #{0} and user_area=#{1}

    </select>

其中,#{0}代表接收的是dao層中的第一個引數,#{1}代表dao層中第二引數,更多引數一致往後加即可。

 

第二種方案:如果只有一個引數可以不使用@param註解,否則必須要加,為了養成良好的習慣,建議都加

Dao層的函式方法

    Public User selectUser(@param(“userName”)String name,@param(“userArea”)String area);

對應的Mapper.xml

   <select id=" selectUser" resultMap="BaseResultMap">

       select * from user_user_t where user_name = #{userNamejdbcType=VARCHAR} 

                          and user_area=#{userArea,jdbcType=VARCHAR}

   </select>

個人覺得這種方法比較好,能讓開發者看到dao層方法就知道該傳什麼樣的引數,比較直觀,個人推薦用第二種方案。

16下拉列表和單選按鈕預設選中判斷:   ***

 

①、下拉列表預設選中:

  <select id="staffStauts" name="staffStauts" class="form-control">

       <option value="0" <c:if test="${staff.staffStauts==0}">selected</c:if>>在職</option>

       <option value="1" <c:if test="${staff.staffStauts==1}">selected</c:if>>離職</option>

  </select>

②、單選按鈕預設選中:

     <div class="radio radio-inline radio-success">

                <input id="locked_0" type="radio" name="locked" value="0" 

                                                            <c:if test="${user.locked==0}">checked</c:if>>

                 <label for="locked_0">正常 </label>

     </div>

     <div class="radio radio-inline">

                 <input id="locked_1" type="radio" name="locked" value="1" 

                                                             <c:if test="${user.locked==1}">checked</c:if>>

                 <label for="locked_1">鎖定 </label>

     </div>

17 JSJSP的區別     *

 

1JSP全名為Java Server Pages,其根本是一個簡化的servlet設計,他實現了Html語法中的java擴張(以 <%, %>形式)。JSPServlet一樣,是在伺服器端執行的。

       jsp 要先翻譯,注意是翻譯成servlet才能執行:比如 test.jsp 要變成 test_jsp.java 然後編譯成test_jsp.class

test_jsp.java 本身就是一個servlet。所以 jsp只是servlet的一個變種,方便書寫html內容才出現的。servlet是根本,所有jsp能做的,servlet全能做。

2簡單地說——JS是在客戶端執行的,需要瀏覽器支援JavascriptJSP是在伺服器端執行的,需要伺服器上部署支援Servlet的伺服器程式。JS程式碼是能夠直接從伺服器上download得到,對外是可見的,jsp(和翻譯後的servlet)程式碼是對外不可見的。

聯絡:

JSJavaScript相比:雖然JavaScript可以在客戶端動態生成HTML,但是很難與伺服器互動,因此不能提供複雜的服務,比如訪問資料庫和影象處理等等。JSPHTML中用<%%>裡面實現。JShtml中用<Script></Script>實現

18Invoke remote method timeout. method: selectUpmsUserByUsernameRPC服務連結超時

     出現的原因:、網路不好;、就是指定的服務沒有開啟。


19、前臺如何解析List<Map<String,Object>>資料:**

後臺:

前臺jQuery解析:

20jQuery遍歷函式:

21 Java獲取系統時間的四種方法

 

 1Date day=new Date();    

      SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

      System.out.println(df.format(day));   

      通過Date類來獲取當前時間    

 

2SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");         

      System.out.println(df.format(System.currentTimeMillis()));   

       通過System類中的currentTimeMillis方法來獲取當前時間 

 

3Calendar c = Calendar.getInstance();//可以對每個時間域單獨修改   工廠模式

        int year = c.get(Calendar.YEAR);  

        int month = c.get(Calendar.MONTH);   

        int date = c.get(Calendar.DATE);    

        int hour = c.get(Calendar.HOUR_OF_DAY);   

        int minute = c.get(Calendar.MINUTE);   

        int second = c.get(Calendar.SECOND);    

        System.out.println(year + "/" + month + "/" + date + " "

           +hour + ":" +minute + ":" + second);    

        通過Calendar類來獲取當前時間   

 

4 Date date = new Date();    

       String year = String.format("%tY", date);   

       String month = String.format("%tB", date);   

        String day = String.format("%te", date);    

       System.out.println("今天是:"+year+"-"+month+"-"+day);   

       通過Date類來獲取當前時間   

總結:設定時間格式可通過呼叫SimpleDateFormat類進行設定和通過String中的format方法來設定。可通過Date類和System中的currentTimeMillis來獲取!

22ResultMapResultType在使用中的區別

 

1resultType:當使用resultTypeSQL語句返回結果型別處理時,對於SQL語句查詢出的欄位在相應的pojo中必須有和它相同的欄位對應,而resultType中的內容就是pojo在本專案中的位置。

2 resultMap:當使用resultMapSQL語句返回結果型別處理時,通常需要在mapper.xml中定義resultMap進行pojo和相應表字段的對應。

23 mybatis異常:Could not find result map java.util.Map 問題分析及解決

 

錯誤寫法

  <select id="queryXXXCount" resultMap="java.util.Map" >

正確寫法:

  <select id="queryXXXCount" resultType="java.util.Map">

 

注意:

 mybatis報出的異常日誌棧資訊定位不是那麼準(找錯誤發生的地方不能直接根據異常棧資訊直接定位到問題方法)

 此次根據這次異常棧資訊找到的就是正常的方法,但是觸發了有問題的那個mybatis

 

 在問題除錯、查詢過程中:根據svn提交資訊將新提交的程式碼進行核對、註釋掉,並進行實際除錯才能準確定位此類問題。

 

24JS獲取當前時間戳的方法

 

JavaScript 獲取當前時間戳:

第一種方法:

var timestamp = Date.parse(new Date());

結果:1280977330000

第二種方法:

var timestamp = (new Date()).valueOf();

結果:1280977330748

第三種方法:

var timestamp=new Date().getTime();

結果:1280977330748

第一種:獲取的時間戳是把毫秒改成000顯示,

第二種和第三種是獲取了當前毫秒的時間戳。

 

25js將從後臺得到的時間戳(毫秒數)轉換為想要的日期格式

 

得到後臺從資料庫中拿到的資料我們希望格式是  

 20161025 173730秒 或者 2016/10/25 17:37:30

然而我們前臺得到的卻是一段數字(時間戳,毫秒數)

 1477386005     

我們要將時間戳轉化為我們想要的格式。

核心方法

1477386005是我從後臺得到時間戳 (注意:有的時候得到的時間戳是已經乘以1000的)

var unixTimestamp = new Date( 1477386005*1000 ) ;

commonTime = unixTimestamp.toLocaleString();

alert(commonTime);

這時候的結果是

但是我希望轉換為我自己想要的格式,就在本頁面重寫一下  toLocaleString()方法即可。

Date.prototype.toLocaleString = function() {

return this.getFullYear() + "" + (this.getMonth() + 1) + "" + this.getDate() + " " + this.getHours() + "" + this.getMinutes() + "" + this.getSeconds() + "";

};

結果為:

或者其他想要的格式:

 

Date.prototype.toLocaleString = function() {

return this.getFullYear() + "/" + (this.getMonth() + 1) + "/" + this.getDate() + "/ " + this.getHours() + ":" + this.getMinutes() + ":" + this.getSeconds();

};

    結果為:

26、錯誤問題:

解決方法:重新安裝服務

27 Unknown return value type: java.lang.Integer

原因之一: 沒有寫@responseBody註解

28、如何在伺服器端的程式中判斷時間是否是新的一天。

    思想:在資料庫裡專門建一個表存放時間,在使用過程中獲取當前系統時間後去資料庫裡查詢是否有這個時間,有則不是新一天。沒有查到則是新一天,並把這一天存到資料庫中。

29、專案中邏輯編寫:

要記住:在Controller層是能寫一些簡單的邏輯程式碼,主要的邏輯程式碼需要一定要在Service裡面寫。這樣才符合SSM框架SVM模式的設計理念,同時在Service層裡面有事務可以保證訪問資料庫的安全性。

相關推薦

20185工作遇到的問題

2018年5月工作中遇到的問題 1、客戶報價管理:   客戶名稱顯示邏輯,通過登陸使用

2018525日星期五工作日誌——Excel匯入匯出C#

上班第一天,經理要求做出Excel匯入匯出,以前做這方面的不多,所以記錄下來,新手一枚,望高手指教。 Excel匯出 方法眾多,選擇了直接IO操作。 程式碼如下:         /// <summary>    &nb

spring boot 基礎 201853日

plugins pri info out configure www read ping mapping 主包下運行類@SpringBootApplication 此註解是核心註解,源碼如下 @Target({ElementType.TYPE}) @Retention

201853日筆記

表達 pst .text mkdir html str fin 字符串 文件 常用的正則表達式匹配規則 \d  表示一個數字字符,等價於 [0-9] \D  表示一個非數字字符,等價於 [^\d] \s  表示一個空白字符,等價於 [<空格>\t\r\n\f

201856日GDCPC (廣東賽區)總結

公式 都沒有 省賽 好好學習 過程 方法 AC 2018年 開始 試機是隊友浩哥一個人去的,因為覺得華工去了不少次了,環境也比較熟悉了。直到看到了現場環境,感覺有些擁擠,不如從前那樣寬敞,增加了一些緊張的不適感。 比賽開始時,我們三人分頭讀題,雖說題目比較簡短,但第一眼看

201857日

color HA char sch oid 升序 read lse seq 028統計出數組中的各個字符的個數 1 import java.io.*; 2 public class StatisticsChar 3 { 4 public sta

201858日筆記

grep 字節 width RoCE system ID 字符串類型 工作 abs CentOS 7上安裝mysql # CentOS 7 安裝mysql 1. 檢測系統是否自帶安裝 mysql rpm -qa | grep mysql 2. 若已安裝,可以進行卸

2018510日筆記

conn imp key port 學生 但是 not oot mysql 在Python中如何表示數據庫表 方法一:由於數據庫表是一個二維表,所以可用list表示多行,list的每個元素是tuple,表示一行記錄 如:有一張學生信息表,包含學生的學號,姓名,年齡,可表

2018513日筆記

class leg 刪除 pass ota pan where ide maker SQL語句復習 創建一個庫 create database DB_name; 授權一個用戶 grant all privileges on *.* to ‘user1‘@‘%‘ ide

20185第一二周下載中心資源下載TOP榜

系統運維 編程開發 web開發 數據庫 考試認證 2018年5月01日至2018年5月14日下載中心資源下載TOP榜 A、系統運維 NO.1下載數:282資源標題:Linux操作系統(上百個新特性)_紅帽RHEL7新特性與功能匯總V1.0資源地址:http://down.51cto.com

201859日JAVA-servlet02

127.0.0.1 超過 即使 ddc spa 比較 寫入 方便 void session對象用於在會話範圍內,記錄每個客戶端的訪問狀態,以便於跟蹤每個客戶端的操作狀態,在會話存儲的信息,在瀏覽器發出後續請求時可以獲取這些會話的有效數據。 在jsp頁面中可以直接使用s

2018517日筆記

最大 返回值 onf delete 常用操作 all 描述 app 筆記 python操作redis set操作 sadd(name, values)  增加 scard(name)    獲取 spop(name)    刪除並返回set中的一個隨機元素 srem(n

2018519日筆記

共享內存 main 多核cpu 需要 target 創建 uil out lease 進程的概念 進程是程序在計算機上的一次執行活動。 進程可分為系統進程和用戶進程。 所有正在運行的進程輪流使用CPU,任何一個時間點有且只有一個進程占用CPU。 進程與線程的區

【程序員劄記#學習&&塑形# 】2018521號

width title gray 繼續 ali 粉絲 tro margin post 2018年警醒   對於2018年,我的願望:繼續深挖機器學習領域,繼續學習高等數學、文學,堅持跑步、健身、控制飲食。 現在要做的事情:“戒酒&

2018520日--西安icpc邀請賽打鐵總結

平時 很難 線段樹 過度 提高 符號 幾何題 掌握 ORC 2018年5月20日--西安icpc邀請賽打鐵總結                                           事後諸葛亮   大致回顧一下比賽,29號的熱身賽和30號的正式賽。   熱身

2018522日筆記

req 阻塞 OS rom ron fun star 因此 -- Python共享內存 共享內存有兩個結構,一個是 Value, 一個是 Array,這兩個結構內部都實現了鎖機制,因此是多進程安全的。 Value 和 Array 都需要設置其中存放值的類型,d 是 do

【程序員劄記#學習&&塑形# 】2018524號

round href hang border ttext HR -- chang 規劃 2018年警醒   對於2018年,我的願望:繼續深挖機器學習領域,繼續學習高等數學、文學,堅持跑步、健身、控制飲食。 感悟   今天想到了

20185第三周下載中心資源下載TOP榜

系統運維 開發技術 前端開發 數據庫 人工智能 2018年5月14日至2018年5月20日下載中心資源下載TOP榜A、系統運維NO.1下載數:252資源標題:微軟產品安裝介質下載地址清單V1.0資源地址:http://down.51cto.com/data/2447111NO.2下載數:1

2018526日筆記

tin eas 配置 sel utc zone result config AS 習題1 先在utils.py文件中定義一個工具類 1 # utils.py 2 3 import os 4 import threading 5 import codecs

2018527號

下一個 info 今天 IV span https 負環 class 第一篇   一開始並不懂得真正判斷負環,自從寫了這道題才有點感覺:這道題就是洛谷的p1768天路。   我主要想說如何判斷負環:   首先一個最普通的做法: 1 void spfa(int x) 2