写了一个BaseService,大神给指点一下

每次新增service的时候,都需要把方法再写一遍,所以尝试着写了一个基础的service,这样每次引用就可以了,麻烦给看看写的有什么错误或者不合适的地方没有,谢谢。

public abstract class BaseService {

    protected Model tableClass; //javabean名称
    protected String tableName; //表名称
    protected Map<String, Object> inbeforeMap; //新增状态加载数据前插入
    protected Map<String, Object> inafterMap; //新增状态加载数据后插入
    protected Map<String, Object> upbeforeMap; //更新状态加载数据前插入
    protected Map<String, Object> upafterMap; //更新状态加载数据后插入

    //单条记录查询
    public Map<String,Object> getDataById(String id) throws Exception{
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("data", tableClass.dao().findById(id));
        map.put("status", "sucess");
        return map;
    }

    //查询
    public Map<String, Object> getData(String json) throws Exception {
        Map<String, Object> map = new HashMap<String, Object>();
        Map<String, Object> data = JSONObject.parseObject(deCoderBase64(json)); //先base64解码然后在解析
        int pageNumber = Integer.parseInt(data.get("pagenumber").toString());
        int pageSize = Integer.parseInt(data.get("pagesize").toString());
        String select = "select *", where = "", order = "";
        if (!data.get("select").equals(""))
            select = "select " + data.get("select");
        if (!data.get("where").equals(""))
            where = " where " + data.get("where").toString();
        if (!data.get("order").equals(""))
            order = " order by " + data.get("order").toString();
        map.put("data", tableClass.dao().paginate(pageNumber, pageSize, select, " from " + tableName + where + order));
        map.put("status", "sucess");
        return map;
    }

    //新增,更新
    @Before(Tx.class) //如果新增或者更新有问题,直接回滚
    public Map<String, Object> upData(String json) throws Exception {
        Map<String, Object> map = new HashMap<String, Object>();
        List<Map> dataList = JSONObject.parseArray(json, Map.class);
        for (int i = 0; i < dataList.size(); i++) {
            Map<String, Object> mapData = dataList.get(i);
            if (mapData.get("_state").equals("added")) {
                //加载前
                tableClass.put(inbeforeMap);
                //加载数据
                tableClass.put(JSONObject.parseObject(JSONObject.toJSONString(mapData), tableClass.getClass()));
                //加载后
                tableClass.put(inafterMap);
                //插入新增
                tableClass.save();
            } else if (mapData.get("_state").equals("modified")) {
                //加载前
                tableClass.put(upbeforeMap);
                //加载数据
                tableClass.put(JSONObject.parseObject(JSONObject.toJSONString(mapData), tableClass.getClass()));
                //加载后
                tableClass.put(upafterMap);
                //数据更新标识更新
                tableClass._setAttrs(tableClass);
                //更新数据
                tableClass.update();
            }
        }
        map.put("status", "sucess");
        return map;
    }

    //删除
    @Before(Tx.class) //如果删除有问题,直接回滚
    public Map<String, Object> delData(String list) throws Exception {
        if (list == null || list.equals("")) {
            throw new RuntimeException("无数据删除");
        }
        Map<String, Object> map = new HashMap<String, Object>();
        String[] datalist = list.split(",");
        for (String data : datalist) {
            tableClass.dao().deleteById(data);
        }
        map.put("status", "sucess");
        return map;
    }
}


其他service引用

public class SysMenuService extends BaseService {

    public SysMenuService() {

        /*============= 初始化数据,不用动 ================*/
        Map<String, Object> inbeforeMap = new HashMap<String, Object>();
        Map<String, Object> inafterMap = new HashMap<String, Object>();
        Map<String, Object> upbeforeMap = new HashMap<String, Object>();
        Map<String, Object> upafterMap = new HashMap<String, Object>();

        /*================= ****需要修改的*** ==================*/
        super.tableName = "sys_menu";
        super.tableClass = new SysMenu();
        //新增加载前赋值字段
        inbeforeMap.put("vid", java.util.UUID.randomUUID().toString()); //主键
        inbeforeMap.put("create_date", new Date()); //创建日期
        //新增加载后赋值字段
        inafterMap.put("update_date", new Date()); //更新日期
        //更新加载前赋值字段
        upbeforeMap.put("update_date", new Date()); //更新日期
        //更新加载后赋值字段

        /*=====================================================*/

        /*============= 初始化数据,不用动 ================*/
        super.inbeforeMap = inbeforeMap;
        super.inafterMap = inafterMap;
        super.upbeforeMap = upbeforeMap;
        super.upafterMap = upafterMap;
    }

}


评论区

热门反馈

扫码入社