1、问题描述,修改权限总是修改不了,type值
程序报错提示:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'where id = 25' at line 1
自己的解决方式:
通过查找发现可能是type是sql关键字引发的问题,但是用转意符 `type` 转意后还是报错
下载源码jar包 mybatis 但是调试时断点都打了(进入断点的方式是按住ctrl+方法名),就是没有进入我们的断点源码,加载不到,实际上我们通过Edit Source Lookup Path 加载了jar包的源码 External Archive 然后add
后来担心是mysql版本驱动问题,点击项目build Path -->configure build Path
---> Maven Dependencies --> mysql-connector-java-5.1.23.jar
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.23</version>
</dependency>
修改版本号,保存。 <version>5.1.25</version>,从新下载依赖包。但是还是报错,没有用!!!!
现在说说关于进不了源码的问题:
public int update(CmsUser user) {
return this.update(UPDATE, user);
}
点击ctrl+方法名进入的不是我们要的方法,eclipse向导错误,
应该点击this查看具体的实现类。点击this 查看里面的 sqlMapClient,这里面才是我们正确要找的源代码的出处。
对于我们现在的项目为例:
在sql.xml为什么能被成功操作我们数据库呢,以及sql.xml里面那些标签式文档如何被解析的呢。
1、mysql-connector-java-5.1.23.jar 这个jar包是mysql的驱动,是连接我们硬件与程序的驱动。
2、mybatis-3.2.2.jar是解析我们的sql.xml成机器识别的sql语句的一个中间封装程序。
在我们的xml文档中
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
通过上面我们可以知道我们的xml文档是使用的
http://ibatis.apache.org/dtd/sql-map-2.dtd规范进行编写我们的xml的
具体的规范我们可以去官网
http://ibatis.apache.org/dtd 进行查看。
好了写了这么多,这个问题的最后解决办法是我没遵守文档的规范(明白java是面向对象的,所以即使是xml的标签的使用,其实都是对应着一些封装了的java bean 对象),我不明白这些规则,自己多加了一些对象没有的属性,造成sql解析时语法错误!!
<update id="update" parameterClass="CmsUser" resultClass="int">
update <include refid="tableName"/>
<include refid="updateSet"/>
</update>
因为update 对应的是没有
resultClass="int" 这个属性的,区别于<select>标签(select是有的),这些具体的东西还是多去官网看看为好。