方法一:忽略parameterType,加@param("xxx")注解
在mapper接口中加上@param("xxx")注解,则在配置文件中直接用即可
List<Map<String, Object>> getDataByTime(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("platformId") Long platformId);
<select id="getDataByTime" resultType="java.util.Map">
SELECT
t.seller_id as sellerId,
sum(t.payment_price) as total,
FROM
trade_orders t
WHERE
AND
t.platform_id = #{platformId}
<if test="startTime != null and startTime != ''">
AND
<![CDATA[t.order_time >= #{startTime}]]>
</if>
<if test="endTime != null and endTime != ''">
AND
<![CDATA[t.order_time <= #{endTime}]]>
</if>
GROUP BY
t.seller_id
</select>
方法二:忽略parameterType,不加@param("xxx")注解
用#{index},是第几个就用第几个的索引,索引从0开始
List<Map<String, Object>> getDataByTime(String startTime, String endTime, Long platformId);
<select id="getDataByTime" resultType="java.util.Map">
SELECT
t.seller_id as sellerId,
sum(t.payment_price) as total,
FROM
trade_orders t
WHERE
AND
t.platform_id = #{3}
<if test="startTime != null and startTime != ''">
AND
<![CDATA[t.order_time >= #{0}]]>
</if>
<if test="endTime != null and endTime != ''">
AND
<![CDATA[t.order_time <= #{1}]]>
</if>
GROUP BY
t.seller_id
</select>
方法三:使用Map封装参数,parameterType=“hashmap”
封装好后,直接在配置文件引用#{key}即可
List<Map<String, Object>> getDataByTime(HashMap map);
<select id="getDataByTime" parameterType="hashmap" resultType="java.util.Map">
SELECT
t.seller_id as sellerId,
sum(t.payment_price) as total,
FROM
trade_orders t
WHERE
AND
t.platform_id = #{platformId}
<if test="startTime != null and startTime != ''">
AND
<![CDATA[t.order_time >= #{startTime}]]>
</if>
<if test="endTime != null and endTime != ''">
AND
<![CDATA[t.order_time <= #{endTime}]]>
</if>
GROUP BY
t.seller_id
</select>
方法四:使用List封装参数
mapper配置文件使用foreach标签循环list
List<Map<String, Object>> getDataByTime(List<String> list);
<select id="getXXXBeanList" resultType="java.util.Map">
select XX from trade_orders where id in
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
</select>
前言
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 基本数据类型案例
1 2 3 4 5 6 7 8 9 |
|
3.2 复杂类型--map类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
3.3 复杂类型--类类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
3.4 复杂类型--map中包含数组的情况
1 2 3 4 5 6 7 8 9 10 11 12 |
|
4.注解@Param:这个比较特殊,但是很好理解
案例一:
@Param(value="startdate") String startDate
:注解单一属性;这个类似于将参数重命名了一次
如调用mybatis的*mapper.xml中配置sql语句(DAO层)
1 |
|
则xml中的语句,需要配合@param括号中的内容:参数为startdate
1 2 3 4 |
|
案例二:
注解javaBean,@Param(value="dateVo") DateVo dateVo;则需要注意编写的参数
1 |
|
对应的mapping文件
1 2 3 4 |
|
至于要说优缺点的话,看个人喜好