我的错误之mybatis查询
来源:互联网 发布:js date get 毫秒数 编辑:程序博客网 时间:2024/04/28 08:30
前言
贴出自己的错误,警醒自己!
题外话:【我爱笨媳妇】
错误的背景
我在使用mybatis查询数据库的时候,将增删改查的方法都写好了,然而,增删改一点问题都没有,查询却一直返回空值(null)。我的心里很纳闷,这到底是怎莫回事呢?
在经历了一番排查之后,我觉得一定是mybatis的配置出现问题,问题应该就出在了sql语句之上。后来,上网经过查询,才发现了问题!
解决思路
先来看看我的实体类:
public class User { private String username; private String userpass;}
现在,再来看看我的数据库里面的数据:
问题来了,这里数据库里面的字段和我的实体类的字段其实是不对应的,但是,为何除了查找以外的所有方法均能执行成功,这是我最纳闷的问题!后来,我发现,问题就出在了xml文件的配置上。
UserDao.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.weimob.dao.UserDao"> <select id="getUser" parameterType="com.weimob.model.User" resultType="com.weimob.model.User"> SELECT * FROM user WHERE user_name=#{user_name} AND user_pass=#{user_pass} </select> <insert id="addUser" parameterType="com.weimob.model.User" flushCache="true"> INSERT INTO user (user_name,user_pass) VALUES (#{username},#{userpass}) </insert> <update id="updateUser" parameterType="com.weimob.model.User"> UPDATE user SET user_pass=#{userpass} WHERE user_name=#{username} </update> <delete id="deleteUser" parameterType="com.weimob.model.User"> DELETE FROM user WHERE user_name=#{username} </delete></mapper>
注意看select属性中的resultType属性;这可是很重要的。
其实mybatis默认为我们返回的是一个map,这个map中的键就是数据表的字段,而值就是查询到的值。如果我在这里设置为User类,他会自动赋值,然后新建一个User,但是,由于我的实体类的成员变量和表的字段不符,它找不到setUser_name()方法,所以只能返回null。
但是,也不报错,这真是框架的一个小问题啊!话说回来了,为何别的方法能够顺利执行呢?原来,在更新、查找、删除的时候,只是会从我封装好的user对象里面取值,只用到了get方法,并没有和表的字段产生关系,所以自然就可以执行。
哎,真是粗心大意害死人,看来,在建表和建立实体类的时候,一定多多注意这些细节!下面,是我查找的博客,是不错的参考,也是我解决问题的根据!
mybatis参考资料
总结
这次的错误真的很难查找,但是同时也让我对mybatis的一些配置有了更加深刻的认识,但是,同时我也发现了mybatis这些框架虽然好用,但是有时候会出现一些不经意的错误,所以,大家在实际的开发中,一定要谨慎使用!
- 我的错误之mybatis查询
- mybatis错误之-----in查询 <foreach>循环
- mybatis条件查询容易遇见的错误
- MyBatis高级查询之resultMap的应用
- mybatis之resultMap的关联查询
- spring+springmvc+mybatis之我的理解
- mybatis之高级查询
- mybatis之关联查询
- mybatis之片段查询
- Mybatis学习之查询
- MyBatis之查询缓存
- mybatis错误之BindingException
- 我的JAVA开发之路之SpringBoot+Mybatis
- mybatis的模糊查询
- Mybatis的模糊查询
- Mybatis的模糊查询
- mybatis的模糊查询
- MyBatis 的级联查询
- 嵌入式linux学习-ARM MMU工作原理分析
- 观察者模式
- Introduction to SignalR(SignalR介绍)
- 刀光剑影2
- iOS证书申请和APP上传到apple store
- 我的错误之mybatis查询
- oracle11G 已开启监听,但远程连接依旧无监听解决过程
- Java运算符优先级
- Poj 3057 未AC http://poj.org/showsource?solution_id=15175171
- vax与vay的区别
- android 构建项目bug之 Didn't find class "com.android.tools.fd.runtime.BootstrapApplication"
- Unity3d纹理旋转
- /include/linux/compiler.h 头文件以及sparse语法检查工具
- 刮刮乐