mybatis多类型传参
2022-04-01 本文已影响0人
_花
第一种
mapper
/**
* 查询满足的list集合
* @param name
* @param salary
* @return list
*/
List<Emp> findByNameOrSalary(@Param("myname") String name,@Param("mysalary") Integer salary);
mapper.xml
<!--根据名字或工资查询对象-->
<select id="findByNameOrSalary" resultType="com.example.domain.Emp">
select * from emp where name = #{myname} or salary = #{mysalary}
</select>
结论:多个简单类型的参数传递时,当使用了@Param命名后,例如@Param(“myname”),在mapper文件中,使用#{命名参数},例如 #{myname}
第二种 利用对象传参
mapper
/**
* 根据对象中保存的属性查询emp对象
* @param emp
* @return
*/
List<Emp> findByEmp(Emp emp);
mapper.xml
<select id="findByEmp" resultType="com.example.domain.Emp" parameterType="com.example.domain.Emp">
select * from emp where name = #{name} or salary=#{salary} or job_id = #{job_id}
</select>
结论:一个java对象作为方法的参数,使用对象的属性作为参数值使用。简单的语法:#{属性名},mybatis调用此属性的getXxx()方法获取属性值
第三种 使用Map
mapper
/**
* 使用map作为参数
* @param map
* @return list
*/
List<Emp> selectByMap(Map<String,Object> map);
mapper.xml
<select id="selectByMap" parameterType="map" resultType="com.example.domain.Emp">
select * from emp where name=#{myname} or salary <![CDATA[<]]> #{mysalary}
</select>