栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

开课吧t31-抢票系统分享中断的说明及项目后端基础代码。

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

开课吧t31-抢票系统分享中断的说明及项目后端基础代码。

这个购票系统, 课程还可以, 如果预习过阿里开发手册的话, 听起来效果会更好。
后续的分享终端, 主要是因为后续课程的内容基本上是一个购票抢票系统的基于阿里开发手册规范的实践。
知道了本质之后, 这些分享就不再献丑了, 因为后续的内容, 我不可能写得比阿里开发手册更好。

当然, 关于这个系统的代码开发过程, 还是有得写的。 后续工作没那么忙的时候, 我会把这个t31项目的代码开发过程笔记整理好了之后, 逐一分享。
这里贴一段雪松老师的基础代码

实体基类

@Data
@JsonIgnoreProperties(value = {"handler"})
public abstract class BaseEntity implements Serializable {
    
    @TableId(value = "`id`", type = IdType.AUTO)
    protected Long id;
}

dao(mapper)接口

public interface ICrudDao extends BaseMapper {
    
    public List selectByPage(T entity);
}

这里的dao接口, 我们继承了mybatis-plus的baseMapper所以包含了baseMapper的所有方法

serivce接口定义

public interface ICrudService extends IService {
    
    PageInfo listPage(T entity, int pageNum, int pageSize);
    
    List list(T entity);
}

继承了IService, 所以, 包含了IService的所有方法

service实现

public class CrudServiceImpl extends ServiceImpl, T> implements ICrudService {
    @Override
    public PageInfo listPage(T entity, int pageNum, int pageSize) {
        return PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() ->
        {
            baseMapper.selectByPage(entity);
        });
    }

    @Override
    public List list(T entity) {
        return getBaseMapper().selectList(Wrappers.emptyWrapper());
    }
}

还有基础controller的实现

public abstract class BaseController, T extends BaseEntity> {
    @Autowired
    protected S service;
    protected Logger log = LoggerFactory.getLogger(this.getClass());

    
    @ApiOperation(value = "加载", notes = "根据ID加载")
    @GetMapping("/edit/{id}")
    public T edit(@PathVariable Long id) throws Exception {
        T entity = service.getById(id);
        afterEdit(entity);
        return entity;
    }

    
    @ApiOperation(value = "分⻚查询", notes = "分⻚查询")
    @PostMapping("/list-page")
    public PageInfo listPage(T entity, @RequestParam(name = "page", defaultValue = "1", required = false) int page,
                                @RequestParam(name = "rows", defaultValue = "10", required = false) int rows) {
        PageInfo result = service.listPage(entity, page, rows);
        return result;
    }

    
    @ApiOperation(value = "查询", notes = "根据实体条件查询")
    @RequestMapping(value = "/list", method = {RequestMethod.POST, RequestMethod.GET})
    public List list(T entity) {
        List list = service.list(entity);
        return list;
    }

    
    @ApiOperation(value = "保存", notes = "ID存在修改,不存在添加")
    @PostMapping("/save")
    public ResponseBean save(T entity) throws Exception {
        ResponseBean rm = new ResponseBean();
        try {
            //保存前处理实体类
            beforeSave(entity);
            service.saveOrUpdate(entity);
            rm.setModel(entity);
        } catch (Exception e) {
            e.printStackTrace();
            rm.setSuccess(false);
            rm.setMsg("保存失败");
        }
        return rm;
    }

    
    @ApiOperation(value = "删除", notes = "根据ID删除")
    @GetMapping("/delete/{id}")
    public ResponseBean delete(@PathVariable Long id) throws Exception {
        ResponseBean rm = new ResponseBean();
        try {
            service.removeById(id);
            rm.setModel(null);
        } catch (Exception e) {
            e.printStackTrace();
            rm.setSuccess(false);
            rm.setMsg("保存失败");
        }
        return rm;
    }

    
    @ApiOperation(value = "删除", notes = "批量删除")
    @RequestMapping(value = "/delete", method = {RequestMethod.POST, RequestMethod.GET})
    public ResponseBean delete(@RequestParam List ids) {
        ResponseBean rm = new ResponseBean();
        try {
            service.removeByIds(ids);
        } catch (Exception e) {
            e.printStackTrace();
            rm.setMsg("删除失败");
            rm.setSuccess(false);
        }
        return rm;
    }

    
    public void beforeSave(T entity) throws Exception {
    }

    
    public void afterEdit(T entity) {
    }
}

至此我们的基础代码就已经完成, 如果我们有某个表需要做网站的CRUD代码的话 ,直接继承entity、dao、service、controller 就可以实现基本的增删改查功能。

那么我们要怎么用它呢?

我们在工程下创建个业务实现的springboot服务。比如用户表的处理。

用户表: id, user_name 其他就不说了

  1. 创建数据库对应的po对象:

User 继承自 baseEntity

@Data
@TableName("`user`")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class User extends BaseEntity {
    @TableField("`user_name`")
    private String userName;
}
  1. 创建UserDao

    public interface UserDao extends ICrudDao {
    //这里不加任何自定义方法先, 当然是可以任意扩展的
    }
    
  2. 创建 IUserService

    public interface IMenuService extends ICrudService {
    //这里同样, 可以自己扩展
    }
    
  3. 实现IUserService接口 UserServiceImpl

    public class MenuServiceImpl extends CrudServiceImpl implements IMenuService {
        //废话一下, 如果service接口有新增, 这里加上实现
    }
    
  4. 创建UserController

@RestController
@RequestMapping("/user")
public class UserController extends BaseController {
    //如果没有特殊要求, 这里不需要任何代码, 全部用BaseController里面的, 是不是超级简单
}
  1. 测试, 启动工程:

    UserController实现了哪些方法呢 ?

    /user/edit/{id}

    /user/list-page

    /list

    /save 等等……

这样我们的代码复用目的是不是就达到了呢??

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/999108.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号