因工作需要
由python工程师->java工程师
也算圆了大学时的梦想
一、Bean
// 依赖 mybatis mybatis-plus @TableName("tp_abcdr") @Data @NoArgsConstructor @JsonInclude(JsonInclude.Include.NON_NULL) public class Abcd implements Serializable { // id自增 @TableId(value = "id", type = IdType.AUTO) private Integer id; // 时间 @TableField(fill = FieldFill.INSERT) private Date createTime; // 时间戳时间 @TableField(fill = FieldFill.INSERT_UPDATE) private Long edittime; // 该数据库中 不存在 这个字段 @TableField(exist=false) private Byte[] feature; // 更新时间 @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime; /** * 是否删除 0 :删除 1:正常 */ @TableLogic private Integer isdel; // 必填字段 @NotNull(message = "图片地址必填") private String imgAddress; // range 取值范围 @NotNull(message = "异常状态不能为空") @Range(min = 0, max = 1, message = "异常状态值不存在") private Integer errorStatus; // 大小 @Size(max = 2000, message = "异常备注长度不得超过2000个字符") private String remark; // 正则表达式 @NotNull(message = "工人身份证不能为空") @Pattern(regexp = "(^[1-9]$)", message = "格式不正确") private String idNumber;
@TableField(fill = FieldFill.INSERT)
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@Value("${hat.broadcast.fileName}")
private String fileName; }
二、枚举
@Getter @AllArgsConstructor public enum HandleTypeEnum implements CodeEnum{ /** * 未处理 */ UNTREATED(0, "未处理"), /** * 已处理 */ PROCESSED(1, "已处理"), ; private Integer code; private String message; }
三、@JsonInclude(Include.NON_NULL)
https://www.cnblogs.com/-xuzhankun/p/8034179.html
四、mybatis-plus
@Update("updatehours set site_name=#{siteName} where site_id=#{siteId}") public int updateSectionHouesSiteName(@Param("siteName") String siteName, @Param("siteId") String siteId);
五、逻辑思路
1、创建表
2、根据数据库创建Bean
@TableName("表名") @Data @JsonInclude(JsonInclude.Include.NON_NULL) @NoArgsConstructor public class Banner implements Serializable { }
3、创建Mapper
@Mapper public interface BannerMapper extends BaseMapper<Banner> { }
4、创建Service接口
public interface BannerService extends IService<Banner> { /** * 新增banner图 */ boolean add(Banner banner); /** * 查询banner集合 */ List<Banner> query(Integer siteId); /** * 编辑banner图 */ boolean edit(Banner banner); /** * 软删banner图 */ boolean del(Integer id); /** * 查询banner详情 */ Banner queryById(Integer id); }
5、实现Service的接口,可能数量不够
@Service @Slf4j public class BannerServiceImpl extends ServiceImpl<BannerMapper, Banner> implements BannerService { @Resource private RedisService redisService; @Resource private CabinetSyncService cabinetSyncService; @Resource private EncodeDeviceService encodeDeviceService; /** * 新增banner数据 */ @Override @Transactional(rollbackFor = Exception.class) public boolean add(Banner banner) { } /** * 获取banner集合 */ @Override public List<Banner> query(Integer siteId) { } /** * 编辑banner数据 */ @Override @Transactional(rollbackFor = Exception.class) public boolean edit(Banner banner) { } /** * 根据id删除banner数据 */ @Override @Transactional(rollbackFor = Exception.class) public boolean del(Integer id) { } @Override public Banner queryById(Integer id) { return selectById(id); }
6、实现Controller
@Controller @RequestMapping("/pc/banner") public class BannerController { @Autowired private BannerService bannerService; @LogDetail(describe = "新增banner图") @PostMapping(value = "/add") @ResponseBody public Object add(@Valid Banner banner, BindingResult result) { if (result.hasErrors()) { // 抛出错误 } return ResultUtil.isOk(bannerService.add(banner)); } @LogDetail(describe = "获取banner数据集合") @GetMapping(value = "/query") @ResponseBody public Object query(Integer siteId) { } @LogDetail(describe = "编辑banner图") @PostMapping(value = "/edit") @ResponseBody public Object edit(Banner banner) { } @LogDetail(describe = "删除banner图") @PostMapping(value = "/del") @ResponseBody public Object del(Integer id) { } @LogDetail(describe = "根据id获取banner详情") @GetMapping(value = "/queryById") @ResponseBody public Object queryById(Integer id) { } }
注意:Controller里的@Autowired注解的是service的接口,而不是service的实现类
7、mybatis-plus用法
自己的博客链接:
https://www.cnblogs.com/wt7018/p/13357965.html
等于
Wrapper<Banner> wrapper = new EntityWrapper<>(); wrapper.eq("carousel_type", banner.getCarouselType()); wrapper.eq("img_address", banner.getImgAddress());