MyBatis中傳入?yún)?shù)parameterType類型詳解
前言
Mybatis的Mapper文件中的select、insert、update、delete元素中有一個parameterType屬性,用于對應的mapper接口方法接受的參數(shù)類型。本文主要給大家介紹了關于MyBatis傳入?yún)?shù)parameterType類型的相關內(nèi)容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。
1. MyBatis的傳入?yún)?shù)parameterType類型分兩種
1. 1. 基本數(shù)據(jù)類型:int,string,long,Date;
1. 2. 復雜數(shù)據(jù)類型:類和Map
2. 如何獲取參數(shù)中的值:
2.1 基本數(shù)據(jù)類型:#{參數(shù)} 獲取參數(shù)中的值
2.2 復雜數(shù)據(jù)類型:#{屬性名} ,map中則是#{key}
3.案例:
3.1 基本數(shù)據(jù)類型案例
<sql id="Base_Column_List" >
id, car_dept_name, car_maker_name, icon,car_maker_py,hot_type
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long" >
select
<include refid="Base_Column_List" />
from common_car_make
where id = #{id,jdbcType=BIGINT}
</select>
3.2 復雜類型--map類型
<select id="queryCarMakerList" resultMap="BaseResultMap" parameterType="java.util.Map">
select
<include refid="Base_Column_List" />
from common_car_make cm
where 1=1
<if test="id != null">
and cm.id = #{id,jdbcType=DECIMAL}
</if>
<if test="carDeptName != null">
and cm.car_dept_name = #{carDeptName,jdbcType=VARCHAR}
</if>
<if test="carMakerName != null">
and cm.car_maker_name = #{carMakerName,jdbcType=VARCHAR}
</if>
<if test="hotType != null" >
and cm.hot_type = #{hotType,jdbcType=BIGINT}
</if>
ORDER BY cm.id
</select>
3.3 復雜類型--類類型
<update id="updateByPrimaryKeySelective" parameterType="com.epeit.api.model.CommonCarMake" >
update common_car_make
<set >
<if test="carDeptName != null" >
car_dept_name = #{carDeptName,jdbcType=VARCHAR},
</if>
<if test="carMakerName != null" >
car_maker_name = #{carMakerName,jdbcType=VARCHAR},
</if>
<if test="icon != null" >
icon = #{icon,jdbcType=VARCHAR},
</if>
<if test="carMakerPy != null" >
car_maker_py = #{carMakerPy,jdbcType=VARCHAR},
</if>
<if test="hotType != null" >
hot_type = #{hotType,jdbcType=BIGINT},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
3.4 復雜類型--map中包含數(shù)組的情況
<select id="selectProOrderByOrderId" resultType="com.epeit.api.model.ProOrder" parameterType="java.util.HashMap" >
select sum(pro_order_num) proOrderNum,product_id productId,promotion_id promotionId
from pro_order
where 1=1
<if test="orderIds != null">
and
<foreach collection="orderIds" item="item" open="order_id IN(" separator="," close=")">
#{item,jdbcType=BIGINT}
</foreach>
</if>
GROUP BY product_id,promotion_id
</select>
4.注解@Param:這個比較特殊,但是很好理解
案例一:
@Param(value="startdate") String startDate :注解單一屬性;這個類似于將參數(shù)重命名了一次
如調(diào)用mybatis的*mapper.xml中配置sql語句(DAO層)
List<String> selectIdBySortTime(@Param(value="startdate")String startDate);
則xml中的語句,需要配合@param括號中的內(nèi)容:參數(shù)為startdate
<select id="selectIdBySortTime" resultType="java.lang.String" parameterType="java.lang.String">
select distinct ajlcid from ebd_fh_ajlc where sorttime >= to_date(#{startdate,jdbcType=VARCHAR},'YYYY-MM-DD') and created_date=updated_date
and keyvalue in (select distinct companyname from ebd_fh_company_list where isupdate='0')
</select>
案例二:
注解javaBean,@Param(value="dateVo") DateVo dateVo;則需要注意編寫的參數(shù)
List<String> selectIds(@Param(value="dateVo")DateVo dateVo);
對應的mapping文件
<select id="selectIds" resultType="java.lang.String" parameterType="com.api.entity.DateVo">
select distinct ajlcid from ebd_fh_ajlc where sorttime >= to_date(# {dateVo.startDate,jdbcType=VARCHAR},'YYYY-MM-DD') and created_date=updated_date
and keyvalue in (select distinct companyname from ebd_fh_company_list where isupdate='0')
</select>
至于要說優(yōu)缺點的話,看個人喜好
總結
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關文章
java利用Future實現(xiàn)多線程執(zhí)行與結果聚合實例代碼
這篇文章主要給大家介紹了關于java利用Future實現(xiàn)多線程執(zhí)行與結果聚合的相關資料,Future模式的核心,去除了主函數(shù)的等待時間,并使得原本需要等待的時間段可以用于處理其他業(yè)務邏輯,需要的朋友可以參考下2021-12-12
實戰(zhàn)分布式醫(yī)療掛號系統(tǒng)之設置微服務接口開發(fā)模塊
這篇文章主要為大家介紹了實戰(zhàn)分布式醫(yī)療掛號系統(tǒng)之接口開發(fā)醫(yī)院設置微服務模塊,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04
Spring boot如何快速的配置多個Redis數(shù)據(jù)源
這篇文章主要介紹了Spring boot如何快速的配置多個Redis數(shù)據(jù)源,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06
Java 注冊時發(fā)送激活郵件和激活的實現(xiàn)示例
這篇文章主要介紹了Java 注冊時發(fā)送激活郵件和激活的實現(xiàn)示例的相關資料,需要的朋友可以參考下2017-07-07
Java Synchronize下的volatile關鍵字詳解
這篇文章主要介紹了Java Synchronize下的volatile關鍵字詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03
如何解決Spring in action @valid驗證不生效的問題
這篇文章主要介紹了如何解決Spring in action @valid驗證不生效的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06

