发表于: 2020-02-23 19:19:23
1 1368
整合mybatis遇到的问题 总结和解决办法
遇到的问题
一,在web.xml中<listener-class>标签报红
参考:
https://q.cnblogs.com/q/74982/
解决:改用2.5的版本
答案节选:
Servlet3.0是J2EE6.0规范的一部分,跟随J2EE6.0一起发布,并且Tomcat7.0已经完全支持Servlet3.0 ; 平时,我们一般使用tomcat6.0,是不能够使用servelt3.0的,tomcat6.0还不能支持那些规范; 至于说,为毛线不能使用lintener-class,是因为在web-app_3_0.xsd结构定义文件中,根本就不提倡这些配置,因为Servlet3.0已经支持注解形式;
当时解决了报红的问题。但后来我其他部分调试好了后,改回3.0也没报错。
BeanCreationException
是少依赖的问题,输入mvn dependency:tree
打依赖树:
少了spring-aspects,spring-core等依赖,加上
spring版本统一设置
<properties> <!-- jar 版本设置 -->
<spring.version>4.2.4.RELEASE</spring.version>
</properties>
二,mybatis绑定错误
错误:org.apache.ibatis.binding.BindingException: Invalid bound statement
使用了下面的方法检查,都没有解决。排除了包名不同等低级错误。
http://blog.csdn.net/softwarehe/article/details/8889206
http://ljhzzyx.blog.163.com/blog/static/38380312201412453629988/
又找到了oschina一个人的帖子,有个回答感觉靠谱
http://www.oschina.net/question/113302_228910
是的,是没有在pom.xml配置build包含 xml,导致target目录下没有userMapper.xml -by 唐小明生
我一看自己的target目录,发现还真是少mapper.xml文件
我想到了两种解决方案:
方案一:自定义一个插件,绑定某个生命周期,比如compile,然后插件目标的功能是将源码包下的xml文件copy到相应的输出目录。(现有插件是否有已有这个功能,通过简单的配置就能完成?我还不清楚)
方案二:在maven工程的src/main/resource目录下建和mapper接口类相应的包,将每个mapper.xml存在这里
这里我插件玩的不熟,所以没办法,只能手动在resources目录下建包,把每个mapper.xml手动粘贴进去
三,请求参数乱码问题
在web.xml添加post乱码filter
对于get请求中文参数出现乱码解决方法有两个:
修改tomcat配置文件添加编码与工程编码一致,如下:
<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
另外一种方法对参数进行重新编码:
String userName = new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")
ISO8859-1是tomcat默认编码,需要将tomcat编码后的内容按utf-8编码
四,json格式数据问题
1.请求是json格式
debug窗里报下面的错误:
org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/json;charset=UTF-8' not supported
浏览器报下面的错误:
HTTP Status 415 -
anddescription The server refused this request because the request entity is in a format not supported by the requested resource for the requested method.
2.请求是key/value格式
debug窗里报下面的错误:
java.lang.IllegalArgumentException: No converter found for return value of type: class com.iot.learnssm.firstssm.po.ItemsCustom
参考
http://stackoverflow.com/questions/32905917/how-to-return-json-data-from-spring-controller-using-responsebody
多加一个依赖jackson-databind
(之前只加了jackson-mapper-asl
的依赖, 间接依赖jackson-core-asl
,但还不够。
还有一些不影响运行的问题
参数绑定配置问题
在自定义参数绑定时,spring.xml的配置如下:
其中<list>
标签会报红,但不影响运行。去掉<list>
标签,也可以运行成功。原因我还不知道,以后阅读源码会研究下这个问题。
今日问题 暂无
评论