中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MyBatis映射文件中parameterType與resultType怎么使用

發布時間:2023-05-08 15:34:26 來源:億速云 閱讀:95 作者:iii 欄目:開發技術

這篇“MyBatis映射文件中parameterType與resultType怎么使用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“MyBatis映射文件中parameterType與resultType怎么使用”文章吧。

resultMap 

表示查詢結果集與java對象之間的一種關系,處理查詢結果集,映射到java對象。     

resultMap 是一種“查詢結果集---Bean對象”屬性名稱映射關系,使用resultMap關系可將將查詢結果集中的列一一映射到bean對象的各個屬性(兩者屬性名可以不同,配置好映射關系即可),適用與復雜一點的查詢。

(1)適用于表的連接查詢(在resultMap里面可以配置連接條件,見如下程序association標簽)

<!-- 訂單查詢關聯用戶的resultMap將整個查詢的結果映射到cn.itcast.mybatis.po.Orders中   -->  
    <resultMap type="cn.itcast.mybatis.po.Orders" id="OrdersUserResultMap">  
        <!-- 配置映射的訂單信息 -->  
        <!-- id:指定查詢列中的唯 一標識,訂單信息的中的唯 一標識,如果有多個列組成唯一標識,配置多個id ,column:訂單信息的唯 一標識列 ,property:訂單信息的唯 一標識 列所映射到Orders中哪個屬性  -->  
 
        <id column="id" property="id"/>
        <result column="user_id" property="userId"/> 
        <result column="number" property="number"/> 
        <result column="createtime" property="createtime"/>
        <result column="note" property=note/>          
 
        <!-- 配置映射的關聯的用戶信息 --> 
        <!-- association:用于映射關聯查詢單個對象的信息property:要將關聯查詢的用戶信息映射到Orders中哪個屬性 -->  
 
        <association property="user"  javaType="cn.itcast.mybatis.po.User">
            <!-- id:關聯查詢用戶的唯 一標識
            column:指定唯 一標識用戶信息的列
            javaType:映射到user的哪個屬性-->
            <id column="user_id" property="id"/>
            <result column="username" property="username"/>
            <result column="sex" property="sex"/>
            <result column="address" property="address"/>
        </association> 
    </resultMap>

2)適用于表的一對多連接查詢,(如,訂單對應多個訂單明細時,需要根據連接條件訂單id匹配訂單明細,并且消除重復的訂單信息(訂單明細中的),如下程序);

<resultMap type="cn.itcast.mybatis.po.Orders" id="OrdersAndOrderDetailResultMap" extends="OrdersUserResultMap">
        <!-- 訂單信息 --> 
        <!-- 用戶信息 -->
        <!-- 使用extends繼承,不用在中配置訂單信息和用戶信息的映射 -->
        <!-- 訂單明細信息一個訂單關聯查詢出了多條明細,要使用collection進行映射
        collection:對關聯查詢到多條記錄映射到集合對象中
        property:將關聯查詢到多條記錄映射到cn.itcast.mybatis.po.Orders哪個屬性 
        ofType:指定映射到list集合屬性中pojo的類型 -->  
 
         <collection property="orderdetails" ofType="cn.itcast.mybatis.po.Orderdetail">
            <!-- id:訂單明細唯 一標識 
            property:要將訂單明細的唯 一標識 映射到cn.itcast.mybatis.po.Orderdetail的哪個屬性-->  
            <id column="orderdetail_id" property="id"/>
            <result column="items_id" property="itemsId"/>
            <result column="items_num" property="itemsNum"/>
            <result column="orders_id" property="ordersId"/>
         </collection>
    </resultMap>

(3)映射的查詢結果集中的列標簽可以根據需要靈活變化,并且,在映射關系中,還可以通過typeHandler設置實現查詢結果值的類型轉換,比如布爾型與0/1的類型轉換。

例如:

<resultMap type="hdu.terence.bean.Message" id="MessageResult"> 
    <!--存放Dao值--><!--type是和數據庫對應的bean類名Message-->
    <id column="id" jdbcType="INTEGER"property=" id"/><!--主鍵標簽-->
    <result column="COMMAND" jdbcType="VARCHAR" property="command"/>
    <result column="DESCRIPTION" jdbcType="VARCHAR" property="description"/>
    <result column="CONTENT" jdbcType="VARCHAR" property="content"/>
  </resultMap> 
 
  <select id="queryMessageList" parameterType="hdu.terence.bean.Message" resultMap="MessageResult">
    SELECTID,COMMAND,DESCRIPTION,CONTENT FROM message WHERE 1=1    
    <if test="command!=null and!&quot;&quot;.equals(command.trim())">
    and COMMAND=#{command}
    </if>
    <if test="description!=null and!&quot;&quot;.equals(description.trim())">
    and DESCRIPTION like '%' #{description} '%'
    </if> 
  </select>

resultType

resultType 是一種“查詢結果集---Bean對象”數據類型映射關系,使用resultType關系,即可使Bean對象接收查詢結果集;見名知意,該方法是通過查詢結果集中每條記錄(屬性)的數據類型和Bean對象的數據類型作映射,若兩者都相同,則表示匹配成功,Bean可以接收到查詢結果。

但是本方法有局限性,要求Bean對象字段名和查詢結果集的屬性名相同(可以大小寫不同,大小寫不敏感)。因為這個局限性,可以省略調resultMap進行屬性名映射。

一般適用于pojo(簡單對象)類型數據,簡單的單表查詢。

以下是resultType的寫法,將其值設置成對應的java類上即可。不需要上述resultMap的映射關系。

<select resultType="User" id="findAll">select *from user </select>
<select resultType="com.itxiaotong.pojo.User" id="findById" parameterType="int">select *from user where id = #{userId} </select>
<select resultType="com.itxiaotong.pojo.User" id="findByUsernameLike" parameterType="string">
<bind value="'%'+username+'%'" name="likeName"/>
select * from user where username like #{likeName} 
</select>
<select resultType="com.itxiaotong.pojo.User" id="findPage">select * from user limit #{param1},#{param2} </select>
 
<select resultType="com.itxiaotong.pojo.User" id="findPage1">select * from user limit #{startIndex},#{pageSize} </select>
<select resultType="User" id="findPage2" parameterType="PageQuery">select * from user limit #{startIndex},#{pageSize} </select>

其中parameterType="PageQuery"的類是,下列內容

PageQuery.java

package com.itxiaotong.pojo;
 
public class PageQuery {
    private int startIndex;
    private int pageSize;
 
    public PageQuery() {
    }
 
    public PageQuery(int startIndex, int pageSize) {
        this.startIndex = startIndex;
        this.pageSize = pageSize;
    }
 
    public int getStartIndex() {
        return startIndex;
    }
 
    public void setStartIndex(int startIndex) {
        this.startIndex = startIndex;
    }
 
    public int getPageSize() {
        return pageSize;
    }
 
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
}
<select resultType="com.itxiaotong.pojo.User" id="findPage3" parameterType="map">select * from user limit #{startIndex},#{pageSize} </select>
 
<select resultType="int" id="findCount">select count(id) from user </select>

parameterType

在mybatis映射接口的配置中,有select,insert,update,delete等元素都提到了parameterType的用法,parameterType為輸入參數,在配置的時候,配置相應的輸入參數類型即可。parameterType有基本數據類型和復雜的數據類型配置。

1.基本數據類型,如輸入參數只有一個,其數據類型可以是基本的數據類型,也可以是自己定的類類型。包括int,String,Integer,Date,如下:

(1)根據id進行相應的刪除:

(2)添加員工:

2.復雜數據類型:包含java實體類,map。

parameterType例子(一)

 現在有一個Mapper配置文件,以下是片段:

 <select id="queryCommandListByPage" resultMap="CommandResult" >
      select <include refid="columns"/> from command a left join command_content b 
    on a.id=b.command_id
      <where>
          <if test="command.name != null and !"".equals(command.name.trim())">
            and a.name=#{command.name}
        </if>
        <if test="command.description != null and !"".equals(command.description.trim())">
            and a.description like '%' #{command.description} '%'
        </if>
      </where>
      <if test="flag==1">
        group by aid
    </if>
      order by id
  </select>
  <sql  id="columns">
      a.id aid,a.name,a.description,b.content,b.id,b.command_id
  </sql>

下面是IService接口:

 /**
     * 攔截器實現分頁
     */
    public List<command> queryCommandListByPage(Map<String,Object>parameter);

parameterType例子(二)

<insert id="add" parameterType="com.itxiaotong.pojo.User">insert into user(username, sex, address)values (#{username}, #{sex}, #{address}) </insert>
<update id="update" parameterType="com.itxiaotong.pojo.User">update user set username = #{username},sex = #{sex},address=#{address} where id = #{id} </update>
<delete id="delete" parameterType="int">delete from user where id = #{id} </delete>
<insert id="add2" parameterType="com.itxiaotong.pojo.User">
 
     <!-- keyProperty:主鍵屬性名 keyColumn:主鍵列名 resultType:主鍵類型 order:執行時機 -->
 
     <selectKey resultType="int" order="AFTER" keyColumn="id" keyProperty="id">SELECT LAST_INSERT_ID(); </selectKey>
insert into user(username, sex, address)values (#{username}, #{sex}, #{address}) 
</insert>
<select resultType="com.itxiaotong.pojo.User" id="findPage3" parameterType="map">select * from user limit #{startIndex},#{pageSize} </select>

以上就是關于“MyBatis映射文件中parameterType與resultType怎么使用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兴城市| 台安县| 临漳县| 镶黄旗| 福海县| 库尔勒市| 怀宁县| 梅河口市| 山阳县| 新丰县| 伊金霍洛旗| 岚皋县| 栖霞市| 柞水县| 巴林左旗| 彝良县| 武强县| 防城港市| 诸暨市| 从化市| 英吉沙县| 徐汇区| 大理市| 法库县| 永年县| 健康| 陇西县| 炉霍县| 黔江区| 河源市| 临颍县| 二连浩特市| 泰兴市| 湘西| 工布江达县| 洛川县| 京山县| 延寿县| 龙陵县| 和林格尔县| 新兴县|