SSM模式模糊查询和Expected one result (or null) to be returned by selectOne(), but found: 2

每周一语:因为淋过最大的雨,所以总想为别人撑伞。

模糊查询

经典案例:
Controller

  //根据歌名查询
    @RequestMapping("/queryByNameMusic")
    public String queryByNameMusic(String queryMusicName, Model model) {
        Musics musics = (Musics) musicService.queryByNameMusic(queryMusicName);
        List<Musics> list = new ArrayList<Musics>();
        list.add(musics);
        System.out.println(list);
        if (musics ==null) {
            list = musicService.queryAllMusic();
            model.addAttribute("error", "没有查到啥东西!!!");
        }

        model.addAttribute("list", list);
        return "allMusic.jsp";

Dao层

   //根据歌名查询
    Musics queryByNameMusic(String mcName);

impl层

//根据歌名模糊查询
    @Override
    public Musics queryByNameMusic(String mcName) {
       return musicMapper.queryByNameMusic(mcName);
    }

service层

   //根据歌名模糊查询
    Musics queryByNameMusic(String mcName);

Mapper层

  <!--    根据歌曲名字模糊查找-->
    <select id="queryByNameMusic" resultType="Musics">
        select *
        from musics
        where mcName = #{mcName};
    </select>

  • 输入查询名称,输出一个结果!

    当数据增多时,会出现这个错

Expected one result (or null) to be returned by selectOne(), but found: 2
大概意思是,只能输出一个数据而你查到了多个数据。
、、
、、
- 完善后的模糊查询

Controller

 //根据歌名查询
    @ApiOperation("模糊查询")
    @GetMapping ("/queryByNameMusic")
    public String queryByNameMusic(String queryMusicName, Model model) {
        List<Musics> list=musicService.queryByNameMusic(queryMusicName);
        System.out.println(list);
//        if (list ==null) {
//            list = musicService.queryAllMusic();
//            model.addAttribute("error", "没有查到啥东西!!!");
//        }
        model.addAttribute("list", list);
        return "allMusic.jsp";
    }

Dao层

 //根据歌名查询
    List<Musics> queryByNameMusic(String mcName);

impl层

    //根据歌名模糊查询
    @Override
    public List<Musics> queryByNameMusic(String mcName) {
        return  musicMapper.queryByNameMusic(mcName);
    }

service层

  //根据歌名模糊查询
    List<Musics> queryByNameMusic(String mcName);
}


Mapper层

<select id="queryByNameMusic" resultType="Musics">
    select * from musics where mcName  like CONCAT('%',#{mcName},'%') ;
</select>
  • 至此,较完善的模糊查询到此结束。
  • 赶时间的话到此为止,有空了可以往下聊聊

*为什么会报这个错,为什么要这样该
一:了解sql语句,sql语句的用法实在太多,例如本文中:

  • select * from musics where mcName = #{mcName};
  • select * from musics where mcName like CONCAT(’%’,#{mcName},’%’) ;
  • 其实不需要太多的解释,看到效果你应该就明白了,主要还是记忆!

二:了解List的基本知识

  • list中添加,获取,删除元素;
    list中是否包含某个元素;
    list中根据索引将元素数值改变(替换);
    list中查看(判断)元素的索引;
    根据元素索引位置进行的判断;
    利用list中索引位置重新生成一个新的list(截取集合);
    判断list是否为空;
    返回Iterator集合对象;
    将集合转换为字符串;
    将集合转换为数组;
    去重复;
  • 在实践中去认识它们
  • 其次,是controller处差别最大
 List<Musics> list = new ArrayList<Musics>();
        list.add(musics);

这就是错误的根源,我们从数据库中获取数据本就是一个List集合,我们继续封装可以看成把一个个数据进行单独处理(我大概是这样理解的,欢迎指正!)最后输出一个,但是作为用户这不是他们希望看到的
、、
、、

今年考的满意了
就和我正儿八经的畅聊一次把
高考加油!你这格格不入的家伙

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值