1. 程式人生 > >最近一月工作室開發流程總結

最近一月工作室開發流程總結

一、資料庫建立: 1.設計好每一張實體表,關聯表,確定欄位是否非空,是否需要建立唯一索引 2.lastModifiedTime欄位設定注意:需要設定為自動更新為當前時間 ALTER TABLE `t_training_course` MODIFY COLUMN `last_modified_time` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最後修改時間' 二、實體建立(Class):  1.一個表(包括關聯表)對應一個實體,其目的是方便對資料庫進行增刪改查;   (1)類中變數定義時型別必須是類
;service用簡單型別;容器中一般用類型別List<Integer>防止其不能接收null物件;   (2)類註解:@Entity @Table(name = "資料庫表名");   (3)變數註解:@Id 變數名稱需要與資料庫中名稱對應 @Column(name = "last_modified_time");   (4)物件序列化問題:private static final long serialVersionUID = -6411614473004852343L;(序列號自動生成);   (5)Alt+Insert  新增get set方法; 三、DTO建立( Class):
  1.Dto用於方便介面顯示幾張表(關聯表中關聯的表)中的資料時直接將資料從資料庫中聯表查詢出來存到Dto型別的容器中即可   (1)此類不需要類註解;   (2)變數型別為類型別;   (3)Id變數:不需要註解,最好定義一個其他的名稱(如sId)查詢出關聯表的Id與其對應;如果不取別名sId可能會出現查詢出的Dto的Id 值為空的情況;    (4)其餘變數註解:與類實體相同, @Column(name = "對應資料庫中的對應欄位"); 四、Mapper.java 建立(interface): 1.主要是定義一些與mapper.xml對應的查詢方法,丟擲異常Exception 五、Mapper.xml 建立:
1.檔案頭部分定義內容(編碼+mybatis的引用吧); 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 
2.在其中新增SQL語句 
<mapper namespace="com.quality.mapper.PrinterMapper"> ----此處對應相關的Mapper檔案位置 
sql查詢語句········· 
</mapper> 六、SQL語句使用: 注意(1)只有有對應實體類才能resultMap="pw.Printer" (2)否則resultType="int" (3)刪除更新沒有返回值 1.根據傳入的關鍵字排序(排序時接受變數時:#{} `${}`使用區別(程式中使用前者排序不生效)): <select id="listByPage" resultMap="pw.Printer">         SELECT * FROM `t_quality_printer`         ORDER BY `${orderName}`         <if test="type==0">             DESC         </if>         limit #{offset}, #{size} </select> 2.子表查詢: 根據關聯中的欄位值查詢出 一個id值 再根據其id值查詢出另外一個表中的資料 <select id="queryPrinterByPartyId" resultMap="pw.Printer">         SELECT printer.* FROM t_quality_printer printer, t_quality_printer_group g         WHERE printer.id = g.`printer_id` AND g.`party_id` = #{partyId} </select> 3.刪除:根據ID刪除一個表中的資料以及其關聯表中與其相關的資料 <delete id="delUserAndPrinterByPrinterId">         DELETE t_quality_printer,t_quality_printer_group         FROM t_quality_printer         LEFT JOIN t_quality_printer_group ON t_quality_printer.id = t_quality_printer_group.printer_id         WHERE t_quality_printer.id = #{id} </delete> 4.更新資料庫表資訊 <update id="updatePrinter">         UPDATE `t_quality_printer` SET         `code` = #{code},         `ip` = #{ip},         `desc` = #{desc}         WHERE `id` = #{id} </update> 5.根據條件查詢資料量 <select id="countIpIsExist" resultType="int">         SELECT COUNT(1) FROM t_quality_printer         WHERE `ip` = #{ips} </select> 6.聯表查詢 <select id="listPartyByPrinterId" resultType="PrinterGroupDTO">         SELECT t_quality_printer_group.id AS sid,         t_quality_printer_group.printer_id AS printerId,         t_quality_printer_group.party_id AS partyId,         t_party_group.party_name AS partyName,         t_party_group.english_name AS englishName,         t_party_group.`desc` AS descOfParty         FROM t_quality_printer_group         LEFT JOIN t_party_group ON t_quality_printer_group.party_id = t_party_group.party_id         WHERE t_quality_printer_group.printer_id = #{printerId} </select> 七、Service實現 1、service介面定義(interface):定義一些邏輯介面   throws SSexception(工作室定義) 2、service介面實現(class): (1)在類之前需要  @Service("printerService")----首字母小寫(即使類名大寫); (2)選中類名Alt+Enter,選擇“Implement merhods”即可新增所有的方法實現體; (3)使用Mapper或者其他Service時需要注入:         不注入則會導致使用的物件找不到(出現空指標問題,遇到過問題:沒有@Qualifier("commonDao")出現空指標錯誤));
@Autowired
@Qualifier("commonDao")  private CommonDao commonDao;  @Autowired private PrinterMapper printerMapper; @Autowired PrinterGroupService printerGroupService;
(4)對接收的引數進行判斷處理(封裝工具類):Assert (5)異常程式碼規範問題:不要把語句都放在Try語句中( Controller中不需要拋異常):          a.能預料其會出現異常的程式碼需要做處理(如:沒有目錄建立目錄);          b.能丟擲具體的異常的程式碼放在try程式碼外,用throw跑出異常;          c.普通的定義變數等放在try外面;          d.被呼叫方法已經有trycatch保護,且異常等級比呼叫者更低(更具體)或者同等級,則該被呼叫方法不應該放在try裡面; 八、Controller與套介面 (1)類註解與許可權、請求地址等          @Module(ModuleEnums.Party)---------------許可權   ModuleEnums為許可權配置(抑或是URL的列舉??)          @RequiresPermissions("Party:Printer")--------許可權          @Controller-----------controller必須註解          @RequestMapping("admin/party/printer")--------請求地址 (2)