设计模式之-ThreadLocal设计模式应用场景

这篇博客介绍了ThreadLocal设计模式在分页查询中的应用,通过创建SystemContext类存储ThreadLocal变量,配合拦截器在请求处理前设置分页参数,从而在DAO层直接获取并进行分页查询,简化了业务接口的参数,提高了代码的专注度。
摘要由CSDN通过智能技术生成
 

ThreadLocal众所周知的只是在当前线程下共享数据,其实内部是一个map,那么ThreadLocal主要可以再哪些地方用呢,下面我将举一个非常常用的,可以说每个项目中都会使用到,那就是分页:例子如下

 

当我们在做分页的时候肯定是会在业务层写一个类似方法findAll(,查询参数,int offset,int pageSize),然后Dao层又会出现类似的方法,,如果采用ThreadLocal的话则可省掉分页参数offset,跟pageSize,我们只需要在请求到达Action之前将分页参数存在ThreadLocal中,然后在Dao使用查询语句的时候拿出来,这样可以让你更专注于业务逻辑,在定义接口的时候不再关注过多的分页参数之类杂七杂八的东西,

 

下面以s2sh为例:

 

第一步,设计一个SystemContext,用于存放ThreadLocal值,不一定必须得像我这样,可以根据需求自行设计,

package cn.com.leadfar.oa.Utils;

 

public class SystemContext {

    private static ThreadLocal<Integer> offset = new ThreadLocal<Integer>();

    private static ThreadLocal<Integer> pagesize  =new ThreadLocal<Integer>();

   

       public static int  getOffset(){

      

          

          

           return offset.get()==null?0:offset.get();

       }

      

      

       public  static int  getPagesize(){

      

      

          

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值