[implements] - 一个接口的使用
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>
[implements] - 一个接口的使用的更多相关文章
- 35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n
35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现in ...
- Delphi 提示在Delphi的IDE中,按Ctrl+Shift+G键可以为一个接口生成一个新的GUID。
对于Object Pascal语言来说,最近一段时间最有意义的改进就是从Delphi3开始支持接口(interface),接口定义了能够与一个对象进行交互操作的一组过程和函数.对一个接口进行定义包含两 ...
- 创建一个接口Shape,其中有抽象方法area,类Circle 、Rectangle实现area方法计算其面积并返回。又有Star实现Shape的area方法,其返回值是0,Star类另有一返回值boolean型方法isStar;在main方法里创建一个Vector,根据随机数的不同向其中加入Shape的不同子类对象(如是1,生成Circle对象;如是2,生成Rectangle对象;如是3,生成S
题目补充: 创建一个接口Shape,其中有抽象方法area,类Circle .Rectangle实现area方法计算其面积并返回. 又有Star实现Shape的area方法,其返回值是0,Star类另 ...
- java一个接口可以继承另外一个接口吗
一个接口可以继承多个接口. interface C extends A, B {}是可以的. 一个类可以实现多个接口: class D implements A,B,C{} 但是一个类只能继承一个类, ...
- java new一个接口到底要做什么
转自:http://www.cnblogs.com/yjmyzz/p/3448330.html java中的匿名类有一个倍儿神奇的用法,见下面代码示例: 1 package contract; 2 3 ...
- new一个接口
首先我们先看看接口的定义: 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方 ...
- spring的@primary和@qualifier注解解决一个接口多个实现的注入问题
Spring中提供了@Primary和@Qualifier注解来解决一个接口多个实现的注入问题. @Primary注解 Spring中有提供一个@Primary注解,具体的作用是在一个接口有多个实现类 ...
- 【翻译】在TypeScript中,Extends和Implements一个抽象类有什么不同
我们知道在TypeScript中一个类既可以被implement也可以被extends,有一些C#或java基础的同学可能会对此感到困惑,因为在上述两个面向对象的语言里面只有接口可以被implemen ...
- @Autowired 和 @Resource注解, 一个接口有多个实现类的时候Spring注入遇到的问题
先说下我遇到的问题,有一个接口 CompensationService, 有两个实现类 MusicCompensationStrategyImpl 和 TakeDeliveryCompensati ...
随机推荐
- 【Alpha版本】冲刺阶段——Day7
[Alpha版本]冲刺阶段--Day7 阅读目录 今日进展 今日贡献量 贡献量汇总 TODOList 及项目燃尽图 [今日进展] 将项目源文件打成jar包,并运行测试 完成答辩ppt 项目运行情况 主 ...
- JAVA中异常状况总结
之前在<会当凌绝顶>这本书中学到过对于异常处理的知识,当时也是根据书上的代码,自己进行编写大概知道是怎么回事儿,王老师给我们上了一节课之后,发现异常处理可以发挥很大的作用. 通过在网络上 ...
- IDEA相关知识整理
一.离线下载插件[也可以通过代理的方式下载插件] http://plugins.jetbrains.com/ 下载离线插件 settings -> plugins -> install p ...
- Linux基础命令---traceroute追踪路由
traceroute traceroute指令输出到目标主机的路由包.Traceroute跟踪从IP网络到给定主机的路由数据包.它利用IP协议的生存时间(TTL)字段,并试图在通往主机的路 ...
- echo 命令详解
echo命令用于在shell中打印shell变量的值,或者直接输出指定的字符串. 选项 -e:激活转义字符. 使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出: \a ...
- C#简单线程
一.实例1 static void Main(string [] args) { Console.WriteLine("开始线程"); startFunc(); Console.W ...
- JavaScript 中禁止用户右键菜单,复制,选取,Ctrl,Alt,Shift. 获取宽高,清除浮动
//禁用右键菜单 document.oncontextmenu = function(){ event.returnValue = false; } //禁用选取内容 document.onselec ...
- Django的View
一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. ...
- How many zero's and how many digits ? UVA - 10061
Given a decimal integer number you will have to find out how many trailing zeros will be there in it ...
- Oracle数据库的入门之一
Oracle的介绍: Oracle Database,又名Oracle RDBMS,或简称Oracle.是甲骨文公司的一款关系数据库管理系统.它是在数据库领域一直处于领先地位的产品.可以说Oracle ...