博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
给JFinal的Model添加search,简化简单多条件查询(完善了MAP的处理)
阅读量:6933 次
发布时间:2019-06-27

本文共 3346 字,大约阅读时间需要 11 分钟。

  hot3.png

看了http://my.oschina.net/myaniu/blog/137065关于jFinal的Model的优化,进一步做了一些处理
public M searchFirst(String key, Object value) {        List
mList = search(key, value, ""); return mList != null && mList.size() > 0 ? mList.get(0) : null; } public List
search(String key, Object value) { return search(key, value, ""); } public List
search(String key, Object value, String orderBy) { String sql = "select * from " + TableInfoMapping.me().getTableInfo(getClass()).getTableName() + " where " + key + "=? " + orderBy; return find(sql, value); } public M searchFirst(Map
maps) { List
mList = search(maps, ""); return mList != null && mList.size() > 0 ? mList.get(0) : null; } public List
search(Map
maps) { return search(maps, ""); } public List
search(Map
maps, String orderBy) { StringBuilder sb = new StringBuilder(); sb.append("select * from ").append(TableInfoMapping.me().getTableInfo(getClass()).getTableName()).append(" where 1=1 "); List
values = setMap(maps, sb); sb.append(" ").append(orderBy); return find(sb.toString(), values.toArray()); }    private List setMap(Map
maps, StringBuilder sb) {        List
values = new ArrayList();        for (Entry
entry : maps.entrySet()) {            if (entry.getValue() != null) {                if (entry.getKey() instanceof String) {                    String key = entry.getKey().toString();                    if (TableInfoMapping.me().getTableInfo(getClass()).hasColumnLabel(key)) {                        sb.append(" and ").append(key).append("=?");// 这里没有处理模糊查询                        Object val[] = (Object[]) entry.getValue();// request.getParameterMap中map的值是数组                        values.add(val[0]);                    }                } else {                    // 查询条件的key应该都是String,如果不是请自己处理                }            }        }        return values;    } public List
searchByCache(String cacheName, Object key, Map
maps) { return this.searchByCache(cacheName, key, maps, ""); } public List
searchByCache(String cacheName, Object key, Map
maps, String orderBy) { ICache cache = DbKit.getCache(); List
result = cache.get(cacheName, key); if (result == null) { result = search(maps); cache.put(cacheName, key, result); } return result; } public Page
searchPaginate(int pageNumber, int pageSize, Map
maps) { return this.searchPaginate(pageNumber, pageSize, maps, ""); } public Page
searchPaginate(int pageNumber, int pageSize, Map
maps, String orderBy) { StringBuilder sb = new StringBuilder(); sb.append("from ").append(TableInfoMapping.me().getTableInfo(getClass()).getTableName()).append(" where 1=1"); List
values = setMap(maps, sb); return paginate(pageNumber, pageSize, "select *", sb.toString(), values.toArray()); } public Page
searchPaginateByCache(String cacheName, Object key, int pageNumber, int pageSize, Map
maps) { return this.searchPaginateByCache(cacheName, key, pageNumber, pageSize, maps, ""); } public Page
searchPaginateByCache(String cacheName, Object key, int pageNumber, int pageSize, Map
maps, String orderBy) { ICache cache = DbKit.getCache(); Page
result = cache.get(cacheName, key); if (result == null) { result = searchPaginate(pageNumber, pageSize, maps, orderBy); cache.put(cacheName, key, result); } return result; }
调用示例:
public void index() {        setAttr("blogPage", Blog.dao.searchPaginate(getParaToInt(0, 1), 10, getRequest().getParameterMap()));        render("blog.html");    }

转载于:https://my.oschina.net/huntxt/blog/151941

你可能感兴趣的文章
CoreOS 和 Kubernetes 1.5 自主运行 Kubernetes、Container Linux
查看>>
The only supported ciphers are AES-128-CBC and AES-256-CBC
查看>>
sphinx 全文搜索引擎
查看>>
Kotlin成为正式的Android编程语言
查看>>
物联网技术周报第 141 期: 使用 Alexa Voice 和 Raspberry Pi 构建图片识别应用
查看>>
微软必应从.NET Core 2.1获得了性能提升
查看>>
四说大数据时代“神话”:从大数据到深数据\n
查看>>
vue.js仿饿了么app---webpack配置项
查看>>
架构周报:微信后台系统的演进之路
查看>>
Oracle宣布提供新的Java支持价格体系
查看>>
phpstrom配置svn/git提交
查看>>
关于Redux的一些总结(一):Action & 中间件 & 异步
查看>>
专访1药网技术副总裁黄哲铿:揭秘技术跨界管理之道
查看>>
Markdown通用的常用语法说明
查看>>
gulp关于scss的基础配置
查看>>
PHP:echo、print、print_r() 和 var_dump()
查看>>
Gerrit代码Review入门实战
查看>>
Swift中一个类中的枚举(enum)类型的数据该如何实现序列化(NSCoder)
查看>>
WebSocket 原理
查看>>
按端口终止进程
查看>>