-
Notifications
You must be signed in to change notification settings - Fork 60
8、查询结果直接返回Json格式数据
Bee edited this page Jun 30, 2020
·
1 revision
Bee简单易用:单表操作、多表关联操作,可以不用写sql,极少语句就可以完成SQL操作;10分钟即可学会使用。
Bee功能强大:复杂查询也支持向对象方式,分页查询性能更高,一级缓存即可支持个性化优化。高级需求,还可以方便自定义SQL语句。
1. 别的ORM工具为什么不能直接返回json格式数据
当初ORM出现的目的就是为了用面向对象的方式操作数据库,查询时直接返回结果行的对象。json是在前后端分离后才流行起来的数据格式,此时ORM已出现十年了。
但在前后端分离大行其道的今天,在微服务炙手可热之时,ORM工具怎么能不提供json相关的功能!
2. Bee提供的json查询功能
从效率考虑,肯定是查询结果时,直接转成json格式数据比后面再转换要好。因此Bee提供了直接将查询结果返回json格式数据的方法。
SuidRich接口关于json的方法
PreparedSql接口关于json的方法
3. 使用例子
SuidRich接口关于json的方法使用实例
String json=suidRich.selectJson(new User());
Logger.info("selectJson(new User()):");
Logger.info(json);
输出日志:
[Bee] selectJson SQL:
select id,email,last_name,name,password,username,createtime from user
selectJson(new User()):
[{"id":800001,"email":"beeUser@163.com","name":"Bee","password":"bee","username":"bee","createtime":1587126423000},{"id":800002,"email":"honey@163.com","name":"Honey","password":"honey","username":"honey","createtime":1583138493000},{"id":800003,"password":"bee-user","username":"testuser","createtime":1587126423000},{"id":800004,"password":"bee-user","username":"testuser","createtime":1587808755000}]
PreparedSql接口关于json的方法使用实例
String jsonString1= preparedSql.selectJson(sql, new Object[] { "bee" },1,3);//array selectJson
Logger.info(jsonString1);
String jsonString= preparedSql.selectJson(sql2, map,1,3);//map selectJson
Logger.info(jsonString);
4. 关于json格式的相关设置
在bee.properties中,可以对返回的json格式进行设置。
#查询结果直接返回Json是否忽略null
bee.osql.selectJson.ignoreNull=true
#查询结果直接返回Json中, timestamp是否用毫秒表示
bee.osql.selectJson.timestamp.withMillisecond=true
bee.osql.selectJson.date.withMillisecond=true
bee.osql.selectJson.time.withMillisecond=false
5. 将查询的json字符串转成对象
使用fasterxml 将查询User的json字符串转成User对象:
package org.teasoft.exam.bee.osql;
import org.teasoft.bee.osql.SuidRich;
import org.teasoft.exam.bee.osql.entity.User;
import org.teasoft.honey.osql.core.BeeFactory;
import org.teasoft.honey.osql.core.Logger;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
* @author Kingstar
* @since 1.7.2
*/
public class UseJson {
public static void main(String[] args) throws Exception {
SuidRich suidRich = BeeFactory.getHoneyFactory().getSuidRich();
String json = suidRich.selectJson(new User());
Logger.info("selectJson(new User()):");
Logger.info(json);
ObjectMapper mapper = new ObjectMapper();
User user[] = mapper.readValue(json, User[].class);
Logger.info("将直接查询的json转成对象:");
for (int i = 0; i < user.length; i++) {
Logger.info(user[i].toString());
}
}
}
输出日志:
[Bee] selectJson SQL:
select id,email,last_name,name,password,username,createtime from user
selectJson(new User()):
[{"id":800001,"email":"beeUser@163.com","name":"Bee","password":"bee","username":"bee","createtime":1587126423000},{"id":800002,"email":"honey@163.com","name":"Honey","password":"honey","username":"honey","createtime":1583138493000},{"id":800003,"password":"bee-user","username":"testuser","createtime":1587126423000},{"id":800004,"password":"bee-user","username":"testuser","createtime":1587808755000}]
将直接查询的json转成对象:
User[id=800001,email=beeUser@163.com,lastName=null,name=Bee,username=bee,createtime=2020-04-17 20:27:03.0]
User[id=800002,email=honey@163.com,lastName=null,name=Honey,username=honey,createtime=2020-03-02 16:41:33.0]
User[id=800003,email=null,lastName=null,name=null,username=testuser,createtime=2020-04-17 20:27:03.0]
User[id=800004,email=null,lastName=null,name=null,username=testuser,createtime=2020-04-25 17:59:15.0]
经验证,转成的user对象与直接查询出来的一样。
旧的方式:
查询到Result结果集-->转成User对象List-->Spring等框架再将List转成json;
Bee的新方式:
查询到Result结果集-->将Result直接转成json;
将直接查询到的json,直接传回前端使用,解析效率提高了!
到这里,查询结果直接返回Json格式数据的用法就介绍完了。要是有什么问题,记得告诉我们哦!