Mybatis传多个参数的五个方法

导读:本篇文章讲解 Mybatis传多个参数的五个方法,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

Mybatis传多个参数的五个方法

一、实体类+@Param注解传参(难点,重点,基本会这个就行了)

在我们拥有多个参数的时候,怎么让传入xml文件的参数,选中我们需要的实体类部分,就需要加入@Param注解,在xml中使用注解里面的值,如下面代码,我在@Param中加入了competitionVo就需要在xml中,点出来,如competitionVo.singerName#{competitionVo.singerName}

Mapper

    Page<Competition> competitionInfoPart(Page page,@Param("competitionVo") CompetitionVo competitionVo);

Mapper.xml(不需要看我的SQL,主要理解@Param注解+实体类的使用)

    <select id="competitionInfoPart" resultMap="info" parameterType="com.zhao.pojo.CompetitionVo">
        select c.*,
               s1.singer_name singer1Name,s2.singer_name singer2Name
        FROM competition c
            INNER JOIN singer s1 on c.singer1_id=s1.singer_id
            INNER JOIN singer s2 on c.singer2_id=s2.singer_id
        where c.deleted = 0
        <if test="competitionVo.singerName!=null">
            and (s1.singer_name like CONCAT('%',#{competitionVo.singerName},'%') or s2.singer_name like CONCAT('%',#{competitionVo.singerName},'%'))
        </if>
        <if test="competitionVo.song!=null">
            and (c.singer2_song like CONCAT('%',#{competitionVo.song},'%') or c.singer1_song like CONCAT('%',#{competitionVo.song},'%') )
        </if>
        <if test="competitionVo.status!=null">
            and (c.competition_state = #{competitionVo.status} or c.competition_state = #{competitionVo.status})
        </if>
        order by c.competition_id desc
    </select>

二、实体类传参(重点,经常使用

Mapper

User selectUser(User user);

Mapper.xml

<select id="selectUser" parameterType="com.zhao.User" resultType="com.zhao.User">
    select * from user
    where user_name = #{userName} and id = #{id}
</select>

三、@Param传参(重点

基本类型(int、String…)这样的不需要写 parameterType 写也可以

Mapper

User selectUser(@Param("userName") String name, @Param("id") int id);

Mapper.xml

<select id="selectUser"  resultType="com.zhao.User">
    select * from user
    where user_name = #{userName} and id = #{id}
</select>

四、顺序传参(不建议)

Mapper

User selectUser(String name, int id);

Mapper.xml

<select id="selectUser"  resultType="com.zhao.User">
    select * from user
    where user_name = #{name} and id = #{id}
</select>

五、Map传参(不常用)

Mapper

User selectUser(Map<String, Object> user);

Mapper.xml

<select id="selectUser" parameterType="Map" resultType="com.zhao.User">
    select * from user
    where user_name = #{name} and id = #{id}
</select>

参考:Mybatis传递多个参数的4种方式(干货)

解决BindingException: Parameter ‘name‘ not found. Available parameters are [xxxx, param1, param2]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/74749.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!