mybatis直接传字符串给sql

来源:互联网 发布:教育软件有哪些 编辑:程序博客网 时间:2024/06/05 08:17

大部分时候我们使用Map或实例对象传送多个数据给mybatis的sql,

例如:

param.put("openId", openId);
param.put("userId", userId);
param.put("pageNum", pageNum);
param.put("pageSize", pageSize);
param.put("pageStart", (pageNum-1)*pageSize);
pageList = workOrderWeChartService.qryEvaluateListByUserId(param);


xml:parameterType="map"

<insert id="addSendValidateMsgRecord" parameterType="map">
insert into send_validateMsg_info(phoneNum,validate_code,msg_context,send_date) 
values(#{phoneNum},#{validateCode},#{msgContext},now())
</insert>

但是有时我们只有一个sql需要的参数,我们再去新建一个Map会对象保存感觉即麻烦又影响代码效率,

这时我们可以用:

pageList = workOrderWeChartService.updateGoodOrderIsOpen(orderId);

<update id="updateGoodOrderIsOpen" parameterType="java.lang.String">
update goods_order set ISOPEN='1',OPEN_DATE=now()
where ORDER_ID=#{_parameter}
</update>

这样一个参数不管名字,可以直接用#{_parameter}取得,那么如果有两个或以上的参数呢?

一样好办:

public int updateGoodOrderIsOpen updateGoodOrderIsOpen(String  orderId,String  name);

<update id="updateGoodOrderIsOpen" >
update goods_order set ISOPEN='1',OPEN_DATE=now()
 where ORDER_ID=#{0} and name=#{1}
</update>

parameterType就别给类型了,特别注意,参数从0开始,也可以用下面的方式,让sql更直观些:

public int updateGoodOrderIsOpen(@Param("orderId") String orderId,@Param("name") String name);

<update id="updateGoodOrderIsOpen" >
update goods_order set ISOPEN='1',OPEN_DATE=now()
 where ORDER_ID=#{orderId} and name=#{name}
</update>