@Mybatis传多个参数

时间:2023-03-09 00:23:29
@Mybatis传多个参数

首选还是按照面向对象的方式执行sql。但是有时候入参对象嵌套的比较深,类中有类,面向对象就不太好处理了

主要有以下两种方式

1.DAO层的函数方法

public User selectUser(String name,String area); 

对应的mapper.xml文件

<select id="selectUser" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List" />
FROM tb_user
WHERE user_name = #{0} AND user_area=#{1}
</select>

其中,#{0}代表接收的是dao层中的第一个参数,#{1}代表dao层中第二参数,更多参数一致往后加即可。

2.此方法采用Map传多参数(推荐!)
Dao层的函数方法

public User selectUser(Map<String,Object> paramMap);

对应的mapper.xml文件

<select id="selectUser" parameterType="java.util.Map" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List" />
FROM tb_user
WHERE user_name = #{userName,jdbcType=VARCHAR}
AND user_area=#{userArea,jdbcType=VARCHAR}
</select>

Service层调用

private User SelectUser(){
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("userName",xxx);
paramMap.put("userArea",xxx);
User user=xxx.selectUser(paramMap);
return user;
}