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

資訊專欄INFORMATION COLUMN

Mybatis高級映射-SELECT-一對一

CastlePeaK / 3326人閱讀

摘要:概述本章學習查詢的一對一關系的多種實現方式。本系列文章是基于版本??偨Y本文介紹了一對一映射的三種方法,希望對大家有幫助。最后創建了群方便大家交流,可掃描加入,同時也可加我,共同學習共同進步,謝謝

概述

本章學習Mybatis查詢的一對一關系的多種實現方式。

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

創建表

創建測試使用的數據庫表,使用用戶表和用戶身份證表進行測試,用戶表與身份證是一對一關系,創建表結構如下:

用戶表:

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 "手機號",
  `idcard_id` bigint(11) unsigned DEFAULT NULL COMMENT "身份證信息表ID",
  `created_date` datetime NOT NULL COMMENT "創建時間",
  `modified_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "修改時間",
  `yn` tinyint(1) unsigned NOT NULL DEFAULT "1" COMMENT "是否有效(0無效,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 "身份證號碼",
  `issuing_authority` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT "簽發機關",
  `indate_start` date DEFAULT NULL COMMENT "有效期開始日期",
  `indate_end` date DEFAULT NULL COMMENT "有效期結束日期",
  `created_date` datetime NOT NULL COMMENT "創建時間",
  `modified_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "修改時間",
  `yn` tinyint(1) unsigned NOT NULL DEFAULT "1" COMMENT "是否有效(0無效,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="身份證信息表";
自動映射

通過數據庫表關系,我們在sys_user表中添加了外鍵列,關聯sys_user_idcard表主鍵,所有在創建實體時,在SysUser類中增加SysUserIdcard屬性,實體類代碼如下:

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規范(如: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;

}

測試方法代碼如下:

@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();
    }
}

結果如下:

通過結果日志可知,Mybatis自動將關聯的身份證信息通過屬性映射到用戶對象中。

resultMap映射

對于查詢可通過resultMap進行屬性和列進行映射,此一對一mapper配置文件如下:






    
    
        
        
        
        
        
        
    

    
    


Mapper接口與測試類同上,測試結果如下:

association映射

與resultMap映射類型,使用association標簽進行映射,代碼如下:


    
    
    

    
        
        
    

association標簽屬性有:

property:對應實體類中的屬性名,必填項

javaType:屬性對應的java類型

resultMap:可以使用resultMap,替換javaType

columnPrefix:查詢列名的前綴,配置后,在子標簽配置result的column時可以省略前綴,但sql字段前綴或別名必須以此開頭

測試用例與結果與上面一致。

總結

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

最后創建了qq群方便大家交流,可掃描加入,同時也可加我qq:276420284,共同學習、共同進步,謝謝!

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

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

相關文章

  • 通過項目逐步深入了解Mybatis<三>

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

    khlbat 評論0 收藏0
  • MyBatis理解與掌握(關聯查詢)

    摘要:訂單信息與訂單明細為一對多關系。例如先從單表查詢,需要時再從關聯表去關聯查詢,大大提高數據庫性能,因為查詢單表要比關聯查詢多張表速度要快。作用將關聯查詢信息映射到一個對象中。 MyBatis理解與掌握(關聯查詢) @(MyBatis)[Java, 框架, MyBatis] 一對一查詢 案例:查詢所有訂單信息,關聯查詢下單用戶信息 showImg(https://segmentfault...

    MiracleWong 評論0 收藏0
  • Mybatis【配置文件】就是這么簡單

    摘要:場合常見一些明細記錄的展示,將關聯查詢信息全部展示在頁面時,此時可直接使用將每一條記錄映射到中,在前端頁面遍歷中是即可。如果查詢單表就可以滿足需求,一開始先查詢單表,當需要關聯信息時,再關聯查詢,當需要關聯信息再查詢這個叫延遲加載。 配置文件和映射文件還有挺多的屬性我還沒有講的,現在就把它們一一補全 映射文件 在mapper.xml文件中配置很多的sql語句,執行每個sql語句時,封裝...

    freewolf 評論0 收藏0

發表評論

0條評論

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