mybatisplus代码生成工具(mybatisplus自动生成)

健康新闻 2023-05-01 10:08健康生活www.xingbingw.cn

  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自动生成)相关信息请关注本文章,本文仅仅做为展示!

Copyright@2015-2025 www.xingbingw.cn 性病网版板所有