首页 > 作文

mybatisplus代码生成器使用(java代码生成工具)

更新时间:2023-04-05 02:50:30 阅读: 评论:0

前言:

原本想使用autogenerator 是 mybatis-plus 的官方代码生成器 ,尝试了一下,竟然报错,原因可能是mybatis-plus和mybatis-plus-generator 的版本不一致,因为我用的mybatis-plus 的版本是3.42 ,但是mybatis-plus-generator的3.4.2不知道怎么了,下载不下来,只能下载3.4.1,发现运行起来老是报错,还有一堆配置说明要看,于是自己手写生成代码的工具类,觉得更简单些。分享给大家,请多多指教。

pom文件引入java-mysql 驱动依赖

<dependency>

<groupid>mysql</groupid>

<artifactid>mysql-connector-java</artifactid>

<version>8.0.22</version>

</dependency>

单类代码实现,复制粘贴到编辑器里,主方法运行即可。

import org.apache.commons.lang3.stringutils;

import java.io.file;

import java.io.fileoutputstream;

import java.sql.connection;

import java.sql.databametadata;

import java.sql.drivermanager;

import java.sql.resultt;

暗恋语录

import java.text.simpledateformat;

import java.util.date;

/**

* mybatis plus通用生成工具

* 可生成业务接口、mapper接口、实体类

*

* @author tarzan liu

* @date 2021/4/10 19:44

*/

public class mybatisplustools {

private static final string driver = “com.mysql.cj.jdbc.driver”;//驱动

private static final string ur = “root”; //数据库账号

private static final string pwd = “123456”; //数据库密码

private static final string url = “
jdbc:mysql://127.0.0.1:3306/ofcms” + “?ur=” + ur + “&password=” + pwd+”&uunicode=true&characterencoding=utf-8&zerodatetimebehavior=converttonull”; //链接参数

private static string tablename = “of_cms_ad”; // 数据库表名

private static string aliasname = “cms_ad”; // 数据库别名,可以与数据库表名相同

private static final string packagepath = “com/tarzan/cms”; //mapper.xml命名空间路径

private static final string packagename = “com.tarzan.cms”; //mapper.xml命名空间路径

private static final string author = “tarzan”; // 作者

private static final string rootpathname = “src/main/java/”; // 默认生成主文件夹路径

private static connection getconnection = n北京婚姻调查ull;

static simpledateformat format = new simpledateformat(“yyyy-mm-dd hh:mm:ss”);

/**

* 链接数据库

*/

private static connection getconnections() {

try {

class.forname(driver);

getconnection = drivermanager.getconnection(url);

} catch (exception e) {

e.printstacktrace();

}

return getconnection;

}

/**

* 格式化默认值

*/

private static strin特价商品g defaultvalue(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”.equalsignoreca(typevalue)) {

return “boolean”;

}

el if (

typevalue.equalsignoreca(“int”) || typevalue.equalsignoreca(“int unsigned”)

|| typevalue.equalsignoreca(“tinyint”) || typevalue.equalsignoreca(“tinyint unsigned”)

|| typevalue.equalsignoreca(“smallint”) || typevalue.equalsignoreca(“smallint unsigned”)

|| typevalue.equalsignoreca(“mediumint”) || typevalue.equalsignoreca(“mediumint unsigned”)

) {

return “integer”;

} el if (typevalue.equalsignoreca(“bigint”) || typevalue.equalsignoreca(“bigint unsigned”)) {

return “long”;

} el if (typevalue.equalsignoreca(“float”) || typevalue.equalsignoreca(“float unsigned”)) {

return “float”;

} el if (typevalue.equalsignoreca(“decimal”) || typevalue.equalsignoreca(“decimal unsigned”) || typevalue.equalsignoreca(“numeric”) || typevalue.equalsignoreca(“numeric unsigned”)

|| typevalue.equalsignoreca(“real”) || typevalue.equalsignoreca(“real unsigned”) || typevalue.equalsignoreca(“money”) || typevalue.equalsignoreca(“money unsigned”)

|| typevalue.equalsignoreca(“smallmoney”) || typevalue.equalsignoreca(“smallmoney unsigned”)) {

return “double”;

} el if (typevalue.equalsignoreca(“varchar”) || typevalue.equalsignoreca(“char”)

|| typevalue.equalsignoreca(“nvarchar”) || typevalue.equalsignoreca(“nchar”)

|| typevalue.equalsignoreca(“text”)) {

return “string”;

} el if (typevalue.equalsignoreca(“datetime”)) {

return “date”;

} el if (typevalue.equalsignoreca(“image”)) {

return “blod”;

} el {

return “long”;

}

}

/**

* 驼峰转换

*/

private static string columntoproperty(string column) {

stringbuilder result = new stringbuilder();

// 快速检查

if (column == null || column.impty()) {

// 没必要转换

return “”;}

el column =column.tolowerca();

if (!column.contains(“_”)) {

// 不含下划线,仅将首字母小写

return column.substring(0, 1).tolowerca() + column.substring(1);

} el {

// 用下划线将原始字符串分割

string[] columns = column.split(“_”);

for (string columnsplit : columns) {

// 跳过原始字符串中开头、结尾的下换线或双重下划线

if (columnsplit.impty()) {

continue;

}

// 处理真正的驼峰片段

if (result.length() == 0) {

// 第一个驼峰片段,全部字母都小写

result.append(columnsplit.tolowerca());

} el {

// 其他的驼峰片段,首字母大写

result.append(columnsplit.substring(0, 1).toupperca()).append(columnsplit.substring(1).tolowerca());

}

}

return result.tostring();

}

}

/**

* 实体名称转换

*/

private static string formatbeanname(string column) {

stringbuilder result = new stringbuilder();

// 快速检查

if (column == null || column.impty()) {

// 没必要转换

return “”;

} el if (!column.contains(“_”)) {

// 不含下划线,仅将首字母大写

return column.substring(0, 1).toupperca() + column.substring(1);

} el {

// 用下划线将原始字符串分割

string[] columns = column.split(“_”);

for (string columnsplit : columns) {

// 跳过原始字符串中开头、结尾的下换线或双重下划线

if (columnsplit.impty()) {

continue;

}

// 处理真正的驼峰片段

result.append(columnsplit.substring(0, 1).toupperca()).append(columnsplit.substring(1).tolowerca());

}

return result.tostring();

}

}

/**

* 实体类字段

*/

private static void getbean(string tablename,string aliasname) {

getconnection = getconnections();

stringbuilder sb = new stringbuilder();

try {

databametadata dbmd = getconnection.getmetadata();

resultt rs = dbmd.getcolumns(null, “%”, tablename, “%”);

string beanname = formatbeanname(aliasname);

sb.append(“package “+packagename+”.entity;\n\n”);

sb.append(“import com.baomidou.mybatisplus.annotation.tablename;\n”);

sb.append(“import lombok.data;\n”);

int length=sb.length();

boolean dateflag=fal;

sb.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=t什么是双学位rue;

}

sb.append(“\t//”).append(rs.getstring(“remarks”)).append(defaultvalue(rs.getstring(“column_def”))).append(“\n”);

sb.append(“\tprivate “).append(formattype(rs.getstring(“type_name”))).append(” “).append(columntoproperty(rs.getstring(“column_name”))).append(“;\n”);

}

sb.append(“} “);

if(dateflag){

sb.inrt(length, “import java.util.date;\n”);

}

} catch (exception e) {

e.printstacktrace();

}

write(sb.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 sb = new stringbuilder();

try {

string beanname = formatbeanname(aliasname);

sb.append(“package “+packagename+”.mapper;\n\n”);

sb.append(“import com.baomidou.mybatisplus.core.mappe乐嘉性格色彩测试题r.bamapper;\n”);

sb.append(“import “+packagename+”.entity.”+beanname+”entity;\n”);

sb.append( “/**\n” +

” * @author ” + author + “\n” +

” * @date “+ format.format(new date())+”\n” +

” */\n” +

“public interface “+beanname+”mapper extends bamapper<“+beanname+”entity>{\n” +

” \n” +

“}”);

} catch (exception e) {

e.printstacktrace();

}

write(sb.tostring(),”mapper.java”,”mapper”);

system.err.println(“\n类型:java数据持久层接口(dao.java)” + “\n状态:成功” + “\n时间:” + format.format(new date()) + “\n”);

}

/**

* 生成rvice层接口

*/

private static void getrvice(string tablename,string aliasname) {

stringbuilder sb = new stringbuilder();

try {

string beanname = formatbeanname(aliasname);

sb.append(“package “+packagename+”.rvice;\n\n”);

sb.append(“import com.baomidou.mybatisplus.extension.rvice.impl.rviceimpl;\n”);

sb.append(“import org.springframework.stereotype.rvice;\n”);

sb.append(“import “+packagename+”.mapper.”+beanname+”mapper;\n”);

sb.append(“import “+packagename+”.entity.”+beanname+”entity;\n”);

sb.append( “/**\n” +

” * @author ” + author + “\n” +

” * @date “+ format.format(new date())+”\n” +

” */\n” +

“@rvice\n” +

“public class “+beanname+”rvice extends rviceimpl<“+beanname+”mapper, “+beanname+”entity>{\n” +

“\n” +

“}”);

} catch (exception e) {

e.printstacktrace();

}

write(sb.tostring(),”rvice.java”,”rvice”);

system.err.println(“\n类型:java业务层接口(rvice.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, fal); //如果追加方式用true

stringbuilder sb = new stringbuilder();

sb.append(str + “\n”);

out.write(sb.tostring().getbytes(“utf-8”));//注意需要转换对应的字符集

out.clo();

} catch (exception e) {

e.printstacktrace();

}

}

//一次生产所有表

private static void tablenames() {

getconnection = getconnections();

try {

databametadata dbmd = getconnection.getmetadata();

resultt 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);

//业务类接口

getrvice(tablename,aliasname);

}

} catch (exception e) {

e.printstacktrace();

}

}

public static void main(string[] args) {

// tablenames();

//实体

getbean(tablename,aliasname);

//mapper接口

getmapper(tablename,aliasname);

//业务类接口

getrvice(tablename,aliasname);

}

}

生成文件截图

实体

mapper

rvice

本文发布于:2023-04-05 02:50:29,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/2435ac2f412711b75387e2e373e51e6f.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:mybatisplus代码生成器使用(java代码生成工具).doc

本文 PDF 下载地址:mybatisplus代码生成器使用(java代码生成工具).pdf

下一篇:返回列表
标签:接口   下划线   驼峰   数据库
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图