BaseController

开发工具与关键技术:Eclipse 10、java
作者:梁添荣
撰写时间:2020-05-28

在ssm项目中,多个controller会有很多相同的代码或使用相同的功能,例如增删查改,这时我们就可以编写一个BaseController了,然后就继承该类,需要时再使用里面的方法。BaseController代码如下:

package com.gx.commom; import java.util.List;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.context.ContextLoader; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.multipart.MultipartFile;

import com.alibaba.fastjson.JSON;
import com.gx.exception.MessageException; import com.gx.util.JsonUtil;
import com.gx.vo.Message;
/** * * @author TIAN * * @param 该类型决定该类的方法形参Model类型,但不决定方法里的List类型,为什么?? */
public abstract class BaseController{

//==========ProjectUtil拓展功能↓

/**==说明:
 * 
 * 1.该功能是基于实现类BaseServiceImpl完成,
 * 
 * 2.用到的自己的工具类JsonUtil;
 * 	  和JSON.toJSONString,是import com.alibaba.fastjson.JSON;请配置在Maven的pom.xml配置
 * 
 * 3.继承该类后,要使用某一功能时,在子类里按:shift+alt+s键,
 *   选择Override..开头的选项,再选择对应的方法提取出来,提取出来后,
 *   请在方法里的super.某功能前写:bean.set("service的bean");
 */

//==用ThreadLocal,防止全局变量引起的并发问题(https://blog.csdn.net/rugaxm/article/details/8551905)
protected ThreadLocal<String> bean = new ThreadLocal<String>();

protected final String AJSON_UTF8="application/json;charset=UTF-8";
 	 	//==获取bean 	private ThreadLocal<BaseService<Model, Integer>> threadLocalBaseService = new ThreadLocal<BaseService<Model, Integer>>(); 	private BaseService<Model, Integer> base; 	private void getBean() { 		if(bean.get()==null) { 			throw new MessageException(403, "非法访问"); 		} 		WebApplicationContext act = ContextLoader.getCurrentWebApplicationContext(); 		base =(BaseService<Model, Integer>) act.getBean(bean.get()); 		threadLocalBaseService.set(base); 	} 	
/**单表分页查询/模糊查询,like不为空或不是null,则是模糊查询,若数据有date类型,则yyyy-MM-dd格式*/
@ResponseBody
@RequestMapping(value = "/selectSingleTableOrLike",produces=AJSON_UTF8)
protected Object selectSingleTableOrLike(Integer curPage,Integer pageSize,String like) { 		getBean();
	List<Model> list=threadLocalBaseService.get().selectSingleTableOrLike((curPage-1)*pageSize, pageSize, like); 		int count=threadLocalBaseService.get().totalRowsSingleTable(like); 		return JsonUtil.toJsonYmd(curPage, count, list, true);
}
/**单表分页查询/模糊查询,like不为空或不是null,则是模糊查询,若数据有date类型,则yyyy-MM-dd HH:mm:ss格式*/
@ResponseBody
@RequestMapping(value = "/selectSingleTableOrLikeByHms",produces=AJSON_UTF8)
protected Object selectSingleTableOrLikeByHms(Integer curPage,Integer pageSize,String like) { 		getBean();
	List<Model> list=threadLocalBaseService.get().selectSingleTableOrLike((curPage-1)*pageSize, pageSize, like); 		int count=threadLocalBaseService.get().totalRowsSingleTable(like); 		return JsonUtil.toJsonHms(curPage, count, list, true);
}

/**连表分页查询/模糊查询,,当like不为空或不是null,则是模糊查询,若数据有date类型,则yyyy-MM-dd格式*/
@ResponseBody
@RequestMapping(value = "/selectMultilistOrLike",produces=AJSON_UTF8)
protected Object selectMultilistOrLike(Integer curPage,Integer pageSize,String like) { 		getBean();
	List<Model> list=threadLocalBaseService.get().selectMultilistOrLike((curPage-1)*pageSize, pageSize, like);
	int count=threadLocalBaseService.get().totalRowsMultilist(like); 		return JsonUtil.toJsonYmd(curPage, count, list, true);
}
/**连表分页查询/模糊查询,,当like不为空或不是null,则是模糊查询,若数据有date类型,则yyyy-MM-dd HH:mm:ss格式*/
@ResponseBody
@RequestMapping(value = "/selectMultilistOrLikeByHms",produces=AJSON_UTF8)
protected Object selectMultilistOrLikeByHms(Integer curPage,Integer pageSize,String like) { 		getBean();
	List<Model> list=threadLocalBaseService.get().selectMultilistOrLike((curPage-1)*pageSize, pageSize, like);
	int count=threadLocalBaseService.get().totalRowsMultilist(like); 		return JsonUtil.toJsonHms(curPage, count, list, true);
}

/**新增,若实体类record中属性的值null,则该属性会插入数据库*/
@ResponseBody
@RequestMapping(value = "/insert",produces=AJSON_UTF8)
protected Object insert(Model record){ 		getBean();
	int rs=threadLocalBaseService.get().insert(record);
	Message message=rs>0?new Message(200, "成功"):new Message(500,"服务器异常,请稍后重试");
	return JSON.toJSONString(message);
}

/**新增,若实体类record中属性的值null,则该属性不会插入数据库*/
@ResponseBody
@RequestMapping(value = "/insertSelective",produces=AJSON_UTF8)
protected Object insertSelective(Model record){ 		getBean();
	int rs=threadLocalBaseService.get().insertSelective(record);
	Message message=rs>0?new Message(200, "成功"):new Message(500,"服务器异常,请稍后重试");
	return JSON.toJSONString(message);
}

/**新增兼文件上传,若实体类record中属性的值null,则该属性会插入数据库*/
//required:默认true,设为true时且mFile为null时会抛出异常:The current request is not a multipart request] with root cause;
//并且,如果controller重写该方法,形参上也要添加@RequestParam(value="upFile",required=false),否则无法获取照片
@ResponseBody
@RequestMapping(value = "/insertAndFile",produces=AJSON_UTF8)
protected Object insertAndFile(Model record,@RequestParam(value="upFile",required=false)MultipartFile mFile){ 		getBean();
	int rs=threadLocalBaseService.get().insert(record);
	Message message=rs>0?new Message(200, "成功"):new Message(500,"服务器异常,请稍后重试");
	return JSON.toJSONString(message);
}

/**新增兼文件上传,若实体类record中属性的值null,则该属性不会插入数据库*/
//required:默认true,设为true时且mFile为null时会抛出异常:The current request is not a multipart request] with root cause;
//并且,如果controller重写该方法,形参上也要添加@RequestParam(value="upFile",required=false),否则无法获取照片
@ResponseBody
@RequestMapping(value = "/insertSelectiveAndFile",produces=AJSON_UTF8)
protected Object insertSelectiveAndFile(Model record,@RequestParam(value="upFile",required=false)MultipartFile mFile){ 		getBean();
	int rs=threadLocalBaseService.get().insertSelective(record);
	Message message=rs>0?new Message(200, "成功"):new Message(500,"服务器异常,请稍后重试");
	return JSON.toJSONString(message);
}

/**修改,若实体类record中属性的值null,则该属性会插入数据库*/
@ResponseBody
@RequestMapping(value = "/update",produces=AJSON_UTF8)
protected Object  update(Model record,@RequestParam(value="upFile",required=false)MultipartFile mFile){ 		getBean();
	int rs=threadLocalBaseService.get().updateByPrimaryKey(record);
	Message message=rs>0?new Message(200, "成功"):new Message(500,"服务器异常,请稍后重试");
	return JSON.toJSONString(message);
}

/**修改,若实体类record中属性的值null,则该属性不会插入数据库*/
@ResponseBody
@RequestMapping(value = "/updateSelective",produces=AJSON_UTF8)
protected Object  updateSelective(Model record,@RequestParam(value="upFile",required=false)MultipartFile mFile){ 		getBean();
	int rs=threadLocalBaseService.get().updateByPrimaryKeySelective(record);
	Message message=rs>0?new Message(200, "成功"):new Message(500,"服务器异常,请稍后重试");
	return JSON.toJSONString(message);
}

/**根据id删除*/
@ResponseBody
@RequestMapping(value = "/delete",produces=AJSON_UTF8)
protected Object delete(Integer id){ 		getBean();
	int rs=threadLocalBaseService.get().deleteByKey(id);
	Message message=rs>0?new Message(200, "成功"):new Message(500,"服务器异常,请稍后重试");
	return JSON.toJSONString(message);
}

/**根据id查询*/
@ResponseBody
@RequestMapping(value = "/selectByKey",produces=AJSON_UTF8)
protected Object selectByKey(Integer id) { 		getBean();
	return JSON.toJSONString(threadLocalBaseService.get().selectByKey(id));
}

/**绑定下拉框*/
@ResponseBody
@RequestMapping(value = "/selectOption",produces=AJSON_UTF8)
protected Object selectOption() { 		getBean();
	return JSON.toJSONString(threadLocalBaseService.get().selectOption());
}

/**条件查找用户*/
@ResponseBody
@RequestMapping(value = "/selectByName",produces=AJSON_UTF8)
protected Object selectByName(String name) { 		getBean();
	return JSON.toJSONString(threadLocalBaseService.get().selectByName(name));
}

/**单表查询所有*/
@ResponseBody
@RequestMapping(value = "/selectSingleTable",produces=AJSON_UTF8)
protected Object selectSingleTable(String name) { 		getBean();
	return JSON.toJSONString(threadLocalBaseService.get().selectSingleTable());
}
//==========ProjectUtil拓展功能↑

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值