您好,登錄后才能下訂單哦!
前言
Mybatis的Mapper文件中的select、insert、update、delete元素中有一個parameterType屬性,用于對應的mapper接口方法接受的參數類型。本文主要給大家介紹了關于MyBatis傳入參數parameterType類型的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。
1. MyBatis的傳入參數parameterType類型分兩種
1. 1. 基本數據類型:int,string,long,Date;
1. 2. 復雜數據類型:類和Map
2. 如何獲取參數中的值:
2.1 基本數據類型:#{參數} 獲取參數中的值
2.2 復雜數據類型:#{屬性名} ,map中則是#{key}
3.案例:
3.1 基本數據類型案例
<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中包含數組的情況
<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
:注解單一屬性;這個類似于將參數重命名了一次
如調用mybatis的*mapper.xml中配置sql語句(DAO層)
List<String> selectIdBySortTime(@Param(value="startdate")String startDate);
則xml中的語句,需要配合@param括號中的內容:參數為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;則需要注意編寫的參數
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>
至于要說優缺點的話,看個人喜好
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。