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

資訊專欄INFORMATION COLUMN

Mybatis高級(jí)映射-SELECT-一對(duì)一

CastlePeaK / 3357人閱讀

摘要:概述本章學(xué)習(xí)查詢的一對(duì)一關(guān)系的多種實(shí)現(xiàn)方式。本系列文章是基于版本。總結(jié)本文介紹了一對(duì)一映射的三種方法,希望對(duì)大家有幫助。最后創(chuàng)建了群方便大家交流,可掃描加入,同時(shí)也可加我,共同學(xué)習(xí)共同進(jìn)步,謝謝

概述

本章學(xué)習(xí)Mybatis查詢的一對(duì)一關(guān)系的多種實(shí)現(xiàn)方式。

本系列文章是基于Mybatis 3.4.6 版本。

創(chuàng)建表

創(chuàng)建測(cè)試使用的數(shù)據(jù)庫(kù)表,使用用戶表和用戶身份證表進(jìn)行測(cè)試,用戶表與身份證是一對(duì)一關(guān)系,創(chuàng)建表結(jié)構(gòu)如下:

用戶表:

CREATE TABLE `sys_user` (
  `id` bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT "主鍵",
  `user_account` varchar(50) COLLATE utf8_bin NOT NULL COMMENT "用戶賬戶",
  `user_password` char(32) COLLATE utf8_bin NOT NULL COMMENT "MD5加密的用戶密碼",
  `user_email` varchar(20) COLLATE utf8_bin DEFAULT NULL COMMENT "用戶郵箱",
  `user_phone` varchar(20) COLLATE utf8_bin DEFAULT NULL COMMENT "手機(jī)號(hào)",
  `idcard_id` bigint(11) unsigned DEFAULT NULL COMMENT "身份證信息表ID",
  `created_date` datetime NOT NULL COMMENT "創(chuàng)建時(shí)間",
  `modified_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "修改時(shí)間",
  `yn` tinyint(1) unsigned NOT NULL DEFAULT "1" COMMENT "是否有效(0無(wú)效,1有效)",
  `modified_user` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT "修改人",
  `remark` varchar(500) COLLATE utf8_bin DEFAULT NULL COMMENT "備注",
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT="用戶表";

用戶身份證信息表:

CREATE TABLE `sys_user_idcard` (
  `id` bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT "主鍵",
  `user_name` varchar(50) COLLATE utf8_bin NOT NULL COMMENT "姓名",
  `user_sex` tinyint(1) unsigned NOT NULL COMMENT "性別1:男  2:女",
  `user_birthday` date NOT NULL COMMENT "出生日期",
  `user_address` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT "住址",
  `idcard_no` varchar(18) COLLATE utf8_bin NOT NULL COMMENT "身份證號(hào)碼",
  `issuing_authority` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT "簽發(fā)機(jī)關(guān)",
  `indate_start` date DEFAULT NULL COMMENT "有效期開(kāi)始日期",
  `indate_end` date DEFAULT NULL COMMENT "有效期結(jié)束日期",
  `created_date` datetime NOT NULL COMMENT "創(chuàng)建時(shí)間",
  `modified_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "修改時(shí)間",
  `yn` tinyint(1) unsigned NOT NULL DEFAULT "1" COMMENT "是否有效(0無(wú)效,1有效)",
  `modified_user` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT "修改人",
  `remark` varchar(500) COLLATE utf8_bin DEFAULT NULL COMMENT "備注",
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT="身份證信息表";
自動(dòng)映射

通過(guò)數(shù)據(jù)庫(kù)表關(guān)系,我們?cè)趕ys_user表中添加了外鍵列,關(guān)聯(lián)sys_user_idcard表主鍵,所有在創(chuàng)建實(shí)體時(shí),在SysUser類中增加SysUserIdcard屬性,實(shí)體類代碼如下:

SysUser:

package com.github.dalianghe.model;

import com.github.dalianghe.mapper.SysUserIdcardModel;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Setter
@Getter
@ToString
public class SysUserModel{

    /** 用戶賬戶 */
    private String userAccount;
    /** 用戶密碼 */
    private String userPassword;
    /** 用戶身份證信息 */
    private SysUserIdcardModel idcard;

}

SysUserIdcard:

package com.github.dalianghe.model;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.time.LocalDate;

@Setter
@Getter
@ToString
public class SysUserIdcardModel{
    /** 用戶姓名 */
    private String userName;
    /** 出生日期 */
    private LocalDate userBirthday;
    /** ... 省略其他屬性 ...*/

}

注意:本例子我們使用了JSR310規(guī)范(如:LocalDate),故需在pom文件中添加依賴,如下:


    org.mybatis
    mybatis-typehandlers-jsr310
    1.0.2

mapper映射文件配置如下:







    


Mapper接口代碼如下:

package com.github.dalianghe.mapper;

import com.github.dalianghe.model.SysUserModel;

public interface SysUserMapper {

    SysUserModel selectSysUserById(Long id) throws Exception;

}

測(cè)試方法代碼如下:

@Test
public void testSelectSysUserById(){
    SqlSession sqlSession = getSqlSession();
    try{
        SysUserMapper sysUserMapper = sqlSession.getMapper(SysUserMapper.class);
        SysUserModel user =  sysUserMapper.selectSysUserById(20L);
        System.out.println("按用戶ID查詢用戶信息:" + user.toString());
        //sqlSession.commit();
    }catch (Exception e){
        e.printStackTrace();
        //sqlSession.rollback();
    }finally {
        sqlSession.close();
    }
}

結(jié)果如下:

通過(guò)結(jié)果日志可知,Mybatis自動(dòng)將關(guān)聯(lián)的身份證信息通過(guò)屬性映射到用戶對(duì)象中。

resultMap映射

對(duì)于查詢可通過(guò)resultMap進(jìn)行屬性和列進(jìn)行映射,此一對(duì)一mapper配置文件如下:






    
    
        
        
        
        
        
        
    

    
    


Mapper接口與測(cè)試類同上,測(cè)試結(jié)果如下:

association映射

與resultMap映射類型,使用association標(biāo)簽進(jìn)行映射,代碼如下:


    
    
    

    
        
        
    

association標(biāo)簽屬性有:

property:對(duì)應(yīng)實(shí)體類中的屬性名,必填項(xiàng)

javaType:屬性對(duì)應(yīng)的java類型

resultMap:可以使用resultMap,替換javaType

columnPrefix:查詢列名的前綴,配置后,在子標(biāo)簽配置result的column時(shí)可以省略前綴,但sql字段前綴或別名必須以此開(kāi)頭

測(cè)試用例與結(jié)果與上面一致。

總結(jié)

本文介紹了Mybatis一對(duì)一映射的三種方法,希望對(duì)大家有幫助。

最后創(chuàng)建了qq群方便大家交流,可掃描加入,同時(shí)也可加我qq:276420284,共同學(xué)習(xí)、共同進(jìn)步,謝謝!

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

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

相關(guān)文章

  • 通過(guò)項(xiàng)目逐步深入了解Mybatis<三>

    摘要:場(chǎng)合常見(jiàn)一些明細(xì)記錄的展示,比如用戶購(gòu)買商品明細(xì),將關(guān)聯(lián)查詢信息全部展示在頁(yè)面時(shí),此時(shí)可直接使用將每一條記錄映射到中,在前端頁(yè)面遍歷中是即可。作用將關(guān)聯(lián)查詢信息映射到一個(gè)對(duì)象中。 相關(guān)閱讀: 1、通過(guò)項(xiàng)目逐步深入了解Mybatis 2、 通過(guò)項(xiàng)目逐步深入了解Mybatis 本項(xiàng)目所有代碼及文檔都托管在 Github地址:https://github.com/zhisheng17/myb...

    khlbat 評(píng)論0 收藏0
  • MyBatis理解與掌握(關(guān)聯(lián)查詢)

    摘要:訂單信息與訂單明細(xì)為一對(duì)多關(guān)系。例如先從單表查詢,需要時(shí)再?gòu)年P(guān)聯(lián)表去關(guān)聯(lián)查詢,大大提高數(shù)據(jù)庫(kù)性能,因?yàn)椴樵儐伪硪汝P(guān)聯(lián)查詢多張表速度要快。作用將關(guān)聯(lián)查詢信息映射到一個(gè)對(duì)象中。 MyBatis理解與掌握(關(guān)聯(lián)查詢) @(MyBatis)[Java, 框架, MyBatis] 一對(duì)一查詢 案例:查詢所有訂單信息,關(guān)聯(lián)查詢下單用戶信息 showImg(https://segmentfault...

    MiracleWong 評(píng)論0 收藏0
  • Mybatis【配置文件】就是這么簡(jiǎn)單

    摘要:場(chǎng)合常見(jiàn)一些明細(xì)記錄的展示,將關(guān)聯(lián)查詢信息全部展示在頁(yè)面時(shí),此時(shí)可直接使用將每一條記錄映射到中,在前端頁(yè)面遍歷中是即可。如果查詢單表就可以滿足需求,一開(kāi)始先查詢單表,當(dāng)需要關(guān)聯(lián)信息時(shí),再關(guān)聯(lián)查詢,當(dāng)需要關(guān)聯(lián)信息再查詢這個(gè)叫延遲加載。 配置文件和映射文件還有挺多的屬性我還沒(méi)有講的,現(xiàn)在就把它們一一補(bǔ)全 映射文件 在mapper.xml文件中配置很多的sql語(yǔ)句,執(zhí)行每個(gè)sql語(yǔ)句時(shí),封裝...

    freewolf 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<