BaseController

第一版基础控制器类2020年01月09日

package com.zfxx.utils.dustbin.lingdu.lingdumodule.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.zfxx.utils.dustbin.lingdu.lingdumodule.entity.EntityClass;

@Controller
@RequestMapping("/testLingduController")
public class TestLingduController extends BaseController<EntityClass>{

	
}

在这里插入图片描述

BaseController

package com.zfxx.utils.dustbin.lingdu.lingdumodule.controller;

import java.io.Serializable;
import java.lang.reflect.Method;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.zfxx.entity.Pager;
import com.zfxx.service.BaseService;
import com.zfxx.utils.ResponseResult;


/**
 * 基础控制器层抽象类<br>
 * 其他控制器层可继承该抽象类<br>
 * 以确保基本接口的一致性
 * <br><br><div class=lingdu>作者: <span id=a>HY∞ <a class=b href="https://blog.csdn.net/lingdu_dou">990130556@qq.com</a><span> 零<b class=b>❤</b>度</span></span><img id=d src="https://profile.csdnimg.cn/4/4/1/1_lingdu_dou"style=""><br>创建时间: <h id=c>2019年11月29日下午3:11:56</h></div><style>.lingdu{color:#f7980d}#a{font-size:15px;color:#039c09}.b{color:#8bc34a}#c{color:#2196f3}#d{float:left;border-radius:40px;width:40px;}</style>
 */
public abstract class BaseController<T extends Serializable> {
	
	@Autowired
	private BaseService<T> baseService;
	
	
	/**
	 * 显示list页面<br>
	 * @param jsp 页面路径
	 * @return 返回页面
	 * <br><br><div class=lingdu>作者: <span id=a>HY∞ <a class=b href="https://blog.csdn.net/lingdu_dou">990130556@qq.com</a><span> 零<b class=b>❤</b>度</span></span><img id=d src="https://profile.csdnimg.cn/4/4/1/1_lingdu_dou"style=""><br>创建时间: <h id=c>2019年11月29日下午3:14:41</h></div><style>.lingdu{color:#f7980d}#a{font-size:15px;color:#039c09}.b{color:#8bc34a}#c{color:#2196f3}#d{float:left;border-radius:40px;width:40px;}</style>
	 */
	@RequestMapping("/list")
	public String list(String jsp){
		jsp="employee/list";
		System.out.println("list进来了!!!!!!!!!!!!!!!!!!!!!!!!!");
		return jsp;
	}
	
	/**
	 * ajax获取页面分页数据<br>
	 * @return 返回分页数据
	 * <br><br><div class=lingdu>作者: <span id=a>HY∞ <a class=b href="https://blog.csdn.net/lingdu_dou">990130556@qq.com</a><span> 零<b class=b>❤</b>度</span></span><img id=d src="https://profile.csdnimg.cn/4/4/1/1_lingdu_dou"style=""><br>创建时间: <h id=c>2019年11月29日下午3:15:34</h></div><style>.lingdu{color:#f7980d}#a{font-size:15px;color:#039c09}.b{color:#8bc34a}#c{color:#2196f3}#d{float:left;border-radius:40px;width:40px;}</style>
	 */
	@RequestMapping("/pager")
	@ResponseBody
	public Pager<T> pager(){
		return (Pager<T>) baseService.getPagingData();
	}
	
	/**
	 * 显示新增页面<br>
	 * @param jsp 页面路径
	 * @return 返回新增页面
	 * <br><br><div class=lingdu>作者: <span id=a>HY∞ <a class=b href="https://blog.csdn.net/lingdu_dou">990130556@qq.com</a><span> 零<b class=b>❤</b>度</span></span><img id=d src="https://profile.csdnimg.cn/4/4/1/1_lingdu_dou"style=""><br>创建时间: <h id=c>2019年11月29日下午3:30:21</h></div><style>.lingdu{color:#f7980d}#a{font-size:15px;color:#039c09}.b{color:#8bc34a}#c{color:#2196f3}#d{float:left;border-radius:40px;width:40px;}</style>
	 */
	@RequestMapping("/add")
	public String add(String jsp){
		return jsp;
	}
	
	/**
	 * 新增数据<br>
	 * @param t 实体类
	 * @return 返回统一返回类
	 * <br><br><div class=lingdu>作者: <span id=a>HY∞ <a class=b href="https://blog.csdn.net/lingdu_dou">990130556@qq.com</a><span> 零<b class=b>❤</b>度</span></span><img id=d src="https://profile.csdnimg.cn/4/4/1/1_lingdu_dou"style=""><br>创建时间: <h id=c>2019年11月29日下午3:33:18</h></div><style>.lingdu{color:#f7980d}#a{font-size:15px;color:#039c09}.b{color:#8bc34a}#c{color:#2196f3}#d{float:left;border-radius:40px;width:40px;}</style>
	 */
	@RequestMapping(value = "/save", method = RequestMethod.POST)
	@ResponseBody
	public ResponseResult save(T t){
		return ResponseResult.rr().setMessage(baseService.save(t)==null?ResponseResult.SAVE_FAILED:ResponseResult.SAVE_SUCCESS);
	}
	
	/**
	 * 删除数据<br>
	 * @param id 数据id
	 * @return 返回统一返回类
	 * <br><br><div class=lingdu>作者: <span id=a>HY∞ <a class=b href="https://blog.csdn.net/lingdu_dou">990130556@qq.com</a><span> 零<b class=b>❤</b>度</span></span><img id=d src="https://profile.csdnimg.cn/4/4/1/1_lingdu_dou"style=""><br>创建时间: <h id=c>2019年11月29日下午3:34:38</h></div><style>.lingdu{color:#f7980d}#a{font-size:15px;color:#039c09}.b{color:#8bc34a}#c{color:#2196f3}#d{float:left;border-radius:40px;width:40px;}</style>
	 */
	@RequestMapping("/delete")
	@ResponseBody
	public ResponseResult delete(Long id){
		return ResponseResult.rr().setMessage(baseService.delete(id)==null?ResponseResult.DELETE_FAILED:ResponseResult.DELETE_SUCCESS);
	}
	
	/**
	 * 显示编辑页面<br>
	 * @param id 数据id
	 * @param model 存放数据的模型
	 * @param jsp 页面路径
	 * @return 返回编辑页面
	 * <br><br><div class=lingdu>作者: <span id=a>HY∞ <a class=b href="https://blog.csdn.net/lingdu_dou">990130556@qq.com</a><span> 零<b class=b>❤</b>度</span></span><img id=d src="https://profile.csdnimg.cn/4/4/1/1_lingdu_dou"style=""><br>创建时间: <h id=c>2019年11月29日下午3:37:02</h></div><style>.lingdu{color:#f7980d}#a{font-size:15px;color:#039c09}.b{color:#8bc34a}#c{color:#2196f3}#d{float:left;border-radius:40px;width:40px;}</style>
	 */
	@RequestMapping("/edit")
	public String edit(Long id, Model model,String jsp){
		T t = baseService.getById(id);
		model.addAttribute("rr",ResponseResult.rr().setMessage(t==null?ResponseResult.FAILED_TO_GET_DATA:ResponseResult.SUCCESS).setData(t));
		return jsp;
	}
	
	/**
	 * 更新数据<br>
	 * @param t 实体类
	 * @return 返回统一返回类
	 * <br><br><div class=lingdu>作者: <span id=a>HY∞ <a class=b href="https://blog.csdn.net/lingdu_dou">990130556@qq.com</a><span> 零<b class=b>❤</b>度</span></span><img id=d src="https://profile.csdnimg.cn/4/4/1/1_lingdu_dou"style=""><br>创建时间: <h id=c>2019年11月29日下午3:39:28</h></div><style>.lingdu{color:#f7980d}#a{font-size:15px;color:#039c09}.b{color:#8bc34a}#c{color:#2196f3}#d{float:left;border-radius:40px;width:40px;}</style>
	 */
	@RequestMapping("/update")
	@ResponseBody
	public ResponseResult update(T t){
		try {
			Method method = t.getClass().getMethod("getId", t.getClass());
			if(baseService.getById(Long.parseLong(method.invoke(t,null)+""))==null){
				return ResponseResult.rr().setMessage(ResponseResult.UPDATE_FAILED_HAVE_BEEN_REMOVED);
			}
		} catch (Exception e) {
			System.out.println("测试中。。。反射不成功");// TODO
		}
		return ResponseResult.rr().setMessage(baseService.update(t,null)==0?ResponseResult.UPDATE_FAILED:ResponseResult.UPDATE_SUCCESS);
	}
	
	/**
	 * <span style="color:red">
	 * 方法上加注解:@ModelAttribute<br>
	 * 参数格式:@RequestParam(value = "id", required = false) Long id, Map<String, Object> map<br>
	 * </span>
	 * MethodName: getUser Author: gcl date: 2019年10月11日
	 *
	 * description:有 @ModelAttribute 标记的方法, 会在每个目标方法执行之前被 SpringMVC调用!
	 * 能有效的防止更新的时候,没有更新的字段被替换为null的bug,更新的时候先去数据 库中查询出该对象,然后更新的字段替换.没有更新的字段不替换
	 * 
	 * @param id
	 * @param map
	 */
//	@ModelAttribute
//	public void getEntity(@RequestParam(value = "id", required = false) Long id, Map<String, Object> map){
//		
//	}
	

}

统一返回类
ResponseResult

package com.zfxx.utils;

import java.lang.reflect.Field;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

/**
 * <b>响应结果统一封装类</b><br><br>
 * <b><span style="color:red">若调用该类定义的【成功】静态提示信息<br>
 * 或提示信息中存在“成功”或“失败”的字符<br>
 * 则不需要再设置状态码<br>
 * 若未调用本类定义的【成功】相关静态提示信息<br>
 * 且设置了自定义的【成功】相关提示信息中没有“成功”字符<br>
 * 则应同步设置状态码为:1;</span></b>
 * <br><br><div class=lingdu>作者: <span id=a>HY∞ <a class=b href="https://blog.csdn.net/lingdu_dou">990130556@qq.com</a><span> 零<b class=b>❤</b>度</span></span><img id=d src="https://profile.csdnimg.cn/4/4/1/1_lingdu_dou"style=""><br>创建时间: <h id=c>2019年10月17日上午8:33:26</h></div><style>.lingdu{color:#f7980d}#a{font-size:15px;color:#039c09}.b{color:#8bc34a}#c{color:#2196f3}#d{float:left;border-radius:40px;width:40px;}</style>
 */
public class ResponseResult {
	
/**状态码<span style="color:red">默认为0(失败)</span>*/
	private Integer state=STATE_ERR; 	//状态码默认为失败0
/**提示信息*/
	private String message;	 			//提示信息
/**数据*/
	private Object data;				//数据
	
	/**
	 * 无参构造方法
	 * <br><br><div class=lingdu>作者: <span id=a>HY∞ <a class=b href="https://blog.csdn.net/lingdu_dou">990130556@qq.com</a><span> 零<b class=b>❤</b>度</span></span><img id=d src="https://profile.csdnimg.cn/4/4/1/1_lingdu_dou"style=""><br>创建时间: <h id=c>2020年1月9日上午11:10:05</h></div><style>.lingdu{color:#f7980d}#a{font-size:15px;color:#039c09}.b{color:#8bc34a}#c{color:#2196f3}#d{float:left;border-radius:40px;width:40px;}</style>
	 */
	public ResponseResult() {
		super();
	}
	/**
	 * 状态码构造方法
	 * @param state 状态码值
	 * <br><br><div class=lingdu>作者: <span id=a>HY∞ <a class=b href="https://blog.csdn.net/lingdu_dou">990130556@qq.com</a><span> 零<b class=b>❤</b>度</span></span><img id=d src="https://profile.csdnimg.cn/4/4/1/1_lingdu_dou"style=""><br>创建时间: <h id=c>2020年1月9日上午11:10:30</h></div><style>.lingdu{color:#f7980d}#a{font-size:15px;color:#039c09}.b{color:#8bc34a}#c{color:#2196f3}#d{float:left;border-radius:40px;width:40px;}</style>
	 */
	public ResponseResult(Integer state) {
		super();
		this.state = state;
	}
	/**
	 * 状态码加提示信息构造方法
	 * @param state 状态码值
	 * @param message 提示信息
	 * <br><br><div class=lingdu>作者: <span id=a>HY∞ <a class=b href="https://blog.csdn.net/lingdu_dou">990130556@qq.com</a><span> 零<b class=b>❤</b>度</span></span><img id=d src="https://profile.csdnimg.cn/4/4/1/1_lingdu_dou"style=""><br>创建时间: <h id=c>2020年1月9日上午11:11:32</h></div><style>.lingdu{color:#f7980d}#a{font-size:15px;color:#039c09}.b{color:#8bc34a}#c{color:#2196f3}#d{float:left;border-radius:40px;width:40px;}</style>
	 */
	public ResponseResult(Integer state, String message) {
		super();
		this.state = state;
		this.message = message;
	}
	/**
	 * 状态码加数据构造方法
	 * @param state 状态码值
	 * @param data 数据
	 * <br><br><div class=lingdu>作者: <span id=a>HY∞ <a class=b href="https://blog.csdn.net/lingdu_dou">990130556@qq.com</a><span> 零<b class=b>❤</b>度</span></span><img id=d src="https://profile.csdnimg.cn/4/4/1/1_lingdu_dou"style=""><br>创建时间: <h id=c>2020年1月9日上午11:12:14</h></div><style>.lingdu{color:#f7980d}#a{font-size:15px;color:#039c09}.b{color:#8bc34a}#c{color:#2196f3}#d{float:left;border-radius:40px;width:40px;}</style>
	 */
	public ResponseResult(Integer state, Object data) {
		super();
		this.state = state;
		this.data = data;
	}
	/**
	 * 异常信息构造方法
	 * @param throwable 异常信息
	 * <br><br><div class=lingdu>作者: <span id=a>HY∞ <a class=b href="https://blog.csdn.net/lingdu_dou">990130556@qq.com</a><span> 零<b class=b>❤</b>度</span></span><img id=d src="https://profile.csdnimg.cn/4/4/1/1_lingdu_dou"style=""><br>创建时间: <h id=c>2020年1月9日上午11:13:08</h></div><style>.lingdu{color:#f7980d}#a{font-size:15px;color:#039c09}.b{color:#8bc34a}#c{color:#2196f3}#d{float:left;border-radius:40px;width:40px;}</style>
	 */
	public ResponseResult(Throwable throwable) {
		super();
		this.state = STATE_ERR;
		this.message = throwable.getMessage();
	}
	
	/**
	 * 获取一个新的ResponseResult对象
	 * @return 返回新的ResponseResult对象
	 * <br><br><div class=lingdu>作者: <span id=a>HY∞ <a class=b href="https://blog.csdn.net/lingdu_dou">990130556@qq.com</a><span> 零<b class=b>❤</b>度</span></span><img id=d src="https://profile.csdnimg.cn/4/4/1/1_lingdu_dou"style=""><br>创建时间: <h id=c>2020年1月9日上午11:07:45</h></div><style>.lingdu{color:#f7980d}#a{font-size:15px;color:#039c09}.b{color:#8bc34a}#c{color:#2196f3}#d{float:left;border-radius:40px;width:40px;}</style>
	 */
	public static ResponseResult rr(){
		return new ResponseResult();
	}
	
	/**
	 * <b>获取状态码</b><br>
	 * 顺带根据已知条件自动设置相应的状态码返回<br>
	 * @return 返回对应的状态码值
	 * <br><br><div class=lingdu>作者: <span id=a>HY∞ <a class=b href="https://blog.csdn.net/lingdu_dou">990130556@qq.com</a><span> 零<b class=b>❤</b>度</span></span><img id=d src="https://profile.csdnimg.cn/4/4/1/1_lingdu_dou"style=""><br>创建时间: <h id=c>2019年12月3日下午3:35:39</h></div><style>.lingdu{color:#f7980d}#a{font-size:15px;color:#039c09}.b{color:#8bc34a}#c{color:#2196f3}#d{float:left;border-radius:40px;width:40px;}</style>
	 */
	public Integer getState() {
		Class<? extends ResponseResult> c = this.getClass();
		Field[] fields = c.getFields();
		if(message!=null){
			for (Field field : fields) {
				try {
					if((field.getName().contains("SUCCESS")&&message.contains((String)field.get(c)))||message.contains(SUCCESS)){
						this.state=STATE_OK;break;
					}else if(message.contains(FAILED)){
						this.state=STATE_ERR;break;
					}
				} catch (IllegalArgumentException | IllegalAccessException e) {
					e.printStackTrace();
				}
			}
		}
//		this.state=message.contains(DELETE_SUCCESS)?1:message.contains(IMPORT_SUCCESS)?1:message.contains(SAVE_SUCCESS)?1:message.contains(UPDATE_SUCCESS)?1:message.contains(FORBID_SUCCESS)?1:message.contains(UNFORBID_SUCCESS)?1:message.contains(RESETPASSWORD_SUCCESS)?1:state;
		return state;
	}
	/**
	 * 设置状态码
	 * @param state 状态码值
	 * @return 返回当前对象
	 * <br><br><div class=lingdu>作者: <span id=a>HY∞ <a class=b href="https://blog.csdn.net/lingdu_dou">990130556@qq.com</a><span> 零<b class=b>❤</b>度</span></span><img id=d src="https://profile.csdnimg.cn/4/4/1/1_lingdu_dou"style=""><br>创建时间: <h id=c>2019年10月17日上午8:41:48</h></div><style>.lingdu{color:#f7980d}#a{font-size:15px;color:#039c09}.b{color:#8bc34a}#c{color:#2196f3}#d{float:left;border-radius:40px;width:40px;}</style>
	 */
	public ResponseResult setState(Integer state) {
		this.state = state;
		return this;
	}
	/**
	 * 获取提示信息
	 * @return 返回提示信息
	 * <br><br><div class=lingdu>作者: <span id=a>HY∞ <a class=b href="https://blog.csdn.net/lingdu_dou">990130556@qq.com</a><span> 零<b class=b>❤</b>度</span></span><img id=d src="https://profile.csdnimg.cn/4/4/1/1_lingdu_dou"style=""><br>创建时间: <h id=c>2019年10月17日上午8:42:08</h></div><style>.lingdu{color:#f7980d}#a{font-size:15px;color:#039c09}.b{color:#8bc34a}#c{color:#2196f3}#d{float:left;border-radius:40px;width:40px;}</style>
	 */
	public String getMessage() {
		return message;
	}
	/**
	 * 设置提示信息
	 * @param message 提示信息
	 * @return 返回当前对象
	 * <br><br><div class=lingdu>作者: <span id=a>HY∞ <a class=b href="https://blog.csdn.net/lingdu_dou">990130556@qq.com</a><span> 零<b class=b>❤</b>度</span></span><img id=d src="https://profile.csdnimg.cn/4/4/1/1_lingdu_dou"style=""><br>创建时间: <h id=c>2019年10月17日上午8:42:52</h></div><style>.lingdu{color:#f7980d}#a{font-size:15px;color:#039c09}.b{color:#8bc34a}#c{color:#2196f3}#d{float:left;border-radius:40px;width:40px;}</style>
	 */
	public ResponseResult setMessage(String message) {
		this.message = message;
		return this;
	}
	/**
	 * 获取数据
	 * @return 返回数据对象
	 * <br><br><div class=lingdu>作者: <span id=a>HY∞ <a class=b href="https://blog.csdn.net/lingdu_dou">990130556@qq.com</a><span> 零<b class=b>❤</b>度</span></span><img id=d src="https://profile.csdnimg.cn/4/4/1/1_lingdu_dou"style=""><br>创建时间: <h id=c>2019年10月17日上午8:43:08</h></div><style>.lingdu{color:#f7980d}#a{font-size:15px;color:#039c09}.b{color:#8bc34a}#c{color:#2196f3}#d{float:left;border-radius:40px;width:40px;}</style>
	 */
	public Object getData() {
		return data;
	}
	/**
	 * 设置数据
	 * @param data 数据对象
	 * <br><br><div class=lingdu>作者: <span id=a>HY∞ <a class=b href="https://blog.csdn.net/lingdu_dou">990130556@qq.com</a><span> 零<b class=b>❤</b>度</span></span><img id=d src="https://profile.csdnimg.cn/4/4/1/1_lingdu_dou"style=""><br>创建时间: <h id=c>2019年10月17日上午8:43:18</h></div><style>.lingdu{color:#f7980d}#a{font-size:15px;color:#039c09}.b{color:#8bc34a}#c{color:#2196f3}#d{float:left;border-radius:40px;width:40px;}</style>
	 */
	public ResponseResult setData(Object data) {
		this.data = data;
		return this;
	}
	
	

	
	/**成功<br>{@value}*/
	public static final int STATE_OK  = 1;
	/**失败<br>{@value}*/
	public static final int STATE_ERR = 0;
	/**{@value}*/
	public static final String SUCCESS = "成功";
	/**{@value}*/
	public static final String FAILED = "失败";
	
	/**{@value}*/
	public static final String SAVE_SUCCESS = "保存成功!";
	/**{@value}*/
	public static final String SAVE_FAILED = "保存失败!";
	/**{@value}*/
	public static final String SAVE_FAILED_ON_ACCESS = "保存失败,无新建权限";
	
	/**{@value}*/
	public static final String DELETE_SUCCESS = "删除成功!";
	/**{@value}*/
	public static final String DELETE_FAILED = "删除失败!";
	
	/**{@value}*/
	public static final String FAILED_TO_GET_DATA = "获取数据失败!未查询到该数据!";
	
	/**{@value}*/
	public static final String UPDATE_SUCCESS = "更新成功!";
	/**{@value}*/
	public static final String UPDATE_FAILED = "更新失败!";
	/**{@value}*/
	public static final String UPDATE_FAILED_HAVE_BEEN_REMOVED = "更新失败,该数据已被删除!";
	
	/**{@value}*/
	public static final String IMPORT_SUCCESS = "导入成功!";
	/**{@value}*/
	public static final String IMPORT_FAILED = "导入失败!";
	
	/**{@value}*/
	public static final String FORBID_FAILED = "禁用失败!";
	/**{@value}*/
	public static final String UNFORBID_FAILED = "解禁失败!";
	/**{@value}*/
	public static final String FORBID_SUCCESS = "禁用成功!";
	/**{@value}*/
	public static final String UNFORBID_SUCCESS = "解禁成功!";
	
	/**{@value}*/
	public static final String RESETPASSWORD_FAILED = "重置密码失败!";
	/**{@value}*/
	public static final String RESETPASSWORD_SUCCESS = "重置密码成功!";
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零〇°豆

今天快乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值