2 qq 28930619 qq_28930619 于 2018.05.16 19:37 提问

ssm pageheleper 模糊查询语句出错 20C

@RequestMapping("mohu")
public String mohuchaxun(@RequestParam(value="pn",defaultValue="1")Integer pn,Model model,books bk){
//从第一条开始 每页查询五条数据
PageHelper.startPage(pn, 3);
List users = userService.mohu(bk);

    System.out.println("测试集合有没有获取到数据"+bk.getBookuser());

        System.out.println("大小"+users.size());



    //将用户信息放入PageInfo对象里
    PageInfo page1 = new PageInfo(users,7);
    model.addAttribute("pageInfo2", page1);
    return "mohu";
}
    -----------------------------------------------------------------controller

    <select id="mohu" parameterType="books" resultType="books">
    select * from
    books where bookuser LIKE '%' #{bookuser} '%'
</select>

-------------------------------------------------------------------dao.xml


  <c:forEach items="${pageInfo2.list }" var="user">
                    <tr>
                    <td>${user.bid}</td>
                    <td>${user.bookuser }</td>
                        <td>${user.booktype }</td>
                          <td><img src="${user.bookimg}" width="200" height="100" ></td>
                        <!-- 
                        <td><img src="${user.bookimg}" width="200" height="300" ></td>
                         -->
                        <!-- <td><a  class="edit">编辑</a> <a
                             class="delete">删除</a></td> -->

                    </tr>
                </c:forEach>
            </table>
        </div>
    </div>

    <hr style="height:1px;border:none;border-top:1px solid #ccc;" />
    <!-- 分页导航栏 -->

    <!-- 分页信息 -->
    <div class="row">
        <!-- 分页文字信息,其中分页信息都封装在pageInfo中 -->
        <div class="col-md-6">
            当前第:${pageInfo2.pageNum}页,总共:${pageInfo2.pages}页,总共:${pageInfo2.total}条记录
        </div>

    <!-- 分页条 -->
        <div class="col-md-6">
            <nav aria-label="Page navigation">
              <ul class="hvtulli"  style="list-style-type:none"> 
                <li><a href="${path}/user/mohu?pn=1">首页</a></li>
                <c:if test="${pageInfo2.hasPreviousPage }">
                     <li>
                      <a href="${path}/user/mohu?pn=${pageInfo2.pageNum-1}" aria-label="Previous">
                        <span aria-hidden="true">上一页</span>
                      </a>
                    </li>
                </c:if>

                <c:forEach items="${pageInfo2.navigatepageNums }" var="page_Num">
                    <c:if test="${page_Num == pageInfo2.pageNum }">
                        <li class="active"><a href="#">${ page_Num}</a></li>
                    </c:if>
                    <c:if test="${page_Num != pageInfo2.pageNum }">
                        <li><a href="${path}/user/mohu?pn=${ page_Num}">${ page_Num}</a></li>
                    </c:if>
                </c:forEach> 
                <c:if test="${pageInfo2.hasNextPage }"><a href="${path}/user/mohu?pn=${pageInfo2.pageNum+1}" aria-label="Next">下一页
                      </a>

                </c:if>   
                <a href="${path}/user/mohu?pn=${pageInfo2.pages}">末页</a> 

-----------------------------------------------------------jsp
普通的查询这样都可以做到。 但是这个模糊查询,点击首页或者末页就会报错,
Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'null '%') tmp_count' at line 2

The error may exist in com/ssm/dao/Userdao.xml

The error may involve com.ssm.dao.Userdao.mohu-Inline

The error occurred while setting parameters

SQL: select count(0) from (select * from books where bookuser LIKE '%' ? '%') tmp_count

知道是sql的错误, 请大神帮我看看怎么办。 我是初学者。

7个回答

weixin_40420163
weixin_40420163   2018.05.16 19:47
weixin_42225175
weixin_42225175 不错
11 天之前 回复
weixin_41777664
weixin_41777664 涛高生了
11 天之前 回复
qq_28930619
qq_28930619 我第一次能查到, 点击换页的时候出错。 貌似不是那些问题
11 天之前 回复
metaldong
metaldong   2018.05.16 21:05

模糊查询要使用CONCAT函数连接%与变量

ilifetree
ilifetree   2018.05.17 08:09
a718089112
a718089112   2018.05.17 09:03

sql改一下:

select * from books where bookuser LIKE CONCAT('%', #{bookuser}, '%')

weixin_39747320
weixin_39747320   2018.05.17 11:43

把sql改一下应该可以:select * from books where bookuser LIKE CONCAT('%', #{bookuser}, '%')
试一试吧

max_liuaijun
max_liuaijun   2018.05.17 14:50

select * from books where bookuser LIKE '%'||#{bookuser}||'%' 这样也可以

qq_37466787
qq_37466787   2018.05.18 16:56

parameterType="books" 是否进行了注入 ,或者改为 parameterType="hashmap"试一下

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!