4种货物,如何使用一个接口实现CRUD:
package com.tansuo365.test1.service.goods; import com.tansuo365.test1.entity.Goods; import com.tansuo365.test1.mapper.goods.IGoodsCommonMapper; import java.util.List; /** * 货品公用service接口 * {@link #setGoodsTypeMapper 设置货品类型} * {@link #delete 删除单条元组} * {@link #deleteBatchByPKs 批量删除} * {@link #addBySelective 单条动态录入} * {@link #insertBatchList 批量录入} */ public interface IGoodsCommonService { public void setGoodsTypeMapper(IGoodsCommonMapper goodsTypeMapper); public IGoodsCommonMapper getGoodsTypeMapper(); //根据主键删除 public Integer delete(Long id); //根据主键批量删除 public Integer deleteBatchByPKs(Long[] ids); //录入(动态) public Integer addBySelective(Goods goods); //批量录入 public Integer insertBatchList(List<Goods> list); //按需获取 public List<Goods> getBySelective(Goods goods); //选择全部 public List<Goods> getAll(); //动态更新 public Integer updateBySelective(Goods goods); }
实现
package com.tansuo365.test1.service.goods; import com.tansuo365.test1.entity.Goods; import com.tansuo365.test1.mapper.goods.IGoodsCommonMapper; import com.tansuo365.test1.util.PetroleumCokeGradeUtil; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; /** * 货物crud公用service */ @Service public class GoodsCommonService implements IGoodsCommonService{ private IGoodsCommonMapper goodsCommonMapper; @Override public void setGoodsTypeMapper(IGoodsCommonMapper goodsTypeMapper) { this.goodsCommonMapper = goodsTypeMapper; } @Override public IGoodsCommonMapper getGoodsTypeMapper() { return goodsCommonMapper; } @Override public Integer delete(Long id) { return goodsCommonMapper.deleteByPrimaryKey(id); } @Override public Integer deleteBatchByPKs(Long[] ids) { return goodsCommonMapper.deleteBatchByPKArr(ids); } @Override public Integer addBySelective(Goods goods) { return goodsCommonMapper.insertSelective(goods); } @Override public Integer insertBatchList(List<Goods> list) { return goodsCommonMapper.insertBatch(list); } @Override public List<Goods> getBySelective(Goods goods) { return goodsCommonMapper.selectGoodsSelective(goods); } @Override public List<Goods> getAll() { return goodsCommonMapper.selectAll(); } @Override public Integer updateBySelective(Goods goods) { return goodsCommonMapper.updateByPrimaryKeySelective(goods); } }
Controller调用
package com.tansuo365.test1.controller.goods; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.tansuo365.test1.bean.goods.PetroleumCoke; import com.tansuo365.test1.bean.log.LogEnum; import com.tansuo365.test1.entity.Goods; import com.tansuo365.test1.mapper.goods.PetroleumCokeMapper; import com.tansuo365.test1.service.goods.IGoodsCommonService; //import com.tansuo365.test1.service.goods.PetroleumCokeServiceImpl; import com.tansuo365.test1.service.redis.RedisService; import com.tansuo365.test1.util.CodeJudgerUtils; import com.tansuo365.test1.util.PetroleumCokeGradeUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 石油焦Controller */ @RestController @RequestMapping("/petroleumCoke") public class PetroleumCokeController { private String instance = "石油焦"; @Autowired private IGoodsCommonService goodsCommonService; @Resource private PetroleumCokeMapper petroleumCokeMapper; @Autowired private RedisService redisService; @Autowired private RedisTemplate redisTemplate; @Autowired private CodeJudgerUtils codeJudgerUtils; /*动态获取数据*/ @RequestMapping("/selectSelective") public Map<String, Object> selectSelective(PetroleumCoke petroleumCoke, Integer page, Integer rows) { goodsCommonService.setGoodsTypeMapper(petroleumCokeMapper); Map<String, Object> map = new HashMap<String, Object>(); PageHelper.startPage(page, rows); List<Goods> list = goodsCommonService.getBySelective(petroleumCoke); PageInfo<Goods> pageInfo = new PageInfo<Goods>(list); map.put("rows", pageInfo.getList()); map.put("total", pageInfo.getTotal()); int code = 0; codeJudgerUtils.whichCodeIsOK(list,code,LogEnum.SEARCH_ACTION.toString(), instance); return map; } /*动态插入数据*/ //插入数据时根据sulfur字段判定品级并更新品级字段grade(特有) @RequestMapping("/insertSelective") public Integer insertSelective(PetroleumCoke petroleumCoke) { goodsCommonService.setGoodsTypeMapper(petroleumCokeMapper); Goods goods = PetroleumCokeGradeUtil.setGradeBySulfur(petroleumCoke); int code = goodsCommonService.addBySelective(goods); codeJudgerUtils.whichCodeIsOK(null,code, LogEnum.ADD_ACTION.toString(), instance); return code; } /*动态更新数据*/ @RequestMapping("/updateByPrimaryKeySelective") public Integer updateByPrimaryKeySelective(PetroleumCoke petroleumCoke) { goodsCommonService.setGoodsTypeMapper(petroleumCokeMapper); int code = goodsCommonService.updateBySelective(petroleumCoke); codeJudgerUtils.whichCodeIsOK(null,code, LogEnum.UPDATE_ACTION.toString(), instance); return code; } /*删除数据*/ @RequestMapping("/deleteByPrimaryKey") public Integer deleteByPrimaryKey(Long id) { goodsCommonService.setGoodsTypeMapper(petroleumCokeMapper); int code = goodsCommonService.delete(id); codeJudgerUtils.whichCodeIsOK(null,code,LogEnum.DELETE_ACTION.toString(),instance); return code; } /*批量删除*/ @RequestMapping("/deleteBatchByPKs") public Integer deleteBatch(@RequestParam(value = "ids[]") Long[] ids) { goodsCommonService.setGoodsTypeMapper(petroleumCokeMapper); int code = goodsCommonService.deleteBatchByPKs(ids); codeJudgerUtils.whichCodeIsOK(null,code,LogEnum.DELETE_ACTION.toString(),instance); return code; } // @Cacheable(value = "petroleumCokes") 不能加入缓存 /*选取所有石油焦信息*/ @RequestMapping("/selectAll") public List<Goods> selectAllPetroleumCoke() { goodsCommonService.setGoodsTypeMapper(petroleumCokeMapper); List<Goods> all = goodsCommonService.getAll(); int code = 0; codeJudgerUtils.whichCodeIsOK(all,code,LogEnum.SEARCH_ACTION.toString(),instance); return all; } //查询所有石油焦,加入缓存机制 // @RequestMapping("selectAll") // public List selectAllPetroleumCoke(){ //// List<PetroleumCoke> petroleumCokes = petroleumCokeMapper.selectAllPetroleumCoke(); //// map.put("petroleumCokes",petroleumCokes); //// return map; // // //字符串的序列化器 redis // RedisSerializer redisSerializer = new StringRedisSerializer(); // redisTemplate.setKeySerializer(redisSerializer); // List petroleumCokes = redisService.lGet("petroleumCokes", 0, -1); // System.out.println("查询缓存数据为"+petroleumCokes); // if (0 == petroleumCokes.size()) { // synchronized(this){ // System.out.println("进入第一个if"); // petroleumCokes = redisService.lGet("petroleumCokes", 0, -1); // if(0 == petroleumCokes.size()){ // System.out.println("第二个if显示了,表示缓存没有查到petroleumCokes."); // //缓存为空,查询数据库 // petroleumCokes = petroleumCokeMapper.selectAllPetroleumCoke(); // //把数据库查询出来的数据放入redis // redisService.lSet("petroleumCokes",petroleumCokes); // } // } // // } // return petroleumCokes; // // } }
实体继承Goods接口
package com.tansuo365.test1.bean.goods; //import cn.afterturn.easypoi.excel.annotation.Excel; import com.fasterxml.jackson.annotation.JsonFormat; import com.tansuo365.test1.entity.Goods; import com.tansuo365.test1.excel.ExcelCell; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.data.annotation.Transient; import java.io.Serializable; import java.util.Date; /** * 货品石油焦 * 原使用poi的导出(@Excel),改为直接使用js前端进行导出(@ExcelCell) * 指定的index如果不指定将按照数据库顺序给出,不影响导出 */ @Data @Builder @NoArgsConstructor @AllArgsConstructor public class PetroleumCoke implements Serializable,Goods { private static final long serialVersionUID = -6077958594667413658L; // @ExcelCell(index = 0) private Long id; // @Excel(name = "品级", orderNum = "0") // @ExcelCell(index = 1) private String grade; // @Excel(name = "省份", orderNum = "1") @ExcelCell(index = 0) private String province; // @Excel(name = "企业", orderNum = "2") @ExcelCell(index = 1) private String company; // @Excel(name = "简称", orderNum = "3") @ExcelCell(index = 2) private String s_company; // @Excel(name = "硫含量%", orderNum = "4") @ExcelCell(index = 3) private Double sulfur; // @Excel(name = "灰分%", orderNum = "5") @ExcelCell(index = 4) private Double ash; // @Excel(name = "挥发分%", orderNum = "6") @ExcelCell(index = 5) private Double volatile_matter; // @Excel(name = "扣水率%", orderNum = "7") @ExcelCell(index = 6) private Double wdr; // @Excel(name = "钒含量ppm", orderNum = "8") @ExcelCell(index = 7) private Double vanadium; // @Excel(name = "真密度g/cm³", orderNum = "9") @ExcelCell(index = 8) private Double density; // @Excel(name = "粉焦量%", orderNum = "10") @ExcelCell(index = 9) private Double coke_content; // @Excel(name = "类型", orderNum = "11") @ExcelCell(index = 10) private String coke_type; // @Excel(name = "今日报价", orderNum = "12") @ExcelCell(index = 11) private Double today_price; // @Excel(name = "备注", orderNum = "13") @ExcelCell(index = 12) private String remarks; // private Boolean expand_2; // private Boolean expand_3; @ExcelCell(index = 13) private String reporter; // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") // @Excel(name = "创建时间", exportFormat = "yyyy-MM-dd HH:mm:ss", orderNum = "14") @ExcelCell(index = 14) private Date create_time; // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") //时区+8 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") // @Excel(name = "更新时间", exportFormat = "yyyy-MM-dd HH:mm:ss", orderNum = "15") // @ExcelCell(index = 14) private Date update_time; // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @javax.persistence.Transient private String b_time; //起始时间 搜索用到 // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @javax.persistence.Transient private String e_time; //结束时间 搜索用到 }
package com.tansuo365.test1.entity; public interface Goods { }
ok
ps:mapper name 语句要统一对应
<!--动态查询--> <select id="selectGoodsSelective" parameterType="com.tansuo365.test1.bean.goods.PetroleumCoke" resultMap="BaseResultMap"> select <include refid="Base_Column_List"/> from petroleum_coke_tbl <where> <if test="id != null and id !='' "> and id = #{id} </if> <if test="province != null and province !='' "> and province = #{province} </if> <if test="company != null and company !='' "> and company = #{company} </if> <if test="s_company != null and s_company != '' "> and s_company = #{s_company} </if> <if test="sulfur != null and sulfur !='' "> and sulfur = #{sulfur} </if> <if test="ash != null and ash !='' "> and ash = #{ash} </if> <if test="volatile_matter != null and volatile_matter !='' "> and volatile_matter = #{volatile_matter} </if> <if test="wdr != null and wdr !='' "> and wdr = #{wdr} </if> <if test="vanadium != null and vanadium !='' "> and vanadium = #{vanadium} </if> <if test="coke_type != null and coke_type !='' "> and coke_type = #{coke_type} </if> <if test="today_price != null and today_price !='' "> and today_price = #{today_price} </if> <if test="remarks != null and remarks !='' "> and remarks = #{remarks} </if> <if test="reporter != null and reporter !='' "> and reporter = #{reporter} </if> <if test="grade !=null and grade != '' "> and grade = #{grade} </if> <if test="create_time != null and create_time !='' "> and create_time = #{create_time} </if> <if test="update_time != null and update_time !='' "> and update_time = #{update_time} </if> <if test="density != null and density != '' "> and density = #{density} </if> <if test="coke_content != null and coke_content != '' "> and coke_content = #{coke_content} </if> <if test="b_time != null and b_time != '' "> create_time >= #{b_time} </if> <if test="e_time != null and e_time != '' "> and create_time <= #{e_time} </if> </where> order by create_time DESC </select>