<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ![](https://box.kancloud.cn/179358155c83feaf4fc7a53d00ac7cec_812x464.png) # 寫注釋 ``` package teacher; import java.util.List; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import db.MysqlJavaee; import entity.Teacher; public class Index { // 教師列表 類型為List,每項均為Teacher。 private List<Teacher> teachers; // V層在展示數據teachers的時候,將自動調用該方法 public List<Teacher> getTeachers() { return teachers; } // 該execute方法將被自動調用, 方法的返回類型必須為String public String execute() { // 創建會話(這里的session也是會話的意思,我們以前接觸的http中的session,處理的是用戶與服務器的對話) Session session = MysqlJavaee.getCurrentSession(); // 開啟事務(使用緩沖池進行數據庫的連接) Transaction transaction = session.beginTransaction(); // 在這里,必須使用try catch finally語句。來確定會話正常關閉. // 否則,當操作數據庫產生錯誤時,你可能需要重啟mysql服務 try { // 查詢Teacher表,注意:是Teacher ,而不是 teacher // list()預查詢,只有在事務提交時,才進行查詢操作 // 提交事務 transaction.commit(); // 捕獲異常 } catch (HibernateException e) { // 如果事務執行異常,則回滾事務 if (null != transaction) { transaction.rollback(); } // 打印異常 e.printStackTrace(); } finally { // 如果session處于開啟狀態,則關閉session if (session.isOpen()) { // 關閉會話 session.close(); } } return "success"; } } ``` # 添加代碼 ``` package teacher; import java.util.List; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import db.MysqlJavaee; import entity.Teacher; public class Index { // 教師列表 類型為List,每項均為Teacher。 private List<Teacher> teachers; // V層在展示數據teachers的時候,將自動調用該方法 public List<Teacher> getTeachers() { return teachers; } // 該execute方法將被自動調用, 方法的返回類型必須為String public String execute() { // 創建會話(這里的session也是會話的意思,我們以前接觸的http中的session,處理的是用戶與服務器的對話) Session session = MysqlJavaee.getCurrentSession(); // 開啟事務(使用緩沖池進行數據庫的連接) Transaction transaction = session.beginTransaction(); // 在這里,必須使用try catch finally語句。來確定會話正常關閉. // 否則,當操作數據庫產生錯誤時,你可能需要重啟mysql服務 try { // 查詢Teacher表,注意:是Teacher ,而不是 teacher Query query = session.createQuery("from Teacher"); // 預查詢,只有在事務提交時,才進行查詢操作 teachers = query.list(); // 提交事務 transaction.commit(); // 捕獲異常 } catch (HibernateException e) { // 如果事務執行異常,則回滾事務 if (null != transaction) { transaction.rollback(); } // 打印異常 e.printStackTrace(); } finally { // 如果session處于開啟狀態,則關閉session if (session.isOpen()) { // 關閉會話 session.close(); } } return "success"; } } ``` # 測試 * 刷新列表頁, 如果沒有記錄,則執行下面兩步 * 查看Teacher表,如果沒有數據,使用navicat向數據表中,添加1條測試數據。 * 再刷新列表頁 # 重構代碼 我們在前面講過,C層應該是個指揮者,并不負責具體的數據與邏輯運算。 現在,讓我們將代碼轉移至 M層. ``` package teacher; import java.util.List; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import db.MysqlJavaee; import entity.Teacher; public class Index { // 教師列表 類型為List,每項均為Teacher。 private List<Teacher> teachers; // V層在展示數據teachers的時候,將自動調用該方法 public List<Teacher> getTeachers() { return teachers; } // 該execute方法將被自動調用, 方法的返回類型必須為String public String execute() { // 獲取教師列表 teachers = Teacher.all(); return "success"; } } ``` **沒錯,正如你看到的一樣,C層只需要做這樣工作:從實體中,獲取數據列表** 不過Teacher實體可就沒有這么幸運了。不錯,這就是我們想看到的。 ``` package entity; import java.util.ArrayList; import java.util.List; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Index; import db.MysqlJavaee; // 聲明主體 @Entity public class Teacher { // 聲明主鍵 // 聲明一個名為idGenerator的native類型構造器 // 使用這個構造器設置ID為自增屬性 @Id @GenericGenerator(name = "idGenerator", strategy = "native") @GeneratedValue(generator = "idGenerator") private int id; // 主鍵 private String name; // 姓名 // 聲明長度(用戶名不超過20位長度,定長能夠提升效率) @Column(columnDefinition = "char(20)") // 聲明為索引(該字段將來用于查詢 ,增加索引將大幅提升查詢效率) @Index(name = "username") private String username; // 用戶名 private String email; // 郵箱 private Boolean sex = false; // 性別 0:男;1:女 // 密碼采用sha1 md5加密,長度固定。 @Column(columnDefinition = "char(40)") private String password; // 密碼 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Boolean getSex() { return sex; } public void setSex(Boolean sex) { this.sex = sex; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Teacher() { } public Teacher(int id, String name, String username, String email, Boolean sex, String password) { // super(); this.id = id; this.name = name; this.username = username; this.email = email; this.sex = sex; this.password = password; } public String toString() { return "Teacher [id=" + id + ", name=" + name + ", username=" + username + ", email=" + email + ", sex=" + sex + ", password=" + password + "]"; } static public List<Teacher> all() { // 實例化列表 teachers List<Teacher> teachers = new ArrayList<Teacher>(); // 創建會話(這里的session也是會話的意思,我們以前接觸的http中的session,處理的是用戶與服務器的對話) Session session = MysqlJavaee.getCurrentSession(); // 開啟事務(使用緩沖池進行數據庫的連接) Transaction transaction = session.beginTransaction(); // 在這里,必須使用try catch finally語句。來確定會話正常關閉. // 否則,當操作數據庫產生錯誤時,你可能需要重啟mysql服務 try { // 查詢Teacher表,注意:是Teacher ,而不是 teacher Query query = session.createQuery("from Teacher"); // 預查詢,只有在事務提交時,才進行查詢操作 teachers = query.list(); // 提交事務 transaction.commit(); // 捕獲異常 } catch (HibernateException e) { // 如果事務執行異常,則回滾事務 if (null != transaction) { transaction.rollback(); } // 打印異常 e.printStackTrace(); } finally { // 如果session處于開啟狀態,則關閉session if (session.isOpen()) { // 關閉會話 session.close(); } } return teachers; } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看