ssm框架中模糊查询与select条件查询组成的多条件查询

ssm框架中模糊查询与select条件查询组成的多条件查询

这里以,模糊查询(视频名字) + select条件查询(讲师名字),为例。

一、编写查询条件实体类

将查询的条件封装成实体类。

//get、set、constructor、toString
public class QueryVo {
    //模糊查询传入的是名字字符
    private String videoQueryName;
    //select条件 查询与传输 实际是使用的是id,但是前端传到控制器的都是json字符串,所以用String更好。
    private String speakerQueryId;
}

二、编写dao、service

在查询方法的形参列表中加入QueryVo对象,如:

List<Video> selectAllVideo(QueryVo queryVo);

三、编写sql语句

在mapper.xml文件中编写sql语句。

<select id="selectAllVideo" resultMap="自定义的ResultMap" resultType="QueryVo类的全限定类名">
  select video.id, video.title, video.detail, speaker.speaker_name, video.play_num
  from video, speaker
  <!--这里的video.spearker_id与speaker.id属于连表查询。
	即,通过video.spearker_id查到speaker.speaker_name-->
  where video.spearker_id = speaker.id 
    <!--编写动态sql部分-->
    <trim>
        <if test="videoQueryName != null and videoQueryName !=''">
			<!--使用concat:连接,连接模糊查询条件-->
            and title like concat ('%', #{videoQueryName}, '%')
        </if>
        <if test="speakerQueryId != null and speakerQueryId !=''">
            and speaker_id = #{speakerQueryId}
        </if>
    </trim>
</select>

四、编写controller

@RequestMapping("list")
	//将查询条件封装成一个对象,当做方法参数传入
    public String selectAllVideo(Model model, QueryVo queryVo){

        //在model对象中添加查询条件
        model.addAttribute("queryVo", queryVo);
		//此时输出的是页面传入的查询条件,即,模糊查询(视频名字) + select条件查询(讲师名字)。
        System.out.println(queryVo);

        //查出数据
        List<Video> videos = videoService.selectAllVideo(queryVo);
        //在model对象中添加视频信息
        model.addAttribute("videos", videos);

        //查询所有讲师
        List<Speaker> speakerList = speakerService.selectAllSpeaker();
        //在model对象中添加讲师
        model.addAttribute("speakerList", speakerList);

        return "/WEB-INF/jsp/behind/videoList.jsp";
}

五、编写form表单

如果页面传参乱码,在web.xml中设置过滤器。

<form action="/controller名/方法名" method="post">
    模糊查询:<input type="text" name="videoQueryName"><br>

    讲师名称:<select name="speakerQueryId">
    			<!--第一个值为默认值,是空字符-->
                <option value="">请选择讲师</option>
    			<!--遍历查出的讲师信息-->
                <c:forEach items="${speakerList}" var="speaker">
                    <!--在页面展示讲师名字,传到后台的是讲师id-->
                    <option value="${speaker.id}">${speaker.speakerName}</option>
                </c:forEach>
             </select><br>
    
    <input type="submit" value="提交">
</form>
展开阅读全文
©️2020 CSDN 皮肤主题: 1024 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值