Mybatis查询时数据丢失的问题及解决
目录
- Mybatis查询时数据丢失
- 经过排查得出结论
- 解决办法
- Mybatis查询部分字段漏查问题(mysql)
Mybatis查询时数据丢失
公司里的实体类和mapper文件均由mybatis逆向工程生成
之前使用myabtis查询时直接使用注解@select(......)时遇到了一个问题。
结果显示数据库查询没有问题,但是有的数据缺没有插入到指定的字段中,如下图中ID成功存储,Z40_ID,Z40_103到Z40_113均失败。
经过排查得出结论
如果数据库命名很规范比如user_name,用逆向插件生成实体类时该字段会自动转换为userName
但是如果数据库命名形式为:字母(含数字)_字母(含数字)这种情况,自动映射就会失效,就会发生部分数据没有set到指定属性下;
解决办法
对于一些命名不规范的列需要加上注解手动映射
或者直接在mapper.xml文件里用xml方式写sql语句,一般逆向工程都自动生成列的映射规范了;
Mybatis查询部分字段漏查问题(mysql)
select xx1字段 xx2字段 xx3字段 from A表 where 条件
在查询的时候出现xx1字段的值和xx2的,xx3没出来,
1.(数据库字段是否有值?若无加一下值重启再试一下)
2.将sql语句放到SQLyog 或者Navicat for MySQL 等mysql工具进行查询,先确保语句得出结果没有问题23.3
3.若此时无问题,大部分因为数据库字段使用了一些敏感的外键字段,可适当修改一下这些健的名称
(记得对应实体类,mybatis语句也要跟着修改)数据库加入数据值 保存,重新启动程序.
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
MyBatis查询数据,赋值给List集合时,数据缺少的问题及解决
目录 MyBatis查询数据赋值给List集合数据缺少 解决办法 Mybatis查询时数据丢失的问题 经过排查得出结论 解决办法 MyBatis查询数据赋值给List集合数据缺少 今天在使用MyBatis查询数据时,发现查出来的数据和List集合的大小不一致,如下图所示,Total为3,但是list集合size为2. List<ArticleCommentToShow> commentsByArticleId = articleCommentService.getCommentsByArt
-
MyBatis实现两种查询树形数据的方法详解(嵌套结果集和递归查询)
目录 方法一:使用嵌套结果集实现 1,准备工作 2,实现代码 方法二:使用递归查询实现 树形结构数据在开发中十分常见,比如:菜单数.组织树, 利用 MyBatis 提供嵌套查询功能可以很方便地实现这个功能需求.而其具体地实现方法又有两种,下面分别通过样例进行演示. 方法一:使用嵌套结果集实现 1,准备工作 (1)假设我们有如下一张菜单表 menu,其中子菜单通过 parendId 与父菜单的 id 进行关联: (2)对应的实体类如下: @Setter @Getter public class M
-
mybatis查询到了数据,但是实体类个别字段为null问题
目录 mybatis查询数据,实体类个别字段为null 最终的最终发现 查询的数据中有几个列为null 封装不上 sql语句查询存在的列显示不存在 问题 数据 小结一下 mybatis查询数据,实体类个别字段为null 今天在做一个简单的查询操作时遇到的坑,折腾了好久好久,有必要记录一下本菜鸡的心理活动 debug单步执行发现查询之后有几个字段没有映射成功,依然为null 而控制台打印的sql语句确实拿到了 想着是不是实体类里面的字段命名不一致,瞪大狗眼看了一万遍也没发现有啥不一样. 又试着在s
-
mybatis实现mapper配置并查询数据的思路详解
mapper开发 开发规范: 2.mapper.java接口中的方法名和mapper.xml中statement的id一致 3.mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致. 4.mapper.java接口中的方法返回值类型和mapper.xml中statement的resultType指定的类型一致. 首先创建一个entity 创建mapper文件: 创建实现: 创建mapper映射文件: 最后在sqlCon
-
mybatis查询数据赋值到model里面为空的解决
目录 查询数据赋值到model里为空 查询无数据的时候问题 查询数据赋值到model里为空 因为数据多所以在查询中使用分页,但是发现直接执行sql语句是可以获取到数据,而list里面却是空的 <select id="list" resultType="DaliyDO"> select a1.* from ( select id ,rownum from dua
-
Mybatis查询时数据丢失的问题及解决
目录 Mybatis查询时数据丢失 经过排查得出结论 解决办法 Mybatis查询部分字段漏查问题(mysql) Mybatis查询时数据丢失 公司里的实体类和mapper文件均由mybatis逆向工程生成 之前使用myabtis查询时直接使用注解@select(......)时遇到了一个问题. 结果显示数据库查询没有问题,但是有的数据缺没有插入到指定的字段中,如下图中ID成功存储,Z40_ID,Z40_103到Z40_113均失败. 经过排查得出结论 如果数据库命名很规范比如user_name
-
MyBatis查询时属性名和字段名不一致问题的解决方法
问题 当我们数据库中的字段和实体类中的字段不一致的时候,查询会出问题 数据库字段是 pwd id name pwd 1 张三 123456 2 李四 123456 3 王五 123456 4 赵六 123456 实体类字段是 password public class User { private int id; private String name; private String password; } 查出来结果发现, password 是 null User{id=1, name='张三
-
Mybatis查询时,区分大小写操作
登陆的时候,发现输入账号的不同大小写竟然能够登陆. Mybatis查询代码如下 <select id="selectById" parameterType="java.lang.String" resultType="com.deep.web.func.entity.UserData"> select <include refid="sql_columns" /> from <include re
-
解决mybatis查询结果为null时,值被默认值替换问题
目录 查询结果为null时,值被默认值替换 问题原因 解决办法 mybatis查询结果处理 处理核心流程 返回类型处理ResultHandler 字段类型处理TypeHandler 查询结果为null时,值被默认值替换 问题:pojo种设置了一个默认值,当此字段查询结果为空时,字段值变成了默认值0,经过排查发现,mybatis在赋值时并没有调用set方法赋值,而是直接调用get方法,取了默认值 问题原因 原因是因为mybatis在给map赋值时,如果返回值不是基本数据类型,且返回值为null,就
-
Mybatis Plus查询时sql字段名大小写报错的解决
目录 Mybatis Plus查询时sql字段名大小写报错 遇到报错 错误解析 解决方案 Mybatis Plus返回map大小写问题 Mybatis Plus查询时sql字段名大小写报错 遇到报错 错误解析 在数据库中没有找到img_url 列 数据库字段名是是大写 解决方案 在application.properties中加: mybatis-plus.configuration.map-underscore-to-camel-case=false 完美运行~ Mybatis Plus返回m
-
Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办
项目开发中,在做Mybatis动态查询时,遇到了一个问题:MySQL在进行LIKE模糊查询时,输入英文可以正常检索出结果,但是输入中文后检索得到的结果为空. 由于是使用GET方式请求,所以为了确保中文不乱码,在控制台接收到请求参数后,对中文进行了一次编码. try { realName = new String(realName.getBytes("GBK"), "UTF-8"); } catch (UnsupportedEncodingException exce
-
Mybatis 查询语句条件为枚举类型时报错的解决
目录 Mybatis查询语句条件为枚举类型报错 通常这个错误是 Mybatis处理枚举类型 1.枚举 2.包含枚举的实体类 3.书写枚举处理器 4.配置枚举处理器 5.dao层 6.mapper文件 7.测试 Mybatis查询语句条件为枚举类型报错 通常我们对于数据库中一些枚举字段使用tinyInt类型,而java对象对应的字段很多时候会为了方便定义成short或者int.但这样显然不美观方便,让后面维护的人抠破脑袋找你的常量定义在哪儿,要是没有注释简直让人崩溃.时间久后,没有人知道这里面的值
-
thinkPHP使用post方式查询时分页失效的解决方法
本文实例讲述了thinkPHP使用post方式查询时分页失效的解决方法.分享给大家供大家参考,具体如下: 昨天晚上一直没有解决的php项目中的bug,就在刚才终于搞定,在这里还需要感谢各位大神给的帮助! 具体问题描述 最近遇到一个非常棘手的问题,也是因为刚入手thinkphp.在做项目的过程中,因为需要非常多的查询条件,如果以get方式提交表单的话,会因为url长度限制而报错,所以必须使用post方式提交表单数据,但是在分页的过程中,遇到了问题,因为thinkphp自带的分页是以a标签的形式,进
-
解决Mybatis查询方法selectById()主键不一致问题
Mybatis-plus的通用mapper为我们封装了很多方法,我们只需要将interface集成BaseMapper就可以.在BaseMapper中分装了一个方法=>selectById() selectById 这个方法是根据主键id进行查询记录的.返回一条记录.测试如下, 最终调用的是这个方法userDiamondMapper这个接口集成了BaseMapper. 注意这个表的主键就是uid,查询试试 返回结果不如我们预期,打印出的SQL很奇怪,并没有解析正确.猜测是因为无法正确解析出主键.
随机推荐
- 解决jquery appaend元素中id绑定事件失效的问题
- 关于JavaScript定义类和对象的几种方式
- Asp.net利用一般处理程序实现文件下载功能
- CodeIgniter框架提示Disallowed Key Characters的解决办法
- JS实现浏览器状态栏显示时间的方法
- PHP 中文处理技巧
- 基于ajax html实现文件上传技巧总结
- Quoted-printable 编码介绍、Quoted-printable编码解码转换方法
- Ajax中浏览器的缓存问题解决方法
- ASP FSO文件处理函数大全
- 基于jquery fly插件实现加入购物车抛物线动画效果
- android 实现类似微信缓存和即时更新好友头像示例
- c语言求出给定范围内的所有质数
- 函数名称 函数功能
- IK8个人主页为您提供1G免费HTML空间服务
- JavaScript模拟实现封装的三种方式及写法区别
- Linux查看某个端口的连接数的方法
- 解决vuejs 使用value in list 循环遍历数组出现警告的问题
- python打包生成的exe文件运行时提示缺少模块的解决方法
- python实现远程控制电脑