mybatis传递参数

来源:互联网 发布:sql select 多个表 编辑:程序博客网 时间:2024/06/05 14:42

第一种=======================================================

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}’  

 

因为是字符串,所以要加上引号

0 0
原创粉丝点击