mybatis有什么用,mybatis的Mapper文件配置

 2023-10-18 阅读 32 评论 0

摘要:一、resultMap   resultMap 元素是 MyBatis 中最重要最強大的元素. 該配置節點下如下子節點配置 id?– 一個 ID 結果;標記結果作為 ID 可以幫助提高整體效能constructor?- 類在實例化時,用來注入結果到構造方法中id?– 一個 ID 結果;標記結果作為 ID 可以幫助提高整體效能

一、resultMap

  resultMap 元素是 MyBatis 中最重要最強大的元素. 該配置節點下如下子節點配置

  • id?– 一個 ID 結果;標記結果作為 ID 可以幫助提高整體效能
  • constructor?- 類在實例化時,用來注入結果到構造方法中id?– 一個 ID 結果;標記結果作為 ID 可以幫助提高整體效能
    • idArg?- ID 參數;標記結果作為 ID 可以幫助提高整體效能
    • arg?- 注入到構造方法的一個普通結果
  • result?– 注入到字段或 JavaBean 屬性的普通結果
  • association?– 一個復雜的類型關聯;許多結果將包成這種類型
    • 嵌入結果映射 – 結果映射自身的關聯,或者參考一個
  • collection?– 復雜類型的集
    • 嵌入結果映射 – 結果映射自身的集,或者參考一個
  • discriminator?– 使用結果值來決定使用哪個結果映射
    • case?– 基于某些值的結果映射
      • 嵌入結果映射 – 這種情形結果也映射它本身,因此可以包含很多相 同的元素,或者它可以參照一個外部的結果映射。

  resultMap配置節點具有如下配置屬性:

  id配置節點具有如下配置屬性:

mybatis有什么用,

?  剩余詳細配置屬性可參看文檔:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#

?二、通過mapper配置實現一對多關聯查詢

  1.首先我們建兩張表,一張user表,一張campany表。(主要看 username 和 campany_name字段)

  

  2.創建實體類表:

Mybatis框架、  user:(字段應該和數據庫字段一一對應,因為要實現一對多的聯合查詢,所以我們在user實體類中多加了Campany實體類,表示一個人呆過的公司記錄,每個字段都要有set和get方法)

  

  campany:

  

  3.創建dao接口類:(此處我們只做查詢,所以只定義一個方法接口)

1 public interface UserDao {
2     public List<UserEntity> getUserInfo(int id);
3 }

dev mapper、?

  4.創建dao接口對應的mapper.xml(namespace="dao.daoInterface.UserDao" 意為該mapper是UserDao的實現類,然后每個select,insert,update,delete標簽節點的id都對應一個dao接口的方法,所以select的id應該和UserDao內要實現的方法一樣)

 1 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 2     <mapper namespace="dao.daoInterface.UserDao">
 3     <resultMap id="UserMap" type="domain.UserEntity">
 4         <id property="id" column="uid" />
 5         <result property="username" column="username" />
 6         <result property="password" column="password"/>
 7         <result property="address" column="address"/>
 8         <result property="createTime" column="createTime"/>
 9         <result property="updateTime" column="updateTime"/>
10         <collection property="campanyEntity" resultMap="dao.daoInterface.CampanyDao.CampanyMap" />
11     </resultMap>
12 
13     <!-- 可以將sql語句獨立出來,然后引用 -->
14     <sql id="selectMap">
15         u.username, u.address ,c.campany_name
16     </sql>
17 
18     <!-- 根據id查詢用戶 -->
19     <select id="getUserInfo" parameterType="int" resultMap="UserMap">
20             SELECT <include refid="selectMap"/>
21             FROM  user u left join campany c
22             ON u.username = c.username
23             WHERE id = #{id}
24             ORDER BY id ASC
25     </select>
26 
27 
28 </mapper>

?

  CampanyMapper.xml (這里面直接定義了一個map,該map可以被其他mapper文件引用,如上配置:<collection property="campanyEntity" resultMap="dao.daoInterface.CampanyDao.CampanyMap" />就引用了這個mapper的resultMap,引用規則位,該mapper的實現的接口包名dao.daoInterface.CampanyDao + resultMap的id名稱

1 <mapper namespace="dao.daoInterface.CampanyDao">
2     <resultMap id="CampanyMap" type="domain.CampanyEntity">
3         <id property="pid" column="pid"/>
4         <result property="username" column="username"/>
5         <result property="campanyName" column="campany_name"/>
6         <result property="money" column="money"/>
7     </resultMap>
8 
9 </mapper>

?

mybatis詳解。? 6.測試方法:

1      List<UserEntity> uList = userService.getUserInfo(1);
2         if(uList.size() > 0){
3             for(int i=0;i<uList.size();i++){
4                 System.out.println(uList.get(i).getUsername()+"\t"+uList.get(i).getCampanyEntity().getCampanyName());
5             }
6         }

?  7.運行結果

這樣,就實現了mapper配置實現一對多關聯查詢

?

轉載于:https://www.cnblogs.com/caijh/p/7762679.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/146339.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息