感觉每次重复写Service很麻烦,所以想着能不能做做一个基础的service(把很多系统自用的方法写这里),然后每次表新建service的时候,直接extends这个基础service不是少写很多代码。
基础service
public class BaseService {
    protected Model tableClass ;
    protected String tableName ;
    //查询
    public Map<String, Object> getData(String json) {
        ...省略代码
            map.put("data", tableClass.dao().paginate(1, 10, "select *", " from " + tableName + " order by sequ asc"));
        ...省略代码
    }
    //新增,更新
    @Before(Tx.class) //如果新增或者更新有问题,直接回滚
    public Map<String, Object> upData(String json) {
        ...省略代码
                tableClass = JSONObject.parseObject(JSONObject.toJSONString(json), tableClass.getClass());
        ...省略代码
                tableClass.update();
        ...省略代码
    }
    //删除
    @Before(Tx.class) //如果删除有问题,直接回滚
    public Map<String, Object> delData(String id) {
        ...省略代码
                tableClass.dao().deleteById(id);
        ...省略代码
    }
}业务service
public class SysMenuService extends BaseService{
    public SysMenuService(){
        super.tableName ="sys_menu";
        super.tableClass = new SysMenu();
    }
}业务controller
public class SysMenuController extends Controller {
    SysMenuService service=new SysMenuService();
    //查询数据
    public void getdata(){
        String data =getPara("data");
        renderJson(service.getData(data));
    }
    //新增、更新数据
    public void updata(){
        String data =getPara("data");
        renderJson(service.upData(data));
    }
    //删除数据
    public void deldata(){
        String data =getPara("data");
        renderJson(service.delData(data));
    }
}请问大神
1、以上代码这么写是否合适,是否还有更好的方法;
2、从性能方面是否合理;
3、追加问一下Db和Model操作,是否性能一致,感觉Db更方便一些;
4、每建立一个表,都要写一个service和一个controller,这块能否有更好的方式,比如写一个通用的,然后动态调用配置文件;
5、最终目标就是自动生成表model,然后数据库里面写配置文件,service和controller就一个(除了特殊方法单独写),然后就可以直接使用了。是否有这样的例子参考。
谢谢!
 
 
 
 
 
 
可以写成抽象类,提供常用的上下文操作、ORM操作
然后各业务Service全部继承这个BaseService,同时实现单列
Controller中直接引用这个单列的Service即可
再高级一点,利用guice实现业务Service的注入
再再高级一点,为每个Model自动生成对应的Service