Service层的基础类 可在此类中增加项目中常用且公用的方法

package com.rabbi.formwork.common.base;

import com.jfinal.plugin.activerecord.*;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

/**
* Created with IntelliJ IDEA.
*
* @Description:
* @User: rabbi
* @Date: 2018-04-18
* @Time: 下午4:51
*/
public abstract class BaseService<M extends BaseModel<M>> {

   protected M dao = null;
   protected Class<M> modelClass = null;
   protected Table table = null;

   public BaseService() {
       this.modelClass = getModelClazz();
       this.table = TableMapping.me().getTable(this.modelClass);
       try {
           dao = modelClass.newInstance();
       } catch (Exception e) {
           e.printStackTrace();
       }
   }
   private Class<M> getModelClazz() {
       Type t = getClass().getGenericSuperclass();
       Type[] params = ((ParameterizedType) t).getActualTypeArguments();
       return (Class<M>) params[0];
   }

}


评论区

gavin0212

2018-05-02 16:53

BaseModel ?

rabbi

2018-05-03 09:03

@gavin0212 BaseModel为自定义 Model 也可用 Model

JFinal

2018-05-03 12:11

封装 BaseSevice 可以再提升一些开发效率,感谢你的分享

tonysb

2018-05-07 08:47

Type t = getClass().getGenericSuperclass();这个如果是子类调用的话,会有问题的吧?

lu

2018-05-07 10:49

这个有用

tonysb

2018-05-07 11:25

CGLIB代理的时候,this.getClass().getSuperclass()才能获取到baseService下面的那个子类吧

hhchor

2021-10-30 15:38