发表于: 2020-02-23 19:19:23

1 1366


整合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>标签,也可以运行成功。原因我还不知道,以后阅读源码会研究下这个问题。


今日问题 暂无






返回列表 返回列表
评论

    分享到