成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

MyBatis 級聯(lián)

genedna / 2622人閱讀

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

數(shù)據(jù)庫關(guān)系模型中有一對一,一對多,關(guān)系,
首先建立如下表 繼續(xù)用最經(jīng)典的學生管理系統(tǒng)

建表

模型圖如圖所示

學生表為中心
學生證表和其為一對一關(guān)系
學生表和課程表為一對多

一對一關(guān)系

因為上圖中,學生和學生關(guān)系為一對一關(guān)系.
由于是數(shù)據(jù)庫的一對一關(guān)系,那么對應的bean中,也應該是一對一關(guān)系
舉栗子的表為學生表和學生證表
其中學生證表的中的學生編號的外鍵為學生表的主鍵
那么在學生表的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的時候,將會調(diào)用com.ming.MyBatis.RoleMapper.findStudentSelfCardByStudentId sql語句的執(zhí)行

對于數(shù)據(jù)展示層來說

<%@ 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(); //獲取結(jié)束時間 %> <% Iterator iterator = students.iterator(); while(iterator.hasNext()){ %> <%=((Student)iterator.next()).getStudentCard().getEndDate()%> <% } %>
一對多

這個和上方同理,跳過

鑒別器

根據(jù)學生信息去關(guān)聯(lián)男性或者女性的健康指標

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

性能問題

在使用級聯(lián)的時候,會造成多條sql語句的執(zhí)行,此時,使用延遲加載

一開始不使用sql語句,只有當使用了sql才去發(fā)送數(shù)據(jù)

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

    
        
    

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

另一種

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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/74158.html

相關(guān)文章

  • Mybatis N+1問題解析

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

    qqlcbb 評論0 收藏0
  • 遞歸查詢級聯(lián)信息

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

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

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

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

    摘要:屬性屬性表示控制權(quán)是否轉(zhuǎn)移控制權(quán)已轉(zhuǎn)移當前一方?jīng)]有控制權(quán)控制權(quán)沒有轉(zhuǎn)移當前一方有控制權(quán)屬性,是在維護關(guān)聯(lián)關(guān)系的時候起作用的。表的外鍵并沒有數(shù)據(jù)結(jié)論如果設置控制反轉(zhuǎn)即然后通過部門方維護關(guān)聯(lián)關(guān)系。 Inverse屬性 Inverse屬性:表示控制權(quán)是否轉(zhuǎn)移.. true:控制權(quán)已轉(zhuǎn)移【當前一方?jīng)]有控制權(quán)】 false:控制權(quán)沒有轉(zhuǎn)移【當前一方有控制權(quán)】 Inverse屬性,是在維護關(guān)聯(lián)...

    abson 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<