Mybatis传入多个参数查询数据(3种方法)

更新时间:2023-06-19 08:24:59 阅读: 评论:0

Mybatis传⼊多个参数查询数据(3种⽅法)
第⼀种⽅案
DAO层的函数⽅法
public Ur lectUr(String name,String area);
对应的l
<lect id="lectUr" resultMap="BaResultMap">
沙发品牌排名lect * from ur_ur_t where ur_name = #{0} and ur_area=#{1}
</lect>
其中,#{0}代表接收的是dao层中的第⼀个参数,#{1}代表dao层中第⼆参数,更多参数⼀致往后加即可。
第⼆种⽅案  此⽅法采⽤Map传多参数.
Dao层的函数⽅法
public Ur lectUr(Map paramMap);
对应的l
<lect id="lectUr" resultMap="BaResultMap">
lect * from ur_ur_t where ur_name = #{urName,jdbcType=VARCHAR} and ur_area=#{urArea,jdbcType=VARCHAR} </lect>
Service层调⽤
public Ur xxxSelectUr(){
Map paramMap=new hashMap();
paramMap.put(“urName”,”对应具体的参数值”);
paramMap.put(“urArea”,”对应具体的参数值”);
Ur ur=xxx.lectUr(paramMap);
}
个⼈认为此⽅法不够直观,见到接⼝⽅法不能直接的知道要传的参数是什么。
第三种⽅案
Dao层的函数⽅法
public Ur lectUr(@Param("urName")String name,@Param("urArea")String area);
对应的l
人工荨麻疹症状<lect id="lectUr" resultMap="BaResultMap">
lect * from ur_ur_t where ur_name = #{urName,jdbcType=VARCHAR} and ur_area=#{urArea,jdbcType=VARCHAR} </lect>
------------------------------------------------------------------------------------------------------
当只向l⽂件中传递⼀个参数时,可以简单的⽤“_parameter”来接收xxxMapper.java传递进来的参数,并代⼊查询。
但是,如果在xxxMapper.java⽂件中传递进来多个参数,就不能使⽤上⾯这种形式来接收参数,这时
可以有两种⽅案来解决这个问题:
忘乎所以
⼀ 向xml⽂件中传递进去⼀个Map<String, Object>集合,然后xml⽂件中就可以正常使⽤Map集合中的各个参数了。
具体实例如下:
(1)xxxMapper.java⽂件中这样定义:
List<Airline> findAll(Map<String, Object> parms);
(2)在⽤到上⾯定义的具体实现类中给Map传参:
public List<Airline> findAll(PageInfo page,Airline airline) {
HashMap<String,Object> params = new HashMap<String,Object>();
params.put("page", page);
params.put("airline", airline);
return airlineMapper.findAll(params);
}
(3)此时对应的l⽂件使⽤“java.util.Map”来接收这个Map集合:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28<sql id="sqlfileders">
<bind name="fileders"
value="#
{'id':'ID','departureAirport':'DEPARTURE_AIRPORT','relDepartureAirport':'REL_DEPARTURE_AIRPORT','arrivalAirport':'ARRIVAL_AIRPORT','relArrivalAirport':'REL_ARRIVAL_AIRPORT','popStat <bind name="javapropertys"
value="#
{'ID':'id','DEPARTURE_AIRPORT':'departureAirport','REL_DEPARTURE_AIRPORT':'relDepartureAirport','ARRIVAL_AIRPORT':'arrivalAirport','REL_ARRIVAL_AIRPORT':'relArrivalAirport','POP_S </sql>
坚定的锡兵<lect id="findAll"resultMap="BaResultMap"parameterType="java.util.Map">
<![CDATA[
鸡蛋灌饼的做法
lect x.* from (
lect z.*, rownum numbers from (
]]>
lect
<include refid="Ba_Column_List"/>
from
USR_AIR_LINE
<where>
<if test="airline.departureAirport != null">
莫泊桑作品
DEPARTURE_AIRPORT = #{airline.departureAirport}
</if>
<if test="airline.arrivalAirport != null">
世界上最大的摩天轮and ARRIVAL_AIRPORT=#{airline.arrivalAirport}
</if>
<if test="lDepartureAirport != null">
and REL_DEPARTURE_AIRPORT =
#{lDepartureAirport}
</if>
<if test="lArrivalAirport != null">
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46and REL_ARRIVAL_AIRPORT = #{lArrivalAirport}
</if>
<if test="airline.popStatus != null">
and POP_STATUS = #{airline.popStatus}
</if>
<if test="airline.status != null">
and STATUS = #{airline.status}
</if>
</where>
<if test="page.sortName != null">
<include refid="sqlfileders"/>
<bind name="orderfield"value="#this.fileders[page.sortName]"/> order by ${orderfield} ${page.sortOrder}
</if>
<![CDATA[ ) z where rownum < ]]>
龙胆泻肝丸功效与作用#{}
<![CDATA[ ) x where x.numbers >= ]]>
#{page.from}
</lect>
注:上⾯的实例实现的是分页查询数据。我们可以发现使⽤Map来传递参数这种形式并不好,因为这样使得在接⼝中只有⼀个Map参数,其他⼈进⾏维护的时候并不清楚到底需要向这个Map⾥⾯传递什么参数进去
⼆ 通过给参数添加@Param注解来解决问题:
(1)给xxxMapper.java⽂件的⽅法中的参数添加@Param注解,这个注解中的值对应xml⽂件中使⽤到的参数名称:
public List<SecPost> getSecPostByMainId(@Param("mainPostId") String mainPostId,
@Param("startIndex") int startIndex, @Param("endIndex") int endIndex);
(2)此时l⽂件中对应的地⽅就可以正常使⽤在@Param注解中对应的值了:
1 2 3<lect id="getSecPostByMainId"parameterType="map"resultType="com.jxd.pojo.SecPost">
lect c3.* from (lect rownum as r, c2.* from (lect * from my_cond c1 where c1.main_id = #{mainPostId} order by c1.c_creatime desc) c2) c3 where c3.r between #{startIndex} and #{endIndex}
</lect>

本文发布于:2023-06-19 08:24:59,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1045325.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:参数   传递   注解   不够   实现
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图