package com.sogdata.ideology.generate;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.regex.Matcher;
/**
* summary: 自动生成 repository entity service controller
*
* @author : Ray
*/
public class CodeGenerateApplication {
/**
* 项目路径
*/
private final static String PROJECT_PATH = new File("").getAbsolutePath();
/**
* 数据库连接
*/
private static Connection connection;
/**
* 默认前缀路径
*/
private final static String FILE_PATH_PREFIX = "src" + File.separator + "main" + File.separator + "java";
/**
* 包名称 JAVA 表示法
*/
private final static String PACKAGE_NAME = "com.sogdata.ideology.generate.aa";
/**
* 包路径 绝对路径
*/
private static String packageFilePath = PROJECT_PATH + File.separator + FILE_PATH_PREFIX + File.separator + PACKAGE_NAME;
/**
* 创建人
*/
private final static String AUTHOR = "Ray";
/**
* 数据库IP
*/
private final static String IP = "172.17.2.253";
/**
* 数据库连接端口
*/
private final static String PORT = "3306";
/**
* 数据库名称
*/
private final static String DB_NAME = "ysxt-dev";
/**
* 数据库表名称
*/
private final static String TABLE_NAME = "generate_code";
/**
* 数据库账户
*/
private final static String USER_NAME = "ysxt_u";
/**
* 数据库密码
*/
private final static String PASSWORD = "ysxt@2020";
/**
* 创建时间
*/
private final static String CREATE = LocalDate.now().toString();
/**
* JPA 工具类的包路径
*/
private final static String JPA_UTIL_PACKAGE_PATH = "com.sogdata.ideology.repository.util";
/**
* Json格式化工具类包路径
*/
private final static String JSON_UTIL_PACKAGE_PATH = "com.sogdata.ideology.dto";
public static void main(String[] args) throws IOException {
CodeGenerateApplication codeGenerateApplication = new CodeGenerateApplication();
JavaFilePath entity = codeGenerateApplication.createEntity(TABLE_NAME, PACKAGE_NAME);
System.out.println("entity =" + entity);
JavaFilePath repository = codeGenerateApplication.createRepository(TABLE_NAME, PACKAGE_NAME);
System.out.println("repository =" + repository);
JavaFilePath service = codeGenerateApplication.createService(TABLE_NAME, PACKAGE_NAME);
System.out.println("service =" + service);
JavaFilePath controller = codeGenerateApplication.createController(TABLE_NAME, PACKAGE_NAME);
System.out.println("controller =" + controller);
//释放资源
closeMySqlConnection();
}
static {
try {
if (packageFilePath.contains(".")) {
packageFilePath = packageFilePath.replaceAll("\\.", Matcher.quoteReplacement(File.separator));
}
File packageDir = new File(packageFilePath);
if (!packageDir.exists()) {
boolean mkdir = packageDir.mkdir();
if (mkdir) {
System.out.println("业务包路径初始化成功=>" + packageDir.getAbsoluteFile());
} else {
System.out.println("业务包路径初始化失败=>" + packageDir.getAbsoluteFile());
}
}
File entityDir = new File(packageFilePath + File.separator + "entity");
if (!entityDir.exists()) {
boolean mkdir = entityDir.mkdir();
if (mkdir) {
System.out.println("业务包路径-entity路径初始化成功=>" + entityDir.getAbsoluteFile());
} else {
System.out.println("业务包路径-entity路径初始化失败=>" + entityDir.getAbsoluteFile());
}
}
File repositoryDir = new File(packageFilePath + File.separator + "repository");
if (!repositoryDir.exists()) {
boolean mkdir = repositoryDir.mkdir();
if (mkdir) {
System.out.println("业务包路径-repository路径初始化成功=>" + repositoryDir.getAbsoluteFile());
} else {
System.out.println("业务包路径-repository路径初始化失败=>" + repositoryDir.getAbsoluteFile());
}
}
File serviceDir = new File(packageFilePath + File.separator + "service");
if (!serviceDir.exists()) {
boolean mkdir = serviceDir.mkdir();
if (mkdir) {
System.out.println("业务包路径-service路径初始化成功=>" + serviceDir.getAbsoluteFile());
} else {
System.out.println("业务包路径-service路径初始化失败=>" + serviceDir.getAbsoluteFile());
}
}
File controllerDir = new File(packageFilePath + File.separator + "controller");
if (!controllerDir.exists()) {
boolean mkdir = controllerDir.mkdir();
if (mkdir) {
System.out.println("业务包路径-controller路径初始化成功=>" + controllerDir.getAbsoluteFile());
} else {
System.out.println("业务包路径-controller路径初始化失败=>" + controllerDir.getAbsoluteFile());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 将字符串的首字母转大写
*
* @param str 需要转换的字符串
* @return 转换后的字母
*/
private String upperCaseFirstName(String str) {
// 进行字母的ascii编码前移,效率要高于截取字符串进行转换的操作
char[] cs = str.toCharArray();
cs[0] -= 32;
return String.valueOf(cs);
}
/**
* 将字符串的首字母转小写
*
* @param str 需要转换的字符串
* @return 转换后的字母
*/
private String lowerCaseFirstName(String str) {
// 进行字母的ascii编码前移,效率要高于截取字符串进行转换的操作
char[] cs = str.toCharArray();
cs[0] += 32;
return String.valueOf(cs);
}
/**
* 将下划线转换为空格 并执行 java对象命名规则
*
* @param name 数据库表名
* @param upCaseFirst 首字母是否大写
* @return java对象名
*/
public String transformName(String name, boolean upCaseFirst) {
StringBuilder sb = new StringBuilder();
String[] words = name.split("_");
for (String word : words) {
String captureName;
if (!upCaseFirst) {
captureName = word;
upCaseFirst = true;
} else {
captureName = upperCaseFirstName(word);
}
sb.append(captureName);
}
return sb.toString();
}
/**
* 创建服务类
*
* @param tableName 数据库表名称
* @param packageName 包名称
* @return 创建后的实体的包路径
* @throws FileNotFoundException 文件异常
*/
public JavaFilePath createRepository(String tableName, String packageName) throws IOException {
String name = transformName(tableName, true);
//类名
String className = name + "Repository";
String fileName = className + ".java";
String entityName = name + "Do"
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
generate.7z (3个子文件)
generate
CodeGenerateApplication.java 34KB
JavaFilePath.java 386B
ColumnInfo.java 347B
共 3 条
- 1
资源评论
- 行走的瓶子Yolo2023-07-24生成的代码充分利用了SpringBoot和JPA的特性,使得开发工作更加专注于业务逻辑的实现。
- 会飞的黄油2023-07-24这个工具简化了JPA开发的流程,减少了出错的可能性,让人省心省力。
- 黄涵奕2023-07-24使用这个工具生成的代码结构清晰,易于维护和理解,极大地提高了代码可读性。
- WaiyuetFung2023-07-24使用这个工具可以快速地生成CRUD操作的代码,减少了编写基本的增删改查功能的时间成本。
- 十二.122023-07-24这个代码生成工具让开发变得更加高效,省去了手动编写大量重复代码的麻烦。
Ray_Sir_Java
- 粉丝: 3
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功