调用sql函数原创
4人赞赏了该文章
1,738次浏览
编辑于2021年12月22日 10:54:19
看完文章,请点赞收藏,谢谢您嘞
在使用DB类查询数据时,使用 普通的sql函数或者自定义函数来查询数据。
tk_kdec_t_bill_1这张表的数据:
使用sql函数
使用isnull函数的案例:
DBRoute dbRoute = DBRoute.of("secd"); String isnullSQL = "select fid, fbillno, isnull(fk_kdec_decimalfield, 0.00) + 0.001 as deci from tk_kdec_t_bill_1"; Object[] params = {}; Object object = DB.query(dbRoute, isnullSQL, params, new ResultSetHandler<Object>() { @Override public Object handle(ResultSet resultSet) throws Exception { List<Map> list = new ArrayList<>(); while (resultSet.next()) { Object fbillno = resultSet.getObject("fbillno"); Object fid = resultSet.getObject("fid"); Object fdecimalfield = resultSet.getObject("deci"); HashMap<String, Object> hashMap = new HashMap<>(); hashMap.put("fbillno", fbillno); hashMap.put("fid", fid); hashMap.put("deci", fdecimalfield); list.add(hashMap); } return list; } }); for (Map map : (List<Map>)object) { Object fbillno = map.get("fbillno"); Object fid = map.get("fid"); Object fdecimalfield = map.get("deci"); System.out.println("tk_kdec_t_bill_1: " + "fbillno-"+fbillno.toString()+"/" +"fid-"+fid.toString()+"/" +"deci-"+fdecimalfield.toString()+"/"); }
打印的日志结果:
使用自定义函数
在mysql终端里面创建了一个名为 myf的函数,用来统计 表行数
终端执行这个函数的结果:
在代码里面调用这个自定义函数,加上 /*dialect*/ 就可以使用这个自定义函数了,在调用时,必须确保 数据库里面有这个函数。
案例如下:
//构建 扩展开发库的DBRoute DBRoute dbRoute = DBRoute.of("secd"); String customSQL = "/*dialect*/ select myf() as billmess"; DynamicObjectCollection dialectObjects = (DynamicObjectCollection)DB.query(dbRoute, customSQL, null, new ResultSetHandler<Object>() { @Override public Object handle(ResultSet resultSet) throws Exception { DynamicObjectCollection objects = new DynamicObjectCollection(); while (resultSet.next()) { Object billmess = resultSet.getObject("billmess"); System.out.println("result:" + billmess); DynamicObjectType dynamicObjectType = new DynamicObjectType("bill"); DynamicSimpleProperty dynamicSimpleProperty = new DynamicSimpleProperty("billmess", Integer.class, null); dynamicObjectType.addProperty(dynamicSimpleProperty); DynamicObject dynamicObject = new DynamicObject(dynamicObjectType); dynamicObject.set("billmess", billmess); objects.add(dynamicObject); } return objects; } });
最终会打印出结果和终端的执行结果一致:
赞 4
4人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读