public User selectUser(String name,String account);
对应的 xml:
<select id="selectUser" resultMap="ResultMap">
select * from user
where name = #{0}
and account = #{1}
</select>
#{0}代表接收的是 dao 层中的第一个参数,#{1}代表 dao 层中第二参数,更多参数一直往后加即可。
user selectuser(@param(“name”) string name,
@param(“account”) string account);
然后,就可以在 xml 像下面这样使用(推荐封装为一个 map,作为单个参数传递给
mapper):
<select id=”selectuser” resulttype=”user”>
select id, name, account from user
<where>
<if test="name != null and name != '' ">and name = #{name}</if>
<if test="account != null and account != '' ">and account = #{account}</if>
</where>
</select>
由于我们的参数超过了两个,而方法中只有一个 Object 参数收集,因此我们可以使用 Map 集合来装载我们的参数
Map < String, Object > map = new HashMap();
map.put("name", name);
map.put("account", account);
//mapper方法
List<user> getUserList(@Param("params")Map<String,Object> params);
对应xml
<select id=”getUserList” resulttype=”user”>
select id, name, account from user
<where>
<if test="params.name != null and params.name != '' ">and name = #{params.name}</if>
<if test="params.account != null and params.account != '' ">and account = #{params.account}</if>
</where>
</select>
也可以 Map对象但不加@Param注释,则对应xml
<select id=”getUserList” resulttype=”user”>
select id, name, account from user
<where>
<if test="name != null and name != '' ">and name = #{name}</if>
<if test="account != null and account != '' ">and account = #{account}</if>
</where>
</select>
list作为参数:
<!--List:forech中的collection属性类型是List,collection的值必须是:list,item的值可以随意,Dao接口中参数名字随意 -->
<select id="getList" resultType="user">
select *
from user u
where u.id in
<foreach collection="list" item="userId" index="index" open="(" close=")" separator=",">
#{userId}
</foreach>
</select>