mybatisplus代码生成工具(mybatisplus自动生成)
mybatisplus代码生成工具(mybatisplus自动生成),新营销网红网本栏目通过数据整理汇集了mybatisplus代码生成工具(mybatisplus自动生成)相关信息,下面一起看看。
前言
原本想使用自动发电机是MyBatis-Plus的官方代码生成器,尝试了一下,竟然报错,原因可能是MyBatis-Plus和麦巴蒂斯加发电机的版本不一致,因为我用的MyBatis-Plus的版本是3.42 ,麦巴蒂斯加发电机的3.4.2不知道怎么了,下载不下来,只能下载3.4.1,发现运行起来老是报错,还有一堆配置说明要看,于是自己手写生成代码的工具类,觉得更简单些。分享性病网给大家,请多多指教。
砰的一声文件引入java-mysql驱动依赖
属国
groupId mysql /groupId
artifactId MySQL-连接器-java /artifactId
版本8 .0 .22/版本
/依赖关系
单类代码实现,复制粘贴到编辑器里,主运行即可。
导入org。阿帕奇。公地。郎3。字符串实用程序;
导入Java。io。文件;
导入Java。io。文件输出流;
导入Java。SQL。连接;
导入Java。SQL。数据库元数据;
导入Java。SQL。司机经理;
导入Java。SQL。结果集;
导入Java。文字。简单的日期格式;
导入Java。util。日期;
/
mybatis plus通用生成工具
可生成业务接口、映射器接口、实体类
@作者泰山刘
@日期2021/4/10 19:44
/
公共类MyBatisPlusTools {
private static final String driver=" com。MySQL。CJ。JDBC。司机”;//驱动
私有静态最终字符串user=" root//数据库账号
私有静态最终字符串pwd=" 123456//数据库密码
私有静态最终字符串URL=" JDBC : MySQL ://127。0 .0 .CMS“”的1:3306/?user=" user " password=" pwd " use unicode=true character encoding=UTF-8 zeroDateTimeBehavior=convert null ";//链接参数
私有静态字符串tableName=" of _ cms _ ad//数据库表名
私有静态字符串aliasName=" cms _ ad//数据库别名,可以与数据库表名相同
私有静态最终字符串包path=" com/Tarzan/CMS ";//mapper.xml命名空间路径
私有静态最终字符串package name=" com。泰山。CMS”;//mapper.xml命名空间路径
私有静态最终字符串作者="泰山//作者
私有静态最终字符串root pathname=" src/main/Java/";//默认生成主文件夹路径
私有静态连接getConnection=null
静态simple date format format=new simple date format(" yyyy-MM-DD hh :MM : ss ");
/
链接数据库
/
私有静态连接getConnections() {
尝试{
Class.forName(驱动程序);
驱动程序管理器。getConnection(URL);
} catch(异常e) {
e。printstacktrace();
}
返回连接
}
/
格式化默认值
/
私有静态字符串默认值
alue(String value) {
if (StringUtils.isNotBlank(value)) {
return “;默认值” + value;
}
{
return “”;
}
}
private static String getAliasName(String tableName,String prefix){
return tableName.substring(prefix.length());
}
/
格式化数据类型
返回的是基本类型的包装类
如果使用基本数据类型long
/
private static String formatType(String typeValue) {
if (“bit”.equalsIgnoreCase(typeValue)) {
return “Boolean”;
}
else if (
typeValue.equalsIgnoreCase(“int”)
typeValue.equalsIgnoreCase(“int unsigned”)
typeValue.equalsIgnoreCase(“tinyint”)
typeValue.equalsIgnoreCase(“tinyint unsigned”)
typeValue.equalsIgnoreCase(“ allint”)
typeValue.equalsIgnoreCase(“ allint unsigned”)
typeValue.equalsIgnoreCase(“mediumint”)
typeValue.equalsIgnoreCase(“mediumint unsigned”)
) {
return “Integer”;
} else if (typeValue.equalsIgnoreCase(“bigint”)
typeValue.equalsIgnoreCase(“bigint unsigned”)) {
return “Long”;
} else if (typeValue.equalsIgnoreCase(“float”)
typeValue.equalsIgnoreCase(“float unsigned”)) {
return “Float”;
} else if (typeValue.equalsIgnoreCase(“decimal”)
typeValue.equalsIgnoreCase(“decimal unsigned”)
typeValue.equalsIgnoreCase(“numeric”)
typeValue.equalsIgnoreCase(“numeric unsigned”)
typeValue.equalsIgnoreCase(“real”)
typeValue.equalsIgnoreCase(“real unsigned”)
typeValue.equalsIgnoreCase(“money”)
typeValue.equalsIgnoreCase(“money unsigned”)
typeValue.equalsIgnoreCase(“ allmoney”)
typeValue.equalsIgnoreCase(“ allmoney unsigned”)) {
return “Double”;
} else if (typeValue.equalsIgnoreCase(“varchar”)
typeValue.equalsIgnoreCase(“char”)
typeValue.equalsIgnoreCase(“nvarchar”)
typeValue.equalsIgnoreCase(“nchar”)
typeValue.equalsIgnoreCase(“text”)) {
return “String”;
} else if (typeValue.equalsIgnoreCase(“datetime”)) {
return “Date”;
} else if (typeValue.equalsIgnoreCase(“image”)) {
return “Blod”;
} else {
return “Long”;
}
}
/
驼峰转换
/
private static String columnToProperty(String column) {
StringBuilder result = new StringBuilder();
// 快速检查
if (column == null
column.isEmpty()) {
// 没必要转换
return “”;}
else column =column.toLowerCase();
if (!column.contains(“_”)) {
// 不含下划线,仅将首字母小写
return column.substring(0, 1).toLowerCase() + column.substring(1);
} else {
// 用下划线将原始字符串分割
String[] columns = column.split(“_”);
for (String columnSplit : columns) {
// 跳过原始字符串中开头、结尾的下换线或双重下划线
if (columnSplit.isEmpty()) {
continue;
}
// 处理真正的驼峰片段
if (result.length() == 0) {
// 第一个驼峰片段,全部字母都小写
result.append(columnSplit.toLowerCase());
} else {
// 其他的驼峰片段,首字母大写
result.append(columnSplit.substring(0, 1).toUpperCase()).append(columnSplit.substring(1).toLowerCase());
}
}
return result.toString();
}
}
/
实体名称转换
/
private static String formatBeanName(String column) {
StringBuilder result = new StringBuilder();
// 快速检查
if (column == null
column.isEmpty()) {
// 没必要转换
return “”;
} else if (!column.contains(“_”)) {
// 不含下划线,仅将首字母大写
return column.substring(0, 1).toUpperCase() + column.substring(1);
} else {
// 用下划线将原始字符串分割
String[] columns = column.split(“_”);
for (String columnSplit : columns) {
// 跳过原始字符串中开头、结尾的下换线或双重下划线
if (columnSplit.isEmpty()) {
continue;
}
// 处理真正的驼峰片段
result.append(columnSplit.substring(0, 1).toUpperCase()).append(columnSplit.substring(1).toLowerCase());
}
return result.toString();
}
}
/
实体类字段
/
private static void getBean(String tableName,String aliasName) {
getConnection = getConnections();
StringBuilder = new StringBuilder();
try {
DatabaseMetaData dbmd = getConnection.getMetaData();
ResultSet rs = dbmd.getColumns(null, “%”, tableName, “%”);
String beanName = formatBeanName(aliasName);
.append(“package “+packageName+”.entity;\n\n”);
.append(“import com.baomidou.mybatisplus.annotation.TableName;\n”);
.append(“import lombok.Data;\n”);
int length= .length();
boolean dateFlag=false;
.append( ” /\n” +
” @author ” + author + “\n” +
” @date “+ format.format(new Date())+”\n” +
” /\n” +
“@Data\n” +
“@TableName(\””+tableName+”\”)\n” +
“public class “+beanName+”Entity {\n”);
while (rs.next()) {
if(formatType(rs.getString(“TYPE_NAME”)).equals(“Date”)){
dateFlag=true;
}
.append(“\t//”).append(rs.getString(“REMARKS”)).append(defaultValue(rs.getString(“COLUMN_DEF”))).append(“\n”);
.append(“\tprivate “).append(formatType(rs.getString(“TYPE_NAME”))).append(” “).append(columnToProperty(rs.getString(“COLUMN_NAME”))).append(“;\n”);
}
.append(“} “);
if(dateFlag){
.insert(length, “import java.util.Date;\n”);
}
} catch (Exception e) {
e.printStackTrace();
}
write( .toString(),”Entity.java”,”entity”);
System.err.println(“\n类型JAVA数据层实体类(bean.java)” + “\n状态成功” + “\n时间” + format.format(new Date()) + “\n”);
}
/
生成DAO层接口
/
private static void getMapper(String tableName,String aliasName) {
StringBuilder = new StringBuilder();
try {
String beanName = formatBeanName(aliasName);
.append(“package “+packageName+”.mapper;\n\n”);
.append(“import com.baomidou.mybatisplus.core.mapper.BaseMapper;\n”);
.append(“import “+packageName+”.entity.”+beanName+”Entity;\n”);
.append( “/\n” +
” @author ” + author + “\n” +
” @date “+ format.format(new Date())+”\n” +
” /\n” +
“public interface “+beanName+”Mapper extends BaseMapper “+beanName+”Entity {\n” +
” \n” +
“}”);
} catch (Exception e) {
e.printStackTrace();
}
write( .toString(),”Mapper.java”,”mapper”);
System.err.println(“\n类型JAVA数据持久层接口(dao.java)” + “\n状态成功” + “\n时间” + format.format(new Date()) + “\n”);
}
/
生成SERVICE层接口
/
private static void getService(String tableName,String aliasName) {
StringBuilder = new StringBuilder();
try {
String beanName = formatBeanName(aliasName);
.append(“package “+packageName+”.service;\n\n”);
.append(“import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;\n”);
.append(“import org.springframework.stereotype.Service;\n”);
.append(“import “+packageName+”.mapper.”+beanName+”Mapper;\n”);
.append(“import “+packageName+”.entity.”+beanName+”Entity;\n”);
.append( “/\n” +
” @author ” + author + “\n” +
” @date “+ format.format(new Date())+”\n” +
” /\n” +
“@Service\n” +
“public class “+beanName+”Service extends ServiceImpl “+beanName+”Mapper, “+beanName+”Entity {\n” +
“\n” +
“}”);
} catch (Exception e) {
e.printStackTrace();
}
write( .toString(),”Service.java”,”service”);
System.err.println(“\n类型JAVA业务层接口(service.java)” + “\n状态成功” + “\n时间” + format.format(new Date()) + “\n”);
}
/
写文件,支持中文字符,在linux redhad下测试过
@param str 文本内容
@param name 文本名称
/
private static void write(String str, String name,String type) {
try {
File dir = new File(rootPathName +packagePath+ “/” + type);
dir.mkdirs();
String path = dir.getPath() + “/” + formatBeanName(aliasName)+name;
File file = new File(path);
if (!file.exists())
file.createNewFile();
FileOutputStream out = new FileOutputStream(file, false); //如果追加方式用true
StringBuilder = new StringBuilder();
.append(str + “\n”);
out.write( .toString().getBytes(“utf-8”));//注意需要转换对应的字符集
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//一次生产所有表
private static void tableNames() {
getConnection = getConnections();
try {
DatabaseMetaData dbmd = getConnection.getMetaData();
ResultSet rs = dbmd.getTables(getConnection.getCatalog(), null, null, new String[] { “TABLE” });
while (rs.next()) {
tableName=rs.getString(“TABLE_NAME”);
aliasName=getAliasName(tableName,”of_”);
//实体
getBean(tableName,aliasName);
//dao层接口
getMapper(tableName,aliasName);
//业务类接口
getService(tableName,aliasName);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// tableNames();
//实体
getBean(tableName,aliasName);
//mapper接口
getMapper(tableName,aliasName);
//业务类接口
getService(tableName,aliasName);
}
}
生成文件截图
实体
mapper
service
相关文章
粤语歌曲网(经典粤语歌曲汇总)
北京奥特莱斯(来北京必逛的12个商场)
豪杰超级解霸(还记得豪杰超级解霸吗?)
龚自珍的资料(清代诗人龚自珍一生功绩简介)
象牙塔是什么意思(“象牙塔”里怎么了?)
水色风信子(水培风信子容易养)
婧字怎么读
虞姬是哪里人(古代著名美人虞姬到底是哪里人?)
公办三本院校(我们还有哪些“三本”?)
电子酒柜(酒柜最全选购指南)
德州景点(德州市景区景点62个)
玉兰油官方网(OLAY发布高端臻粹系列)
更多mybatisplus代码生成工具(mybatisplus自动生成)相关信息请关注本文章,本文仅仅做为展示!