一、单个参数
public List<XXBean> getXXBeanList(@param("id")String id);
<select id="getXXXBeanList" parameterType="java.lang.String" resultType="XXBean">
select t.* from tableName t where t.id= #{id}
</select>
- 方法名和ID一致
- #{}中的参数名与方法中的参数名一致, 这里采用的是@Param这个参数,实际上@Param这个最后会被Mabatis封装为map类型的。
- select 后的字段列表要和bean中的属性名一致, 如果不一致的可以用 as 来补充。
二、多参数
2.1 按注解(推荐)
public List<XXXBean> getXXXBeanList(@Param("id")String id, @Param("code")String code);
<select id="getXXXBeanList" resultType="XXBean">
select t.* from tableName where id = #{id} and name = #{code}
</select>
由于是多参数那么就不能使用parameterType, 这里用@Param来指定哪一个
2.2 按序号
public List<XXXBean> getXXXBeanList(String xxId, String xxCode);
<select id="getXXXBeanList" resultType="XXBean">
select t.* from tableName where id = #{0} and name = #{1}
</select>
由于是多参数那么就不能使用parameterType, 改用#{index}是第几个就用第几个的索引,索引从0开始
2.3 Map封装
public List<XXXBean> getXXXBeanList(HashMap map);
<select id="getXXXBeanList" parameterType="hashmap" resultType="XXBean">
select 字段... from XXX where id=#{xxId} code = #{xxCode}
</select>
其中hashmap是mybatis自己配置好的直接使用就行。
map中key的名字是那个就在#{}使用那个
2.4 List封装in
注意:这里的collection是你集合的字段名。
public List<XXXBean> getXXXBeanList(List<String> list);
<select id="getXXXBeanList" resultType="XXBean">
select 字段... from XXX where id in
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
</select>
foreach 最后的效果是select 字段… from XXX where id in (‘1′,’2′,’3′,’4’)
mybatis接受的参数分为:
• 基本类型
• 对象
• List
• 数组
• Map
<foreach>标签的用法:
- collection:要循环的集合
- index:循环索引
- item:集合中的一个元素(item和collection,按foreach循环理解)
- open:以什么开始
- close:以什么结束
- separator:循环内容之间以什么分隔
2.5 数组
List<User> selectByUserIdList(@Param("userIds")String[] userIds);
注意:这里的collection是你集合的字段名。
<select id="selectByRoleIdList" resultMap="user" >
SELECT * FROM user
<if test="userIds!= null">
where user_id in
<foreach collection="userIds" item="userId" index="index" open="(" separator="," close=")" >
#{userId,jdbcType=INTEGER}
</foreach>
</if>
2.6 selectList()只能传递一个参数,但实际所需参数既要包含String类型,又要包含List类型时的处理方法
将参数放入Map,再取出Map中的List遍历。如下:
List<String> list_3 = new ArrayList<String>();
list.add("1");
list.add("2");
Map<String, Object> map2 = new HashMap<String, Object>();
map.put("list", list); //网址id
map.put("siteTag", "0");//网址类型
<select id="getSysInfo" parameterType="java.util.Map" resultType="SysWeb">
select t.sysSiteId, t.siteName, t1.mzNum as siteTagNum, t1.mzName as siteTag, t.url, t.iconPath from TD_WEB_SYSSITE t left join TD_MZ_MZDY t1 on t1.mzNum = t.siteTag and t1.mzType = 10 WHERE t.siteTag = #{siteTag } and t.sysSiteId not in
<foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</select>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/117207.html