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>
上一篇下一篇

猜你喜欢

热点阅读