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)缺點的話,看個人喜好
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關文章
Java8 Stream API 詳細使用方法與操作技巧指南
這篇文章主要介紹了Java8 Stream API 詳細使用方法與操作技巧,總結(jié)分析了Java8 Stream API 基本功能、使用方法與操作注意事項,需要的朋友可以參考下2020-05-05
Spring Cloud Gateway重試機制的實現(xiàn)
這篇文章主要介紹了Spring Cloud Gateway重試機制的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-03-03
Java中的線程同步與ThreadLocal無鎖化線程封閉實現(xiàn)
這篇文章主要介紹了Java中的線程同步與ThreadLocal無鎖化線程封閉實現(xiàn),Synchronized關鍵字與ThreadLocal變量的使用是Java中線程控制的基礎,需要的朋友可以參考下2016-03-03

