Mybatis传⼊参数的⽅式(单个参数和多参的形式)Mybatis传⼊多个参数
⽂章⽬录
Mybatis传⼊单个参数的⽅式
1.简单参数:
public List<XXEntity>findXXEntityList(String id);
<lect id="findXXEntityList" parameterType="java.lang.String" resultType="XXEntity">
lect t.* from tableName t where t.id= #{id}
</lect>
其中⽅法名和ID⼀致,#{}中的参数名与⽅法中的参数名⼀直, 我这⾥采⽤的是XXEntity是为实体类。,
lect 后的字段列表要和bean中的属性名⼀致, 如果不⼀致的可以⽤ as 来补充。
2.List封装的参数:
public List<XXEntity>findXXEntityList(List<String> list);
巾帼<lect id="findXXEntityList" resultType="XXEntity">
lect 字段... from XXX where id in
<foreach item="item" index="index" collection="list" open="(" parator="," clo=")">
#{item}
</foreach>
</lect>
foreach 最后的效果是lect 字段... from XXX where id in ('1','2','3','4')流鼻血不止
注:当传⼊的类型为List集合的时候,parameterType=""可以不需要写,个⼈理解
3.map封装的参数:
public List<XXEntity>findXXEntityList(HashMap map);
<lect id="findXXEntityList" parameterType="hashmap" resultType="XXEntity">
lect 字段... from XXX where id=#{Id} name= #{name}
</lect>
其中hashmap是mybatis⾃⼰配置好的直接使⽤就⾏。map中key的名字是那个就在#{}使⽤那个.
Mybatis传⼊多个参数的⽅式
1.两个string类型的中国饮食
1.1 直接传⼊参数
public List<XXEntity>findXXEntityList(String id,String name);
<lect id="findXXEntityList" resultType="XXEntity">
lect t.* from tableName t where t.id= #{arg0} and t.name=#{arg1}
</lect>
arg0:意思是寻找下标为0的参数,也就是String id;
1.2使⽤@Param()注解⽅式传⼊参数
public List<XXEntity>findXXEntityList(@Param("id")String id,@Param("name")String name);
<lect id="findXXEntityList" resultType="XXEntity">
lect t.* from tableName t where t.id= #{id} and t.name=#{name}
</lect>
注:第⼆种⽅式的话就是直接使⽤#{id}和#{name}获取参数值。
1.3使⽤map集合封装数据die是什么意思
猴子英文怎么读
public List<XXEntity>findXXEntityList(HashMap map);
<lect id="findXXEntityList" parameterType="hashmap" resultType="XXEntity">
lect 字段... from XXX where id=#{id} code = #{name}
</lect>
其中hashmap是mybatis⾃⼰配置好的直接使⽤就⾏。#{id}和#{name}就是map中key的名字,map如何封装就不⽤了多说了吧。
2 将String和数组作为参数直接作为参数使⽤
public List<XXEntity>findXXEntity(@Param("name")String name,@Param("Id")String[] Id);
<lect id="findXXEntity" resultType="XXEntity" parameterType="String">
SELECT * FROM BASE_SYSPARAM
WHERE 1=1
染发膏怎么用AND name=#{name}
AND id in
<foreach collection="id" item="item" index="index" open="("
parator="," clo=")">
#{item}
</foreach>
</lect>
在mapper.java中直接使⽤ibatis中的@Param("")来实现传参
3将String和数组封装在map集合中作为参数使⽤
public List<XXEntity>findXXEntity(HashMap map);
<lect id="findXXEntity" resultType="XXEntity" parameterType="String">
SELECT * FROM BASE_SYSPARAM
WHERE 1=1
AND name=#{name}
AND id in
<foreach collection="id" item="item" index="index" open="("
parator="," clo=")">
#{item}
</foreach>
</lect>
将参数直接封装在map中使⽤,直接去map中key的值,#{name}和 collection=“id”
直接放进map中对应的key。
3 接⼝中传⼊参数的各种情况
3.1 当只有⼀个参数时
使⽤arg0,param1获得参数是⼀直有效的,但是个⼈不推荐这样做,毕竟看起来不优雅
3.2 参数是基本类型
政审个人自传xml中标签内的变量名可以随便写,#{id},#{name},#{x},,等都可以获得到参数。
free反义词3.3 参数是javabean
xml中标签内直接填写Javabean中的属性名
3.4 参数是数组
使⽤array获得参数,再⽤foreach循环
3.5 参数是List
使⽤list或collection获得参数,再⽤foreach循环
3.6 参数是Set
使⽤collection获得参数,再⽤foreach循环
3.7 当有多个参数时
使⽤argN、paramN或@param定位到某个参数,再灵活使⽤ognl就ok了。⽐如#{ur.name}、#{urs[0].name}。
4.总结
觉得使⽤注解的⽅式会⽐较⽅便⼀些,⽤注解来简化xml配置的时候,@Param注解的作⽤是给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传⼊sql语句中 。
属于个⼈总结,有许多不⾜的地⽅或者那部分有错误请私信我,我将第⼀时间回复和 更改此⽂章,谢谢!