com.base4j.mvc.base.controller.BaseController Maven / Gradle / Ivy
package com.base4j.mvc.base.controller;
import com.base4j.mvc.base.entity.EntityUtil;
import com.base4j.mvc.base.exception.IllegalleControllerNameException;
import com.base4j.mvc.base.param.Param;
import com.base4j.mvc.base.service.BaseService;
import com.base4j.mvc.util.GenricUtil;
import com.base4j.mvc.util.Res;
import com.base4j.mybatis.base.QueryParams;
import com.github.pagehelper.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class BaseController {
public BaseController() {
entityClass = GenricUtil.getGenericClass(this.getClass(), 0);
}
public static final String URL_PATH_SEPRATOR = "/";
private Class entityClass; //泛型T的类型
@Autowired
private BaseService service;
@RequestMapping("/toView/{viewPath}")
public ModelAndView toView(@PathVariable String viewPath, @RequestParam Map params) {
ModelAndView model = new ModelAndView(viewPath);
model.addAllObjects(params);
return model;
}
private String getViewName(String className) {
for (int i = 0; i < className.length(); i++) {
if (i > 0 && Character.isUpperCase(className.charAt(i)) == true) {
String viewPath = className.substring(0, i).toLowerCase();
String viewName = className.substring(i, className.length() - 10).toLowerCase();
return URL_PATH_SEPRATOR + viewPath + URL_PATH_SEPRATOR + viewName;
}
}
throw new IllegalleControllerNameException();
}
@RequestMapping("/selectRelativeByPrimaryKey/{id}")
@ResponseBody
public Res selectRelativeByPrimaryKey(@PathVariable long id) {
T record = service.selectRelativeByPrimaryKey(id);
return Res.ok(record);
}
@RequestMapping("/selectPageByParams/{pageNum}/{pageSize}")
@ResponseBody
public Res selectPageByParams(@PathVariable int pageNum, @PathVariable int pageSize, @RequestBody Param param) {
QueryParams queryParams = param.toQueryParams(entityClass);
Page page = service.selectPageByParams(pageNum, pageSize, queryParams);
Map pageInfo = new HashMap();
pageInfo.put("total", page.getTotal());
pageInfo.put("pages", page.getPages());
pageInfo.put("page", page);
return Res.ok(pageInfo);
}
@RequestMapping("/selectPageRelativeByParams/{pageNum}/{pageSize}")
@ResponseBody
public Res selectPageRelativeByParams(@PathVariable int pageNum, @PathVariable int pageSize, @RequestBody Param param) {
QueryParams queryParams = param.toQueryParams(entityClass);
Page page = service.selectPageRelativeByParams(pageNum, pageSize, queryParams);
Map pageInfo = new HashMap();
pageInfo.put("total", page.getTotal());
pageInfo.put("pages", page.getPages());
pageInfo.put("page", page);
return Res.ok(pageInfo);
}
@RequestMapping("/selectListByParams")
@ResponseBody
public Res selectListByParams(@RequestBody Param param) {
QueryParams queryParams = param.toQueryParams(entityClass);
List list = service.selectListByParams(queryParams);
return Res.ok(list);
}
@RequestMapping("/selectListRelativeByParams")
@ResponseBody
public Res selectListRelativeByParams(@RequestBody Param param) {
QueryParams queryParams = param.toQueryParams(entityClass);
List list = service.selectListRelativeByParams(queryParams);
return Res.ok(list);
}
@RequestMapping("/insert")
@ResponseBody
public Res insert(T record) {
service.insert(record);
return Res.ok(record);
}
public Res insertList(List records) {
int num = service.insertList(records);
return Res.ok(num);
}
@RequestMapping("/updateSelectiveByPrimaryKey")
@ResponseBody
public Res updateSelectiveByPrimaryKey(T record) {
service.updateSelectiveByPrimaryKey(record);
return Res.ok(record);
}
@RequestMapping("/updateByPrimaryKey")
@ResponseBody
public Res updateByPrimaryKey(T record) {
service.updateByPrimaryKey(record);
return Res.ok(record);
}
@RequestMapping("/updateByParams")
@ResponseBody
public Res updateByParams(T record, @RequestBody Param param) {
QueryParams queryParams = param.toQueryParams(entityClass);
int num = service.updateByParams(record, queryParams);
return Res.ok(num);
}
@RequestMapping("/updateSelectiveByParams")
@ResponseBody
public Res updateSelectiveByParams(T record, @RequestBody Param param) {
QueryParams queryParams = param.toQueryParams(entityClass);
int num = service.updateSelectiveByParams(record, queryParams);
return Res.ok(num);
}
@RequestMapping("/deleteByPrimaryKey/{id}")
@ResponseBody
public Res deleteByPrimaryKey(@PathVariable Long id) {
int num = service.deleteByPrimaryKey(id);
return Res.ok(num);
}
@RequestMapping("/deleteByParams")
@ResponseBody
public Res deleteByParams(@RequestBody Param param) {
QueryParams queryParams = param.toQueryParams(entityClass);
int num = service.deleteByParams(queryParams);
return Res.ok(num);
}
@RequestMapping("/save")
@ResponseBody
public Res save(@RequestBody T record) {
if (EntityUtil.getIdValule(record) == null) {
return insert(record);
} else {
return updateByPrimaryKey(record);
}
}
}