我的Controller构成如下:
先有一个IController接口定义所有需要的方法,这里仅举例增删改查:
public interface IController<T> {
//初始化
public void init();
//添加
public String save(T obj);
//查询
public String list(T obj);
//修改
public String change(T obj);
//删除
public String abandon(T obj);
}
然后建立一个抽象类继承这个接口:
public abstract class CRUDController<T> implements IController<T> {
protected IService<T> service;
//添加
@Override
public String save(T obj) {
ResultMsg msg = new ResultMsg();
try {
service.init();
msg = service.add(obj);
if(msg.getError_code() == Constantnumber.EXITS) {
msg.setResult("Already exists...");
} else if(msg.getError_code() == Constantnumber.SUCCESSED) {
msg.setResult(obj.toString());
} else {
msg.setResult("Operation failed...");
}
} catch (Exception e) {
msg.setError_code(Constantnumber.FAILED);
msg.setResult("Operation failed...");
}
return msg.toString();
}
//查询
@Override
public String list(T obj) {
ResultMsg msg = new ResultMsg();
List<T> objs = null;
try {
service.init();
objs = service.find(obj);
if(msg.getError_code() == Constantnumber.ILLEGALITY) {
msg.setResult("Operation illegality...");
} else if(objs.size() > 0) {
msg.setError_code(Constantnumber.SUCCESSED);
msg.setResult(objs.toString());
}
} catch (Exception e) {
msg.setError_code(Constantnumber.FAILED);
msg.setResult("Operation failed...");
}
return msg.toString();
}
//修改
@Override
public String change(T obj) {
ResultMsg msg = new ResultMsg();
try {
service.init();
msg = service.modify(obj);
if(msg.getError_code() == Constantnumber.ILLEGALITY) {
msg.setResult("Operation illegality...");
} else if(msg.getError_code() == Constantnumber.SUCCESSED) {
msg.setResult(obj.toString());
} else {
msg.setResult("Operation failed...");
}
} catch (Exception e) {
msg.setError_code(Constantnumber.FAILED);
msg.setResult("Operation failed...");
}
return msg.toString();
}
//删除
@Override
public String abandon(T obj) {
ResultMsg msg = new ResultMsg();
try {
service.init();
msg = service.remove(obj);
if(msg.getError_code() == Constantnumber.ILLEGALITY) {
msg.setResult("Operation illegality...");
} else if(msg.getError_code() == Constantnumber.SUCCESSED) {
msg.setResult("Operation successed...");
} else {
msg.setResult("Operation failed...");
}
} catch (Exception e) {
msg.setError_code(Constantnumber.FAILED);
msg.setResult("Operation failed...");
}
return msg.toString();
}
这样,当我开始编写所有具体的功能时都可以继承这个CRUDController,如:
@Controller
@RequestMapping("/roless")
public class RolessInfoController extends CRUDController<RolessInfo> {
@Resource
private IRolessInfoService service;
@Override
public void init() {
super.service = service;
}
}
现在遇到的问题是,这种方式的写法还没有找到使用注解标注用户的访问路径的办法