开源项目Springboot_v2真香系列
之前找过很多开源项目,用于生成代码,和权限管理,但功能全的需要付费,小功能的项目又不实用,这次的开源项目,功能十分强大,且拿来即用。
介绍
SpringBoot_v2项目是努力打造springboot框架的极致细腻的脚手架。原生纯净,可在线生成controller、mapperxml、dao、service、html、sql代码,极大减少开发难度,增加开发进度神器脚手架!!不求回报,你使用快乐就是这个项目最大的快乐!后台管理包含代码生成器
UI页面
除了代码生成器,还有表单构建,系统监控,定时任务
技术应用
技术 | 名称 | 官网 | 备注 |
---|---|---|---|
springboot | springboot框架 | | |
Apache Shiro | 权限框架 | | |
MyBatis Generator | 代码生成 | | |
PageHelper | MyBatis物理分页插件 | | |
hikari | 数据库连接池 | | |
Thymeleaf | 模板引擎 | | |
Log4J | 日志组件 | | |
Swagger2 | 接口测试框架 | | |
Maven | 项目构建管理 | | |
Websocket | websocket消息通知 | | |
velocity | 模板引擎 | | |
kaptcha | google验证码 | | |
devtools | 热部署 | | |
GSON | 谷歌json | | |
druid | 阿里连接池 | | |
quartz | 定时框架 | | |
部署
1.导入doc文件夹里面的springbootv2.sql到数据库
注意:由于数据库设置问题,个人进行导入会出现乱码,导致前端页面乱码,非编码
2.确认自己的mysql版本 进行修改jar 在pom.xml 73-84行
Select@@version
3.修改application-dev.yml 里面自己数据库版本对应的jdbc链接
4.正常启动run SpringbootStart.java
生成代码
@GetMapping("/one")
@RequiresPermissions("system:autocode:one")
public String one(ModelMap model)
{
String str="单表代码生成";
setTitle(model, new TitleVo("生成", str+"管理", true,"欢迎进入"+str+"页面", true, false));
//查询表名 引擎
List<TsysTables> tables=generatorService.queryList(null);
//查询表对应权限
List<TsysPermission> permissions= sysPermissionService.list2(null) ;
model.addAttribute("tables", tables);
model.addAttribute("permissions", permissions);
return prefix + "/one";
}
@PostMapping("/saveOne")
@ResponseBody
public AjaxResult saveOne(String allColumnss,String tableName,String conditionQueryField,String pid,int sqlcheck) throws Exception{
JSONArray array= JSONUtil.parseArray(allColumnss);
//遗留可用前端修改传入的字段等信息(未完善)
List<BeanColumn> beanColumns2=JSONUtil.toList(array, BeanColumn.class);
List<TsysTables> list= generatorService.queryList(tableName);
if(list.size()>0) {
TsysTables tables=list.get(0);
List<BeanColumn> beanColumns= generatorService.queryColumns2(tableName);
AutoCodeUtil.autoCodeOneModel(sysUtilService,tables, beanColumns,conditionQueryField,pid,sqlcheck);
}
return AjaxResult.success();
}
autoCodeOneModel方法
public static void autoCodeOneModel(SysUtilService sysUtilService,TsysTables tables,List<BeanColumn> beanColumns,String conditionQueryField,String pid,int sqlcheck){
//设置velocity资源加载器
Properties prop = new Properties();
prop.put("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader" );
Velocity.init(prop);
GlobalConfig globalConfig= AutoCodeConfig.getGlobalConfig();
Map<String, Object> map = new HashMap<>();
//数据库表数据
map.put("TsysTables",tables);
//字段集合
map.put("beanColumns",beanColumns);
//配置文件
map.put("globalConfig",globalConfig);
map.put("datetime",new DateTime());
map.put("pid",pid);
map.put("sqlcheck",sqlcheck);
map.put("conditionQueryField",conditionQueryField);
map.put("conditionQueryField_a",com.fc.test.util.StringUtils.firstLowerCase(conditionQueryField));
map.put("SnowflakeIdWorker", SnowflakeIdWorker.class);
//需要导入的java类
map.put("JavaClassPackages", getJavaClassPackage(beanColumns));
VelocityContext context = new VelocityContext(map);
//获取模板列表
List<String> templates = getTemplates();
for (String template : templates) {
try {
if(template.contains("menu.sql.vm")) {
if(sqlcheck==1) {//执行sql
Template tpl = Velocity.getTemplate(template, "UTF-8" );
StringWriter sw = new StringWriter();
tpl.merge(context, sw);
System.out.println(sw);
executeSQL(sysUtilService, sw.toString());
}else {//只输出
Template tpl = Velocity.getTemplate(template, "UTF-8" );
StringWriter sw = new StringWriter();
tpl.merge(context, sw);
System.out.println(sw);
}
}else {
String filepath=getCoverFileName(template,tables.getTableModel_a() ,tables.getTableModel(),globalConfig.getParentPack() , "model","gen");
Template tpl = Velocity.getTemplate(template, "UTF-8" );
File file = new File(filepath);
if (!file.getParentFile().exists())
file.getParentFile().mkdirs();
if (!file.exists())
file.createNewFile();
try (FileOutputStream outStream = new FileOutputStream(file);
OutputStreamWriter writer = new OutputStreamWriter(outStream, "UTF-8");
BufferedWriter sw = new BufferedWriter(writer)) {
tpl.merge(context, sw);
sw.flush();
System.out.println("成功生成Java文件:" + filepath);
}
}
} catch (IOException e) {
try {
throw new Exception("渲染模板失败,表名:" +tables.getTableName()+"\n"+e.getMessage());
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
}
其中VelocityContext非常类似hashtable 是上面提到的velocity语法
GlobalConfig用于自动生成配置文件类
登录页面
表单构建
左侧功能区域拖动到右侧生成HTML代码
系统监控
代码实现
this.jvmSpecInfo=SystemUtil.getJvmSpecInfo();
//取得Java Virtual Machine Implementation的信息
this.jvmInfo=SystemUtil.getJvmInfo();
//取得Java Specification的信息
this.javaSpecInfo=SystemUtil.getJavaSpecInfo();
//取得Java Implementation的信息
this.javaInfo=SystemUtil.getJavaInfo();
//取得当前运行的JRE的信息
this.javaRuntimeInfo=SystemUtil.getJavaRuntimeInfo();
//取得OS的信息
this.osInfo=SystemUtil.getOsInfo();
//取得User的信息
this.userInfo=SystemUtil.getUserInfo();
//取得Runtime的信息
this.runtimeInfo=SystemUtil.getRuntimeInfo();
//取得Host的信息
this.hostInfo=SystemUtil.getHostInfo();
//JDK启动时间
this.startTime=getStartTime();
//JDK运行时间
this.runTime=getRunTime();
//获得JVM最大内存
this.maxMemory = FileUtil.readableFileSize(SystemUtil.getRuntimeInfo().getMaxMemory());
//获得JVM已分配内存
this.totalMemory = FileUtil.readableFileSize(SystemUtil.getRuntimeInfo().getTotalMemory());
//获得JVM已分配内存中的剩余空间
this.freeMemory = FileUtil.readableFileSize(SystemUtil.getRuntimeInfo().getFreeMemory());
//JVM最大可用内存
this.usableMemory = FileUtil.readableFileSize(SystemUtil.getRuntimeInfo().getUsableMemory());
雪花算法生成分布式ID
/**
* Twitter_Snowflake
* SnowFlake的结构如下(每部分用-分开):
* 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000
* 1位标识,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0
* 41位时间截(毫秒级),注意,41位时间截不是存储当前时间的时间截,而是存储时间截的差值(当前时间截 - 开始时间截)
* 得到的值),这里的的开始时间截,一般是我们的id生成器开始使用的时间,由我们程序来指定的(如下下面程序IdWorker类的startTime属性)。41位的时间截,可以使用69年,年T = (1L << 41) / (1000L * 60 * 60 * 24 * 365) = 69
* 10位的数据机器位,可以部署在1024个节点,包括5位datacenterId和5位workerId
* 12位序列,毫秒内的计数,12位的计数顺序号支持每个节点每毫秒(同一机器,同一时间截)产生4096个ID序号
* 加起来刚好64位,为一个Long型。
* SnowFlake的优点是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由数据中心ID和机器ID作区分),并且效率较高,经测试,SnowFlake每秒能够产生26万ID左右。
*/
还有这个天气预报小插件挺有意思
项目地址
https://gitee.com/bdj/SpringBoot_v2
- 点赞
- 收藏
- 关注作者
评论(0)