第一种=======================================================:
在Mapper接口中的方法定义:
public List<Emp> getEmpsByTerms(int empid,String empname,int depid,String depname);
对于对应的mapper.xml
<select id="getEmpsByTerms" resultMap="empResult">
<![CDATA[select * from emp e join dep d on e.depid = d.depid
where e.empid = #{param1} or e.empname = #{param2} or d.depid = #{param3}
or d.depname = #{param4}]]>
</select>
如果是这样的话,mybatis会以empid,empname,depid,depname的顺序传入到#{param1},#{param2},#{param3},#{param4}
第二种=======================================================:
在Mapper接口中的方法:
public List<Emp> getEmpsByTerms(@Param("empid")int empid,@Param("empname")String empname,@Param("depid")int depid,@Param("depname")String depname);
对于对应的mapper.xml
<select id="getEmpsByTerms" resultMap="empResult">
<![CDATA[select * from emp e join dep d on e.depid = d.depid
where e.empid = ${empid} or e.empname = ${empname} or d.depid = ${depid}
or d.depname = ${depname}]]>
</select>
如果是使用注解@Param来使用的话,那么在mapper.xml中使用${..}来使用参数
第三种=======================================================:
在mapper接口中的方法:
public List<Emp> getEmpsByTerms(Map terms);
对于对应的mapper.xml
<select id="getEmpsByTerms" parameterType="java.util.Map" resultMap="empResult">
<![CDATA[select * from emp e join dep d on e.depid = d.depid where e.empid = ${empid} or d.depid = ${depid} ]]>
</select>
如果是使用map作为参数,那么使用${map的key}来作为传入参数
第四种=======================================================:
在mapper接口中的方法(传入的是一个对象):
public List<Emp> getEmpsByTerms(Emp emp);
对应的mapper.xml文件
<select id="getEmpsByTerms" parameterType="Emp" resultType="Emp">
<![CDATA[select * from emp e where e.empid = #{empid} or e.empname= #{empname} ]]>
</select>
注意:在使用${..}和#{..}的时候要注意一下,以上述第四种方法为例,
如果是使用#{..} ,那么sql语句应该是:
select * from emp e where e.empid = #{empid} or e.empname= #{empname}
但是如果是使用${...},那么sql语句应该是:
select * from emp e where e.empid = ${empid} or e.empname= ‘${empname}’
因为是字符串,所以要加上引号