目前并未发布正式版,不能将其部署至生产环境使用,如若使用后果自负!!!
需要使用XMind打开查阅
目前表结构尚在设计阶段不稳定,待发布正式版本后,将完整表结构提交至GITHUB上!!!
aquaman
└── aquaman-base -- 海王系统基础包目录
└── aquaman-base-spring-boot-starter -- spring boot starter方式加载common和logger等工程
└── aquaman-common -- 公共模块
└── aquaman-logger -- 日志模块
└── code-generator -- mybatis-plus代码生成工具模块
└── aquaman-extension -- 扩展包目录
├── aquaman-redis -- redis缓存服务模块
├── aquaman-kafka -- kafka消息队列服务模块
├── aquaman-zookeeper -- zookeeper服务模块
└── aquaman-oss -- OSS第三方服务模块[阿里云]
├── aquaman-admin-fe -- 前端工程[9528]
├── aquaman-admin-os -- 海王用户管理系统[8081]
├── aquaman-gateway-os -- 海王网管系统[8888]
└── documents -- 海王管理系统文档
├── 1.requirements -- 需求整理
└── 2.design -- 海王管理系统设计文档
└── 1.db design -- 数据库设置文档
└── 3.software -- 软件
└── 4.notes -- 学习笔记
└── elasticsearch
└── golang
└── java
└── kafka
└── redis
└── zookeeper
└── 99.tool -- 工具&jar包等
类或方法有@ExampleCode注解,均为示例代码,使用则可以通过改方式进行扩展
package在com.aquaman.example下的文件均为示例代码,可供使用者参考和学习使用
所有查询实体类都继承至PageQuery,该类instanceQueryWrapper将会实例化一个QueryWrapper,且通过反射的方式将入参为空字符串的值,重新设置为null,具体代码如下:
/**
* 改造实例化QueryWrapper方法
* @return
*/
public QueryWrapper<T> instanceQueryWrapper() {
// 调用Mybatis-plus底层分页方法需要QueryWrapper对象,此处为了方便实例化查询对象
Class clazz = this.getClass();
Field[] fields = clazz.getDeclaredFields();
if(fields != null && fields.length > 0){
for(Field field : fields) {
try {
field.setAccessible(true);
if(StringUtils.equals("java.lang.String", field.getType().getCanonicalName())) {
String value = (String)field.get(this);
if(StringUtils.equals("", value)) {
field.set(this, null);
}
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
return new QueryWrapper(this);
}
IService默认page方法只能实例化一个空的QueryWrapper,如果有参数查询将不会把Query的参数带入sql查询,具体代码如下:
/**
* @author 创建者 wei.wang
* @author 修改者 wei.wang
* @version 2019/7/31
* @since 2019/7/31
*/
public interface IAquamanService<T> extends IService<T> {
/**
* 简化分页带参数查询
* @param query
* @return
*/
default IPage<T> pageByQuery(PageQuery query) {
return page(query, query.instanceQueryWrapper());
}
}
ORM框架MyBatis-Plus
还有很多,后期一一罗列...
在此鸣谢开源项目贡献者们