小程序500错误

小程序500错误,第1张

小程序测试用127.0.0.1连接本地服务器正常获取数据

上线连接云上服务器

获取数据时出现500错误

原因:

mybatis的xml文件中一定存在大小写的表名,数据表的文件名大小写不规范

使用navicat转储sql文件后,用phpmyadmin导入服务器后错误出现

在phpmyadmin将表名更改回本地数据表相同名称,或者更改XML中的表单名称,重新上传

即可解决

本篇主要讲解在MyBatis中如何使用类型处理器

在设计之初,sys_role表的enabled字段有2个可选值,其中0 代表禁用,1代表启用,而且实体类中我们使用的是Interger类型:

如果要新增或者更新角色信息,我们肯定要校验enabled字段的值必须是0或者1,所以最初的部分代码可能是这样的:

这种硬编码的方式不仅看起来不友好,而且不利于后期维护,如果维护的程序员脾气不好,还会骂你,哈哈。

所以我们的需求就是,拒绝硬编码,使用友好的编码方式来校验enabled字段的值是否有效。

我们通常会使用枚举来解决这种场景。

首先新建com.zwwhnly.mybatisaction.type包,然后在该包下新建枚举Enabled:

其中,disabled对应的索引为0,enabled对应的索引为1。 最新 MyBatis 面试题整理好了,点击Java面试库小程序在线刷题。

然后将SysRole类中原来为Integer类型的enabled字段修为:

此时原本硬编码的代码就可以修改为:

虽然上面的代码很完美的解决了硬编码的问题,但此时又引出一个新的问题:

带着这个问题,我们在SysRoleMapperTest测试类中添加如下测试方法:

运行测试代码,发现抛出如下异常:

这是因为MyBatis在处理Java类型和数据库类型时,使用TypeHandler(类型处理器)对这两者进行转换。

MyBatis为Java类型和数据库JDBC中的常用类型类型提供了TypeHandler接口的实现。

MyBatis在启动时会加载所有的JDBC对应的类型处理器,在处理枚举类型时默认使用org.apache.ibatis.type.EnumTypeHandler处理器,这个处理器会将枚举类型转换为字符串类型的字面值使用,对于Enabled枚举来说,就是“disabled"和”enabled"字符串。

而数据库中enabled字段的类型是int,所以在查询到角色信息将int类型的值1转换为Enabled类型报错。

原文出处:https://mp.weixin.qq.com/s/V0VwdRKwZOiOxZNBmVl6Ww


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12128699.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存