org.springframework.jdbc.BadSqlGrammarException:
### 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 'LIMIT 0,10' at line 21
### The error may exist in cn/edu/sdju/yyh/dao/LinkmanDao.xml
### The error may involve cn.edu.sdju.yyh.dao.LinkmanDao.selectLinkmanList-Inline
### The error occurred while setting parameters
### SQL: SELECT lkm_id, lkm_name, lkm_cust_id, lkm_gender, lkm_phone, lkm_mobile, lkm_email, lkm_qq, lkm_position, lkm_memo FROM linkman l /*多条件查询*/ WHERE /*所属客户*/ LIMIT ?,?
### 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 'LIMIT 0,10' at line 21
; bad SQL grammar []; nested exception is 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 'LIMIT 0,10' at line 21
用ssm框架做毕设——————————————上面是我的报错
这个报错困扰了我整整一天半,难受啊马飞~
下面是我的mapper.xml:
<!--SQL片段 -->
<sql id="selectLinkmanListWhere">
<where>
<if test="lkm_name != null" >
lkm_name like "%"#{lkm_name}"%"
</if>
<if test="lkm_gender != null" >
and lkm_gender = #{lkm_gender}
</if>
/*所属客户*/
<if test="lkm_cust_id != null" >
and lkm_cust_id = #{lkm_cust_id}
</if>
</where>
</sql>
<!-- 查询联系人列表 -->
<select id="selectLinkmanList" parameterType="linkman"
resultType="linkman">
SELECT
lkm_id,
lkm_name,
lkm_cust_id,
lkm_gender,
lkm_phone,
lkm_mobile,
lkm_email,
lkm_qq,
lkm_position,
lkm_memo
FROM
linkman l
/*多条件查询*/
<include refid="selectLinkmanListWhere"/>
<!-- 执行分页查询 -->
<if test="start_index !=null and rows != null">
LIMIT #{start_index},#{rows}
</if>
</select>
我知道你肯定不耐烦了,哈哈~~~
这个错误,大部分人肯定是字段用了mysql的关键字导致的。
你可以先把sql语句去数据库执行一下,重点看字段和表名啊,千万别用mysql关键字。
还有就是limit的参数也别用mysql关键字
而我的问题就有丶秀了,因为爱写注释的好习惯,但我把注释写到了<where></where>标签里面去了,还是/* */这种形式(用的ctrl+shift+/快捷键)
这会导致什么结果呢:无论你<where>中的<if>条件是否成立,mybatis都会给你拼接一个where
只要去掉注释就OK了,或者改用<!-- -->注释。