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>