springmvc+mybatis常见错误
2017-05-15 17:22
337 查看
最近因为项目组的需要,又重新开始弄java后台,采用的spring-mvc+mybatis。zookeeper+dubbo分布式服务的框架,由于一段时间没有接触过oracle数据库了,遇到了许多问题,把问题记录下来,避免以后遇到同样的问题又是长时间的找解决方案。
1.Exception: org.apache.ibatis.builder.IncompleteElementException: Could not find result map java.lang.Integer;
这个错误当时看着也有点懵逼,太久没弄,虽然看懂了,但是一直不清楚具体是哪一行的错误,mybatis就这一点有点坑,xml中写错了 也不会报具体的错,后面才发现,我某个select返回int,但是我写的是resultMap,应该是resultType。这里讲一下区别:
MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。
在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。
①当提供的返回类型属性是resultType时,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。所以其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当提供的返回类型属性是resultType的时候,MyBatis对自动的给把对应的值赋给resultType所指定对象的属性。
②当提供的返回类型是resultMap时,因为Map不能很好表示领域模型,就需要自己再进一步的把它转化为对应的对象,这常常在复杂查询中很有作用。
2.mybatis中Date类型的返回。
在bean中我使用的是java.util.Date,然后在mybatis result设置的jdbcType="DATE",发现这样设置以后丢是了时间精度,date的值为2017-05-15 00:00:00,丢失了时间精度,这样的结果我们需不指定jdbcType。
给一篇参考文件
3.关于mybatis中 mapper.xml文件中if语句字符串匹配问题
在mybatis中 偶尔会用到字符串匹配传过来的值问题,发现一个问题,
<if test=" name=='你好' ">
<if>
这样是有问题的,是无法正常完成校验的,但是,如果我们把写法改成这样就没问题了。
<if test=' name=="你好" '>
<if>
只是一个单双引号的问题,还有这样一种语法也是可以的。
听说mybatis之后解决了这个问题在3.3.1之后是没问题的,但是如果遇到了,可以采用这种方法。
4.关于分页插件 com.github.pageHelper的使用问题。
我有个页面是需要查询三个sql执行分页的,但是显示出来的数据一直不正确,后面发现了问题,
这个插件它只会对执行的第一条sql使用他的分页原则,所以,如果使用多条sql的话是会有问题的。
5.ie8下不支持透明色的问题
ie 8下设置background:translate 失效问题 需要将背景改为透明的背景图片
background-image: url(images/translate.jpg);
background-repeat: no-repeat;
background-color: transparent;
6.ie8下不支持placeholder属性,实现密码提示框,
实现文字输入框的提示好解决,我们只需要在给它的value设置提示,在它获取焦点时判断是否为默认提示字,如果是则清空,然后在它失去焦点时,判断如果为空就设置value为默认提示。看一看代码
当密码提示框的值不为空而且不等于我们所提示的文字时,置为默认提示。
7.ie11下验证码后加参数为new date()不能正确解析的问题
不知道为什么在ie11下new date()虽然后面会加入时区,但是ie8下完好,ie11下不显示,想了想就改成带随机数了,这里就不多说了,希望有大手能知道原因之后告知,解决方法暂时就先用这个吧。
今天暂时就写到这里吧。后续有问题会同步更新的,希望能和大家共同进步。
1.Exception: org.apache.ibatis.builder.IncompleteElementException: Could not find result map java.lang.Integer;
这个错误当时看着也有点懵逼,太久没弄,虽然看懂了,但是一直不清楚具体是哪一行的错误,mybatis就这一点有点坑,xml中写错了 也不会报具体的错,后面才发现,我某个select返回int,但是我写的是resultMap,应该是resultType。这里讲一下区别:
MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。
在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值。
①当提供的返回类型属性是resultType时,MyBatis会将Map里面的键值对取出赋给resultType所指定的对象对应的属性。所以其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当提供的返回类型属性是resultType的时候,MyBatis对自动的给把对应的值赋给resultType所指定对象的属性。
②当提供的返回类型是resultMap时,因为Map不能很好表示领域模型,就需要自己再进一步的把它转化为对应的对象,这常常在复杂查询中很有作用。
2.mybatis中Date类型的返回。
在bean中我使用的是java.util.Date,然后在mybatis result设置的jdbcType="DATE",发现这样设置以后丢是了时间精度,date的值为2017-05-15 00:00:00,丢失了时间精度,这样的结果我们需不指定jdbcType。
给一篇参考文件
iBatis Date 类型 时分秒丢失(精度丢失)问题
3.关于mybatis中 mapper.xml文件中if语句字符串匹配问题在mybatis中 偶尔会用到字符串匹配传过来的值问题,发现一个问题,
<if test=" name=='你好' ">
<if>
这样是有问题的,是无法正常完成校验的,但是,如果我们把写法改成这样就没问题了。
<if test=' name=="你好" '>
<if>
只是一个单双引号的问题,还有这样一种语法也是可以的。
听说mybatis之后解决了这个问题在3.3.1之后是没问题的,但是如果遇到了,可以采用这种方法。
4.关于分页插件 com.github.pageHelper的使用问题。
我有个页面是需要查询三个sql执行分页的,但是显示出来的数据一直不正确,后面发现了问题,
这个插件它只会对执行的第一条sql使用他的分页原则,所以,如果使用多条sql的话是会有问题的。
5.ie8下不支持透明色的问题
ie 8下设置background:translate 失效问题 需要将背景改为透明的背景图片
background-image: url(images/translate.jpg);
background-repeat: no-repeat;
background-color: transparent;
6.ie8下不支持placeholder属性,实现密码提示框,
实现文字输入框的提示好解决,我们只需要在给它的value设置提示,在它获取焦点时判断是否为默认提示字,如果是则清空,然后在它失去焦点时,判断如果为空就设置value为默认提示。看一看代码
<tr> <td>账号</td> <td><input type="text" value="请输入您的账号" class="admin" /></td> </tr> //js代码 $(".admin").focus(function(){ if($(this).val() == "请输入您的账号"){ $(this).val(""); } }); $(".admin").blur(function(){ if($(this).val() == ""){ $(this).val("请输入您的账号"); } //这样就实现了一种默认提示框的效果,但是密码提示框不同,密码提示框的type="password"是默认显示**的,所以要显示默认提示框的话,我们得玩点黑科技,就是用一个同样的文字输入框去显示,首先需要把密码提示框设置为隐藏,当我们点击文字输入框时,我们清楚文字输入框,并隐藏起来,然后把密码提示框显示,并且把焦点转移到密码提示框上,来,上代码 <tr> <td>密码</td> <td> <input type="text" value="请输入您的密码"id="login_showPwd" /> <input type="password"id="login_password" style="display: none"/> </td> </tr> //js代码 $('#login_showPwd').focus(function(){ var text_value=$(this).val(); if(text_value == this.defaultValue){ $('#login_showPwd').hide(); $('#login_password').show().focus(); } }); $('#login_password').blur(function(){ var text_value = $(this).val(); if(text_value==""){ $('#login_showPwd').show(); $('#login_password').hide(); } });
ie下兼容密码提示框
但是我使用之后发现一个问题,就是ie和chrome下会有密码保存等缓存功能,这会导致我们的密码提示有问题,所以我们需要在onready里面加入判断,当密码提示框的值不为空而且不等于我们所提示的文字时,置为默认提示。
window.onload=function(){
if(text_value != null&&text_value != ''&&text_value != this.defaultValue){ $('#login_showPwd').val(this.defaultValue); }
}
7.ie11下验证码后加参数为new date()不能正确解析的问题
不知道为什么在ie11下new date()虽然后面会加入时区,但是ie8下完好,ie11下不显示,想了想就改成带随机数了,这里就不多说了,希望有大手能知道原因之后告知,解决方法暂时就先用这个吧。
今天暂时就写到这里吧。后续有问题会同步更新的,希望能和大家共同进步。
相关文章推荐
- Spring MVC+Mybatis常见错误及解决
- SpringMVC + Spring + MyBatis 学习笔记:提交数据遭遇日期格式转化报400错误解决方法
- Mybatis 优缺点,配置,使用,结合Spring使用,常见错误,代码自动生成(草稿)
- Java开发常见错误:org.mybatis.spring.MyBatisSystemException
- SpringMVC+Mybatis+Spring整合中org.springframework.beans.factory.BeanCreationException错误分析
- springmvc+mybatis环境搭建遇到的错误
- spring + myBatis 常见错误:SQL语法错误
- springmvc+mybatis+maven项目集成的时候遇到一个问题,项目搭起来以后,http请求怎么都进不到controller中,页面直接返回404错误,控制台没有报任何错误,请大神帮我看看
- springmvc+mybatis+maven项目集成的时候遇到一个问题,项目搭起来以后,http请求怎么都进不到controller中,页面直接返回404错误,控制台没有报任何错误,请大神帮我看看
- SpringMVC + Spring + MyBatis 学习笔记:提交数据遭遇基础类型和日期类型报400错误解决方法
- spring + myBatis 常见错误:注解事务不回滚
- Spring+SpringMVC+MyBatis整合出现的Failed to load ApplicationContext的错误
- SpringMVC + Spring + MyBatis 学习笔记:提交数据遭遇基础类型和日期类型报400错误解决方法
- spring整合mybatis错误:class path resource [config/spring/springmvc.xml] cannot be opened because it does
- maven项目使用springmvc+mybatis 框架页面出现404错误
- SpringMVC + Spring + MyBatis 学习笔记:提交数据遭遇基础类型和日期类型报400错误解决方法
- spring + myBatis 常见错误:@Autowired注解失败
- springMVC+mybatis+spring整合中varchar错误
- springMvc+Mybatis关于 Invalid bound statement (not found):的错误
- SpringMVC+MyBatis 整合遇到错误 Configuration problem: Unable to locate Spring NamespaceHandler for XML