感觉每次重复写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