国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

MyBatis 級聯

genedna / 2570人閱讀

摘要:數據庫關系模型中有一對一一對多關系首先建立如下表繼續用最經典的學生管理系統建表模型圖如圖所示學生表為中心學生證表和其為一對一關系學生表和課程表為一對多一對一關系因為上圖中學生和學生關系為一對一關系由于是數據庫的一對一關系那么對應的中也應該是

數據庫關系模型中有一對一,一對多,關系,
首先建立如下表 繼續用最經典的學生管理系統

建表

模型圖如圖所示

學生表為中心
學生證表和其為一對一關系
學生表和課程表為一對多

一對一關系

因為上圖中,學生和學生關系為一對一關系.
由于是數據庫的一對一關系,那么對應的bean中,也應該是一對一關系
舉栗子的表為學生表和學生證表
其中學生證表的中的學生編號的外鍵為學生表的主鍵
那么在學生表的POJO對象中,應該有學生證表的POJO的映射.即

package com.ming.MyBatis.POJO;

/**
 * @author ming
 */
public class Student {
    private int uid;
    private String studentName;
    private String gender;
    private String studentIdNumber;
    private String remarks;
    private StudentCard studentCard;

    public void setStudentCard(StudentCard studentCard) {
        this.studentCard = studentCard;
    }

    public StudentCard getStudentCard() {
        return studentCard;
    }

    public void setUid(int uid) {
        this.uid = uid;
    }

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public void setStudentIdNumber(String studentIdNumber) {
        this.studentIdNumber = studentIdNumber;
    }

    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }

    public int getUid() {
        return uid;
    }

    public String getStudentName() {
        return studentName;
    }

    public String getGender() {
        return gender;
    }

    public String getStudentIdNumber() {
        return studentIdNumber;
    }

    public String getRemarks() {
        return remarks;
    }
}

對于card的POJO如下所示

package com.ming.MyBatis.POJO;


import java.util.Date;

/**
 * @author ming
 */
public class StudentCard {
    private int uid;
    private String studentNumber;
    private String birthplace;
    private Date dateOfIssue;
    private Date endDate;
    private String remarks;

    public void setUid(int uid) {
        this.uid = uid;
    }

    public void setStudentNumber(String studentNumber) {
        this.studentNumber = studentNumber;
    }

    public void setBirthplace(String birthplace) {
        this.birthplace = birthplace;
    }

    public void setDateOfIssue(Date dateOfIssue) {
        this.dateOfIssue = dateOfIssue;
    }

    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }

    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }

    public int getUid() {
        return uid;
    }

    public String getStudentNumber() {
        return studentNumber;
    }

    public String getBirthplace() {
        return birthplace;
    }

    public Date getDateOfIssue() {
        return dateOfIssue;
    }

    public Date getEndDate() {
        return endDate;
    }

    public String getRemarks() {
        return remarks;
    }
}

先增加StudentCard的配置


        
        
        
        
        
        
    

    

再增加Student的映射

    
        
        
        
        
        
        
        
    
    
    

可以看到當查詢到studentCard的時候,將會調用com.ming.MyBatis.RoleMapper.findStudentSelfCardByStudentId sql語句的執行

對于數據展示層來說

<%@ page import="org.apache.ibatis.session.SqlSession" %>
<%@ page import="com.ming.Util.SqlSessionFactoryUtil" %>
<%@ page import="com.ming.MyBatis.RoleMapper" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="com.ming.MyBatis.POJO.Student" %>


Hello World!

<% long startTime = System.currentTimeMillis(); //獲取開始時間 SqlSession sqlSession = null; List students = null; for(int i = 0; i < 10; i++) { try { sqlSession = SqlSessionFactoryUtil.openSqlSesion(); RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class); students = roleMapper.getStudent(1); sqlSession.commit(); } catch (Exception e) { e.printStackTrace(); sqlSession.rollback(); } finally { if (sqlSession != null) { sqlSession.close(); } } } long endTime = System.currentTimeMillis(); //獲取結束時間 %> <% Iterator iterator = students.iterator(); while(iterator.hasNext()){ %> <%=((Student)iterator.next()).getStudentCard().getEndDate()%> <% } %>
一對多

這個和上方同理,跳過

鑒別器

根據學生信息去關聯男性或者女性的健康指標

兩個類只需要繼承同一個類,使用case語句即可.
跳過

性能問題

在使用級聯的時候,會造成多條sql語句的執行,此時,使用延遲加載

一開始不使用sql語句,只有當使用了sql才去發送數據

在setting這里設置,可以降低sql語句的執行問題

    
        
    

一般情況下是層級加載,取消層級加載,使用aggressiveLazyLoading值設置為false即可

另一種

寫原生sql 這個很簡單,跳過

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74158.html

相關文章

  • Mybatis N+1問題解析

    摘要:問題解析因為熱愛,所以拼搏。如何解決問題本身給出解決方案,就是延遲加載。延遲加載延遲加載會解決上述的問題,也就是在個級聯表的情況下,只加載需求的數據庫表數據。在特定的關聯中,使用屬性覆蓋該內容的功能。 Mybatis N+1問題解析 因為熱愛,所以拼搏。 --RuiDer 前導必備 Mybatis 數據庫 級聯 N+1問題?? N+1問題來源于數據庫中常見的...

    qqlcbb 評論0 收藏0
  • 遞歸查詢級聯信息

    摘要:需求背景在很多場合,我們需要對表中的數據對遞歸查詢。結果查詢結果將會以對象返回,若有多條父依賴,將顯示在的嵌套中。雖然在查詢時,一次性獲得了級聯結構,后續解析仍然復雜。故長度最短為如果入棧次數太多,表明可能出現環形依賴。 1. 需求背景 在很多場合,我們需要對表中的數據對遞歸查詢。如以下情況: 1. 菜單分類中,我們往往需要由一級菜單獲得對應的子菜單。 id name pid ...

    pekonchan 評論0 收藏0
  • IntelliJ IDEA 18 周歲,吐血推進珍藏已久的必裝插件

    摘要:代碼規約掃描插件以今年年初發布的阿里巴巴開發規約為標準,作為的插件形式存在,檢測代碼中存在不規范得位置然后給予提示。 IntelliJ IDEA是目前最好最強最智能的Java IDE,前幾天,他剛剛年滿18歲。 showImg(https://segmentfault.com/img/remote/1460000017974611);? 本文,給大家推薦幾款我私藏已久的,自己經常使用的...

    趙春朋 評論0 收藏0
  • Hibernate【inverse和cascade屬性】知識要點

    摘要:屬性屬性表示控制權是否轉移控制權已轉移當前一方沒有控制權控制權沒有轉移當前一方有控制權屬性,是在維護關聯關系的時候起作用的。表的外鍵并沒有數據結論如果設置控制反轉即然后通過部門方維護關聯關系。 Inverse屬性 Inverse屬性:表示控制權是否轉移.. true:控制權已轉移【當前一方沒有控制權】 false:控制權沒有轉移【當前一方有控制權】 Inverse屬性,是在維護關聯...

    abson 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<