java心路历程

ThreadLocal初级使用

2018-06-19  本文已影响0人  jbc911

ThreadLocal介绍

使用ThreadLocal改造下mybatis简单分页

借鉴mybatis PageHelper插件

在action层保存分页信息到ThreadLocal

public class BaseAction {
    public static ThreadLocal<Map<String, String>> threadLocal = new ThreadLocal<>();

    public void setPage(HttpServletRequest request) {
        Map<String, String> map = new HashMap<>();
        map.put("start", request.getParameter("start"));
        map.put("length", request.getParameter("length"));
        threadLocal.set(map);
    }

    public static String getLimit() {
        Map<String, String> map = threadLocal.get();
        if (map != null && !Strings.isNullOrEmpty(map.get("start")) && !Strings.isNullOrEmpty(map.get("start"))) {
            return String.format(" limit %s,%s ", map.get("start"), map.get("length"));
        }
        return "";
    }
}

在mapper里面获取分页信息(新学会在mapper.xml中使用@符号获取对象常量和方法)

${@com.jbc.action.BaseAction@getLimit()}

以前的做法,实体类和Example继承公用实体类(使用MyBatisGenerator自动生成的实体类和mapper,懒得写sql),里面有start和length,然后mapper.xml里面获取这两个值

ProjectExample example = new ProjectExample();
example.setStart(project.getStart());
example.setLength(project.getLength());
 <if test="start!=null and length!=null and length!=0">
            limit ${start},${length}
</if>
上一篇 下一篇

猜你喜欢

热点阅读