Bee查询json,添加一个项,将long转为string。
因前端显示Long会有精度丢失。可以看到返回的json是正确的,但显示却会有问题。改为string就可以.
Java
将接口SuidRich (包名:org.teasoft.bee.osql)下方法名为selectJson涉及的方法进行改进。
类型包括: long/Long
配置:
bee.osql.selectJson.longToString=true
默认为:true
其它:改动不引进新的bug;
改动代码尽可能少
无关代码不要修改;
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
我先看看哈,有问题再咨询,后端看你描述的应该挺好改
我尝试了下修改honey工程中org.teasoft.honey.osql.core.TransformResultSet的toJson方法,修改代码在100行左右类型判断最后封装json返回对象字符串参数前后添加引号,是可以的
首先先抱歉,昨天代码提交有点问题 ,这是JS处理Long类型精度丢失问题,我觉着是无需设置开关的,long/Long应该是进行string转化的,而且js是无类型的,之前代码中最后默认转string时应该添加前后引号。还有就是在honey工程里面修复这个问题更合适一点。测试用例是写了的在honey工程中。数据库操作测试建议使用打桩进行。Powermockito或者Mockito模拟运行,之前我有过类似的经验,期待能加入你的开源项目。你要有什么在具体的要求可以继续进行沟通。
测试类内容
package org.teasoft.honey;
public class TestBean {
private String name;
private Long value;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getValue() {
return value;
}
public void setValue(Long value) {
this.value = value;
}
}
package org.teasoft.honey;
import org.junit.Assert;
import org.junit.Test;
import org.teasoft.honey.osql.core.ObjSQLRich;
public class TestLongToString {
@Test
public void test() {
TestBean testUser = new TestBean();
ObjSQLRich objSQLRich = new ObjSQLRich();
Assert.assertEquals(objSQLRich.selectJson(testUser),"[{\"name\":\"1231\",\"value\":1231},{\"name\":\"456\",\"value\":789}]");
}
}
测试数据库脚本及数据
CREATE TABLE `test_bean` (
`id` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`value` bigint(50) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
INSERT INTO `bee`.`test_bean`(`id`, `name`, `value`) VALUES ('1', '1231', 1231);
INSERT INTO `bee`.`test_bean`(`id`, `name`, `value`) VALUES ('3', '456', 789);
你这个issue提错位置了吧,我在honey上修复了此问题
关于ORM Bee 是接口与实现分开的, Bee工程是接口工程, 实现主要是在Honey工程, Bee和Honey都不依赖于第三方框.
如特殊情况有用到第三方框的, 会放在Bee-ext工程.
测试的代码是在bee-exam工程. Bee的测试,是采用直观的方式进行与实现使用的情况类似, 不采用Mock模拟的方式,因为它的数据,不需要依赖其它端提供. 用实现使用的方式,测试它,应该会更好.
之前, 提的issue,主要是在Bee工程. 若涉及到Honey的, 主要在Honey提供代码完成通过了,在Bee的README_CN.md,提交一个修改日志,就算是完成相应issue了.
测试的, 希望可以提交到bee-exam工程, 用原来的表测试下即可. 针对这个"因前端显示Long会有精度丢失", 应该选个长的Long型来测试吧
这个问题不应该是序列化的问题吗
ORM Bee也是可以直接查数据库就返回Json的!
登录 后才可以发表评论