成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

MyBatis 級(jí)聯(lián)

genedna / 2574人閱讀

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

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

建表

模型圖如圖所示

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

一對一關(guān)系

因?yàn)樯蠄D中,學(xué)生和學(xué)生關(guān)系為一對一關(guān)系.
由于是數(shù)據(jù)庫的一對一關(guān)系,那么對應(yīng)的bean中,也應(yīng)該是一對一關(guān)系
舉栗子的表為學(xué)生表和學(xué)生證表
其中學(xué)生證表的中的學(xué)生編號(hào)的外鍵為學(xué)生表的主鍵
那么在學(xué)生表的POJO對象中,應(yīng)該有學(xué)生證表的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的映射

    
        
        
        
        
        
        
        
    
    
    

可以看到當(dāng)查詢到studentCard的時(shí)候,將會(huì)調(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(); //獲取開始時(shí)間 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é)束時(shí)間 %> <% Iterator iterator = students.iterator(); while(iterator.hasNext()){ %> <%=((Student)iterator.next()).getStudentCard().getEndDate()%> <% } %>
一對多

這個(gè)和上方同理,跳過

鑒別器

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

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

性能問題

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

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

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

    
        
    

一般情況下是層級(jí)加載,取消層級(jí)加載,使用aggressiveLazyLoading值設(shè)置為false即可

另一種

寫原生sql 這個(gè)很簡單,跳過

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

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

相關(guān)文章

  • Mybatis N+1問題解析

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

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

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

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

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

    趙春朋 評論0 收藏0
  • Hibernate【inverse和cascade屬性】知識(shí)要點(diǎn)

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

    abson 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<