原创不易,转发请注明出处https://blog.csdn.net/weixin_43330377/article/details/109990062
废话:
我发现,对于刚开始学mybatis的人,最让人头疼的不是SQL的使用,而是数据库配置问题。
这些内容通常是一些既定的规则,老师只告诉我们copy某个规则,然后Edit相关的内容。
在我最开始学习的时候,往往这块最容易出错。
有一次我一晚上加一上午。数据库才配置成功。
简直把人逼疯啊。
但当我上机考试的时候又出现了同样的问题,以至于我在数据库配置问题耗费了大量的时间,结果依旧没有解决。我打开以前的项目,才完成了考试。
让我百思不得其解,明明是直接复制的啊!
数据库的连接问题成了我最大的心病,每次运行时候,都会提心吊胆。
于是我开始使用各种mybatis插件,但插件再好用,毕竟没办法解决最根本的问题。
于是我又一次开始寻找错误。
关于mybatis新人配置数据库问题
一、以下是我遇到的一些错误:
首先,我建议使用高版本的 jar包如:
mysql-connector-java-8.0.21.jar
下载地址: https://dev.mysql.com/downloads/connector/j/
Select Operating System:latform Independent 选择 操作系统选择独立于平台 即可。
可能是心理作用,但应该可以减少兼容性的问题,毕竟新人学习一般软件环境都是下新版而非旧版。
注意:修改之后一定要记得保存更新!不然可能运行的还是原来的程序。有时候试着重新启动项目,一些莫名其妙的问题也就解决了。
情况一:缺少JAR包
出现 Error building SqlSession的错误首先检查是否导入数据库连接驱动的JAR包,并且是否Build Path!!!
并且win+r输入services.msc
查看数据库是否在运行
这个错误尽管非常低级,但依旧会有很多人犯。
情况二:数据池配置(连接信息到核心配置文件中)
mysql-connector-java-8.0.21:
<environments default="default">
<environment id="default">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC" />
<property name="username" value="root" />
<property name="password" value="123" />
</dataSource>
</environment>
</environments>
3306/后面添自己数据库的名字.
之前我copy的一直是从前的项目,数据库名字都一样,直到有一次我复制了别人的配置文件,告诉我找不到“XXX”,我思考半天,才反应过来是这个地方写错了。
mysql-connector-java-5.x.x
<environments default="default">
<environment id="default">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/ssm" />
<property name="username" value="root" />
<property name="password" value="123" />
</dataSource>
</environment>
</environments>
不同之处
需要留意的是:
localhost:3306/ssm中ssm是否替换成自己的数据库名字。
其中localhost:3306也可能不同,具体的根据数据库账户而定,不过新人应该一般不会去改这个吧。说多了,反倒更容易错
username,password是否都是自己的
此处错误信息:
url:
org.apache.ibatis.exceptions.PersistenceException: Error updating
database. Cause: java.sql.SQLSyntaxErrorException: Unknown database
‘ss’ Cause: java.sql.SQLSyntaxErrorException: Unknown database ‘ss’
username:
org.apache.ibatis.exceptions.PersistenceException:
Error updating database. Cause: java.sql.SQLException: Access denied
for user ‘rot’@‘localhost’ (using password: YES) Cause:
java.sql.SQLException: Access denied for user ‘rot’@‘localhost’ (using
password: YES)
password:
org.apache.ibatis.exceptions.PersistenceException:
Error updating database. Cause: java.sql.SQLException: Access denied
for user ‘root’@‘localhost’ (using password: YES) Cause:
java.sql.SQLException: Access denied for user ‘root’@‘localhost’
(using password: YES)
还有注意标签等是否正确,不过这个应该很少出错,毕竟都是直接copy
情况三:包名路径
<typeAliases>
<package name="com.vo"/>
</typeAliases>
--------------------------------
<mappers>
<package name="com.mapper"/>
</mappers>
package name 是否正确。
typeAliases 置于最前,mappers置于最后。
且在Mapper.xml中,namespace必须写全路径。按Ctrl且左击鼠标,是否可以点进去,若可以则正确。
若是:
<mappers>
<mapper resource="com/pojo/EmpMapper.xml"/>
</mappers>
也要注意路径,不过这种情况下Mapper.xml中,namespace要求就没有那么严格了。确保唯一即可。
此处错误信息:
org.apache.ibatis.binding.BindingException: Type interface
com.mapper.StudentMapper is not known to the MapperRegistry. at
org.apache.ibatis.binding.MapperRegistry.getMapper(MapperRegistry.java:47)
at
org.apache.ibatis.session.Configuration.getMapper(Configuration.java:655)
情况四:DTD约束
首先:一定要记得,将约束加进去!!!
window->Preferences->XML Calalog
约束地址分别与PUBLIC 后相对应 选择public ID
mybatis-config.xml
Mapper.xml
约束别添加反,mapper是mapper,config里面是config
Mapper.xml
mybatis-config.xml
此处错误信息:
Error building SqlSession. Cause:
org.apache.ibatis.builder.BuilderException: Error creating document
instance. Cause: org.xml.sax.SAXParseException; lineNumber: 3;
columnNumber: 16; 文档根元素 “configuration” 必须匹配 DOCTYPE 根 “null”。
情况五:JDK版本问题
博主今年上大三,我发现关于如何引用project的问题还有很多人都不清楚。
因为往往会产生如下图的红X。
首先检查JAR包是否,且进行build ,若依旧全红,那可能就是JDK版本的问题了
右击你的项目——>properties
把这个版本的jdk删掉,点击remove
记得点击APPLY
二、 学会自己检查错误
总结的再多,总归是别人的错误,错误的出现总是千奇百怪,每个人会遇到不同的错误,学会检查错误并解决才是最有效的方法。
通常来说,我都看这两个方面
一个是JUnit的报错
一个是日志(一般参数传值问题看这个)
这两个看懂,首先就可以分析出较为具体的错误,根据具体的错误寻找解决办法,总比大海捞针似的搜索要简单吧!
看不懂英文,拿百度翻译就好了!换成中文之后,错误是很容易找到的!
无视我这个低级错误,sql语句有问题,因为之前改了 一下数据库表的属性,但是mapper.xml中SQL语句忘改了
运行成功: