工程规划
为了统一配置和代码解耦,我们对代码重新进行了整理和规划。
重新规划后,代码结构如下:
kitty-pom: 统一管理 Maven 版本,打包配置
kitty-common: 公共代码模块,主要放置工具类
kitty-core: 核心代码模块,主要封装公共业务模块
kitty-admin: 后台管理模块,包含用户、角色、菜单管理等
kitty-boot: Spring Boot 启动模块,包含一些全局配置信息
优化详情
kitty-core
1. 新建 kitty-core 工程,把 kitty-admin 工程 page 包下的内容 迁移到 kitty-core 工程 page 包内。
2. 添加 kitty-common 依赖
<dependency> <groupId>com.louis</groupId> <artifactId>kitty-common</artifactId> <version>0.0.1-SNAPSHOT</version></dependency>
3. 添加统一控制器接口返回结果封装 HttpResult
HttpResult.java
package com.louis.kitty.core.http; public class HttpResult { private int code; private String msg; private Object data; public static HttpResult error() { return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, "未知异常,请联系管理员"); } public static HttpResult error(String msg) { return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, msg); } public static HttpResult error(int code, String msg) { HttpResult r = new HttpResult(); r.setCode(code); r.setMsg(msg); return r; } public static HttpResult ok(String msg) { HttpResult r = new HttpResult(); r.setMsg(msg); return r; } public static HttpResult ok(Object data) { HttpResult r = new HttpResult(); r.setData(data); return r; } public static HttpResult ok() { return new HttpResult(); } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public Object getData() { return data; } public void setData(Object data) { this.data = data; } }
4. 添加通用CURD接口
CurdService.java
package com.louis.kitty.core.service; import java.util.List; import com.louis.kitty.core.page.PageRequest; import com.louis.kitty.core.page.PageResult; /** * 通用CURD接口 */ public interface CurdService<T> { /** * 保存操作 * @param record * @return */ int save(T record); /** * 更新操作 * @param record * @return */ int update(T record); /** * 删除操作 * @param record * @return */ int delete(T record); /** * 批量删除操作 * @param entities */ int delete(List<T> records); /** * 根据ID查询 * @param id * @return */ T findById(Long id); /** * 分页查询 * 这里统一封装了分页请求和结果,避免直接引入具体框架的分页对象, 如MyBatis或JPA的分页对象 * 从而避免因为替换ORM框架而导致服务层、控制层的分页接口也需要变动的情况,替换ORM框架也不会 * 影响服务层以上的分页接口,起到了解耦的作用 * @param pageRequest 自定义,统一分页查询请求 * @return PageResult 自定义,统一分页查询结果 */ PageResult findPage(PageRequest pageRequest); }
5. 依赖父 pom
kitty-admin
1. 添加 kitty-common 依赖。
<dependency> <groupId>com.louis</groupId> <artifactId>kitty-common</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
2. 删除 page 包内容。
3. 把 Controller 的返回结果替换为 HttpResult 。
4. Service 接口统一继承 CurdService 接口。
5. 服务实现类,增删改查通用代码示例。
package com.louis.kitty.admin.sevice.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.louis.kitty.admin.dao.SysUserMapper; import com.louis.kitty.admin.model.SysUser; import com.louis.kitty.admin.sevice.SysUserService; import com.louis.kitty.core.page.PageRequest; import com.louis.kitty.core.page.PageResult; import com.louis.kitty.core.page.PageUtils; @Service public class SysUserServiceImpl implements SysUserService { @Autowired private SysUserMapper sysUserMapper; @Override public int save(SysUser record) { return sysUserMapper.insertSelective(record); } @Override public int update(SysUser record) { return sysUserMapper.updateByPrimaryKeySelective(record); } @Override public int delete(SysUser record) { return sysUserMapper.deleteByPrimaryKey(record.getUserId()); } @Override public int delete(List<SysUser> records) { for(SysUser record:records) { delete(record); } return 1; } @Override public SysUser findById(Long id) { return sysUserMapper.selectByPrimaryKey(id); } @Override public PageResult findPage(PageRequest pageRequest) { return PageUtils.getPageResult(pageRequest, getPageInfo(pageRequest)); } /** * 调用分页插件完成分页 * @param pageQuery * @return */ private PageInfo<SysUser> getPageInfo(PageRequest pageRequest) { int pageNum = pageRequest.getPageNum(); int pageSize = pageRequest.getPageSize(); PageHelper.startPage(pageNum, pageSize); List<SysUser> sysMenus = sysUserMapper.findPage(); return new PageInfo<SysUser>(sysMenus); } @Override public List<SysUser> findAll() { return sysUserMapper.findAll(); } }
6. 依赖父 pom
kitty-boot
1. 添加 kitty-common 依赖。
<dependency> <groupId>com.louis</groupId> <artifactId>kitty-common</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
2. 依赖父 pom
kitty-pom
1. 新建 kitty-pom 工程,添加 pom.xml。
2. 添加预依赖,汇总版本属性
3. 添加 Maven 子模块,添加打包配置
编译打包
选择 kitty-pom 下的 pom.xml 进行打包。
参考资料
源码下载
码云:https://gitee.com/liuge1988/kitty
作者:朝雨忆轻尘
出处:https://www.cnblogs.com/xifengxiaoma/
版权所有,欢迎转载,转载请注明原文作者及出处。
原文地址:https://www.cnblogs.com/xifengxiaoma/p/9499408.html
时间: 2024-11-10 22:08:18