# 產學-學習筆記02 MySql Hibernate Struts2 ###### tags: `學習筆記` `JAVA` `查詢類` `MySql` `Hibernate` `Struts2` --- # 總攬 * ### Mysql 1. 安裝環境 * ### Hibernate 1. 環境與基本介紹 2. 查詢query 3. 簡易會員管理系統 --- # Hibernat * ### ORM(Object/Relation Mapping)套件 1. Jdbc流程寫成一個JAR套件 2. Hibernate , JPA ,Mybatis * ### 撰寫的class類型 1. Java.lang.Object 2. Wrapper class->Integer , Double …. 3. 撰寫 action檔 * ### 環境建置 1. 下載 Hibernate套件(下面介紹) i. http://hibernate.org/orm/ ii. 解壓縮->lib 2. Eclipse安裝 (參考此網站) i. https://gotoapp.wordpress.com/2015/02/17/java-eclipse-hibernate-tools/ * ### 使用 1. 在src->New ->other- .Hibernate i. Hbm.xml ii. Cfg.xml 2. Hbm.xml 對應資料表的class i. <generator class="native" />->對應MySQL id自動跳號 3. Cfg.xml 資料庫 i. Driver ii. url iii.帳號 iv. 密碼 v. Mapping->resource->連結hbm.xml * ### CRUD建立 1. CREATE->新增 2. READ->查詢讀取 3. Update->更新 4. Delete-> 刪除 * ### HiberNate管理資料庫步驟 1. Configuration 讀取並解析Hibernate.cfg.xml 2. SessionFactory 讀取並解析映射的資訊,並複製到SessionFactory快取記憶體 3. Session i. 開啟Session執行管理資料庫 ii. CRUD方法 4. Transaction 執行CRUD步驟 5. 流程圖 ![](https://i.imgur.com/SL7PLT2.png) * ### Hibernate之 查詢 1. HQL(hibernate query language) 2. Query q=session.createQuery(hql語法) i. `List<porder> l=q.list();` ii. `Porder p=(porder)q.uniqueResult();` 3. HQL語法 i. `From porder` ii. `From porder where name=’abc’` iii.`From porder where (id between 4 and 9)` iv. `From porder where (id between 4 and 9) and name in(‘allen’);` v. `from porder as p where p.id>3 and p.sum is not null` 4. SQL語法 ` SQLQuery sql=session.createSQL(sql語法); ` i. `Sql.addEntity(“p”,porder.class);` ii. `List l=sql.list();` iii.`Porder p=(porder)sql.uniqueResult();` * ### 簡易電子商務網站練習 會員管理系統 1. CRUD (1)Create-新增   a. 須加判斷是否帳號重複 (2)Read-查詢   a. 全部.帳號 (3)Update-修改   a. 帳號 (4)Delete-刪除   a. 帳號 2. 基本流程 (1) 登入 (2) 判斷是否有此帳號   a. Yes:進入查詢   b. No:進入新增 --- # 課程開始(環境安裝) ### 1.安裝MySQL (5.5 5.6最穩定)(需先移除乾淨) (mysql-installer-community-5.6.47.0) * 發散式套件(不先安裝,安裝MySQL時也會要求安裝,需對應MySQL版本,若不確定可先不裝,於安裝MySQL時再依步驟安裝也行) https://www.microsoft.com/zh-TW/download/details.aspx?id=42642 ![](https://i.imgur.com/1LORWMg.png) * MySQL(MySQL Community Server 5.7.29) https://dev.mysql.com/downloads/windows/installer/5.6.html 要選此 ![](https://i.imgur.com/xUJCeTA.png) ![](https://i.imgur.com/BAPC5gP.png) 1.為全裝 2.為只裝server(有推) 3.最後自訂(選此已夠用) ![](https://i.imgur.com/30LlCTX.png) ![](https://i.imgur.com/ushfkHw.png) ![](https://i.imgur.com/2TJkIFw.png) ![](https://i.imgur.com/jLBggF2.png) 2個都要execute-next,此時剛若沒裝發散式套件,這邊會要求安裝 ![](https://i.imgur.com/fKF3pKN.png) Execute-安裝完成 ### 2.Hibernate 安裝 https://tools.jboss.org/downloads/jbosstools/2019-12/4.14.0.Final.html * 1.對照Eclipse版本,將下方`http...`複製貼上 ![](https://i.imgur.com/47cFU5y.png) ![](https://i.imgur.com/mP3aN6K.png) ![](https://i.imgur.com/uc7XvQz.png) 篩選-全勾 ![](https://i.imgur.com/GZP8n5p.png) * 2.Maven也要(等等建專案時再做即可,此為先記錄要做) https://mvnrepository.com/artifact/org.hibernate/hibernate-core/5.4.12.Final ![](https://i.imgur.com/L7zJpCO.png) ![](https://i.imgur.com/ZZTIjV5.png) --- # 課程開始(專案建置) ### 1.MySql先建 ![](https://i.imgur.com/w0iueNR.png) * schemas表單 * id記得勾AI讓自動跳號 * 全部INT即可 ### 2.專案 * Maven專案 ![](https://i.imgur.com/JK5KRoS.png) * 匯入jar ![](https://i.imgur.com/baZ3ku9.png) ![](https://i.imgur.com/wpD9DTu.png) * pom.xml貼上Maven管理的hibernate(上方) ![](https://i.imgur.com/4NnTJ95.png) * 建3個package ![](https://i.imgur.com/cjyAx90.png) * Model裡建Class,Class裡建要對應資料庫的資料,且要getset,並且注意要使用封裝過的資料型態(ex.Integer)(注意,這裡圖片內打錯,資料庫是sum,這邊也要sum) ![](https://i.imgur.com/EmH6gjo.png) * ### 建連結用Hibernate 1. 要放在src下 ![](https://i.imgur.com/ThY3V8n.png) ![](https://i.imgur.com/R3xUdLV.png) 名字不能改 ![](https://i.imgur.com/sLWno6Y.png) 2. 對照 ![](https://i.imgur.com/aob2LU3.png) ![](https://i.imgur.com/zX5l6Tq.png) ![](https://i.imgur.com/oG8Llsk.png) 3. class上右鍵 ![](https://i.imgur.com/qG8NUMM.png) ![](https://i.imgur.com/QRGNVMm.png) 建好後改MySql因為id勾選AI(自動跳號),這邊要改native ![](https://i.imgur.com/6zprdvJ.png) 4. 2個Hibernate連結 ![](https://i.imgur.com/FvyEfBs.png) ![](https://i.imgur.com/IGv1UhJ.png) ![](https://i.imgur.com/uEGKZvf.png) 自動幫你加好(也可手動打 ![](https://i.imgur.com/vVc6Dg1.png) * Dao建class ![](https://i.imgur.com/uN9a5jk.png) * 撰寫確認可連線 注意import (測試會錯)-裝-成功 ![](https://i.imgur.com/OEB4JvP.png) ![](https://i.imgur.com/XDbyLcP.png) ![](https://i.imgur.com/bCO1fMW.png) * 再改,測試-成功 ![](https://i.imgur.com/JxK9DXW.png) * ### 寫成方法並測試(等等就可以直接使用此方法連線 ![](https://i.imgur.com/f2HmPFY.png) * 介面 ![](https://i.imgur.com/qjvdkaA.png) ![](https://i.imgur.com/IsozlFc.png) * 寫方法實作介面 ![](https://i.imgur.com/7AY96aE.png) ![](https://i.imgur.com/Pow8WUR.png) 此即為要修改並使用的地方,會多次修改 * ### 撰寫 1.連線 2.通知開啟交易模式 ![](https://i.imgur.com/B0TPppF.png) * Run-紅字-刪掉 ![](https://i.imgur.com/1CURBzP.png) * 改(多) dao ![](https://i.imgur.com/o4t6skh.png) ![](https://i.imgur.com/ht48ls1.png) 修改遺下(並且給預設值,Integer預設是null) ![](https://i.imgur.com/Qca3QbW.png) ![](https://i.imgur.com/K22vQPm.png) ![](https://i.imgur.com/pJbQvRH.png) 測試 ![](https://i.imgur.com/JWC99Ny.png) Getset全勾 * 撰寫刪除功能 ![](https://i.imgur.com/lYBK1cE.png) 測 ![](https://i.imgur.com/u1b09xJ.png) * 修改也可透過id 寫方法 overlodaing ![](https://i.imgur.com/1mtHKJc.png) 測 ![](https://i.imgur.com/ewvpEdB.png) * 3JSP ![](https://i.imgur.com/682ppvE.png) * Struts https://mvnrepository.com/artifact/org.apache.struts/struts2-core/2.5.22 * Index ![](https://i.imgur.com/XsYGKv6.png) * Struts web.xml ![](https://i.imgur.com/PA6rDWU.png) * 測 ![](https://i.imgur.com/FxesQfm.png) ![](https://i.imgur.com/ynNQIoX.png) ![](https://i.imgur.com/L4Ou86b.png) ![](https://i.imgur.com/ou1hsbZ.png) ![](https://i.imgur.com/mcbkBLx.png) --- ![](https://i.imgur.com/6Ea48vS.jpg) ![](https://i.imgur.com/de9PxU1.jpg) ![](https://i.imgur.com/oqOfHiJ.jpg)