自己做的时候没有找到详细的JAVA模版 大多都是C#的,所以自己记录下,还有很多不懂的,日后慢慢琢磨吧

以Entity实例为例子,直接贴代码,把自己认为比较闹心的地方画个圈圈标记出来

首先 设计模版

创建一个cst文件叫做entity.cst,

package .entity;

// default package

import java.sql.Timestamp;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

import javax.persistence.Table;

/**

* entity. @author MyEclipse Persistence Tools

*/

@Entity

@Table(name=""

,catalog=""

)

public class implements java.io.Serializable {

private Timestamp ;

private ;

@Column(name="")

public Timestamp get() {

return this.;

}

public void set( Timestamp ) {

this. = ;

}

@Column(name="",length="",nulllable="")

@Column(name="",length="")

@Column(name="",nulllable="")

@Column(name="")

public get() {

return this.;

}

public void set( ) {

this. = ;

}

}

创建自定义函数Utility.cs

using System;

using System.Text;

using CodeSmith.Engine;

using SchemaExplorer;

using System.ComponentModel;

using System.Data;

namespace Common

{

/**

/// TemplateRule

///

public static class Utility

{

public static string GetClassName(string tableName)

{

string className = tableName.Replace("_", "");

string[] array = tableName.Split('_');

if (array.Length > 1)

{

/*if (array[0] == array[1])

{

className = array[0];

}

else if (array[0] == "Dict" || array[0] == "Wiki" || array[0] == "Ask" || array[0] == "Forum" || array[0] == "Class")

{

className = array[1];

}*/

if (array.Length == 2)

{

className = StringUtil.ToPascalCase(array[1]);

}

else if (array.Length == 3)

{

className = StringUtil.ToPascalCase(array[1]) + StringUtil.ToPascalCase(array[2]);

}

else if (array.Length == 4)

{

className = StringUtil.ToPascalCase(array[1]) + StringUtil.ToPascalCase(array[2]) + StringUtil.ToPascalCase(array[3]);

}

}

return className;

}

public static string GetTypeName(string typeName)

{

typeName = StringUtil.ToPascalCase(typeName);

return typeName;

}

public static string GetObjectName(string tableName)

{

string className = tableName.Replace("_", "");

string[] array = tableName.Split('_');

if (array.Length > 1)

{

if (array.Length == 2)

{

className = array[1];

}

else if (array.Length == 3)

{

className = array[1] + array[2];

}

else if (array.Length == 4)

{

className =array[1] + array[2] + array[3];

}

}

return className;

}

public static string GetProjectName(string tableName)

{

string[] array = tableName.Split('_');

if (array.Length == 2)

{

if (array[0] == "Wiki")

{

return "Wiki";

}

else if (array[0] == "Dict")

{

return "Dict";

}

else if (array[0] == "Ask")

{

return "Ask";

}

else if (array[0] == "Forum")

{

return "Forum";

}

else if (array[0] == "Class")

{

return "Class";

}

}

return "Dialect";

}

}

生成模版 创建cst文件 make_entity.cst

//定义输出目录

private string Directory = String.Empty;

[Editor(typeof(System.Windows.Forms.Design.FolderNameEditor), typeof(System.Drawing.Design.UITypeEditor))] //声明属性

public string OutputDirectory

{

get

{

return Directory;

}

set

{

if (value.EndsWith("\\")) value = value.Substring(0, value.Length -1);

Directory = value;

}

}

private void MakeTemplate()

{

CodeTemplate template = new AuthenServiceTemplate();//得到一个设计模版对象

string type="entity";

string elementName="{0}{1}";//文件名

foreach(TableSchema table in this.SourceDatabase.Tables)//获取数据库中的每一张表

{

string[] array = this.SourceDatabase.Database.Name.Split('_');//去下划线

string className = Utility.GetClassName(table.Name);//字段格式转换

string objectName=Utility.GetObjectName(table.Name);

string typeName=Utility.GetTypeName(type);

string projectName = array[1]+".";

string FileDirectory = OutputDirectory+ "\\"+ string.Format(elementName,className,(".java"));//输出路径及文件格式

//为涉及模版对象传入参数

template.SetProperty("SourceTable", table);

template.SetProperty("NameSpace", projectName);

template.SetProperty("ClassName", className);

template.SetProperty("TableName", table.Name);

template.SetProperty("ObjectName", objectName);

template.SetProperty("BaseName", this.SourceDatabase.Database.Name);

//生成模板

template.SetProperty("Table",table);

//文件输出

template.RenderToFile(FileDirectory,true);

Debug.WriteLine(FileDirectory +" 创建成功.");

}

}

this.MakeTemplate();//调用

%>

最后绑定数据库,制定数据输出路径Generate一下,就可以了

数据类型转换的时候一度不想做了,真的烦,各种类型不一致,还找不到统一转换的方法,尝试一个一个做判断,脑子里面就一个想法,去死去死去死好了,不过弄到现在

差不多了心情就就愉快了,路漫漫其修远兮~吾将上下左右东南西北而求索......

codesmith mysql 模板_CodeSmith代码自动生成器 JAVA模版的制作---CodeSmith+MySQL+MyEclipse 10...相关推荐

  1. 如何使用模板Thymeleaf来自动生成java代码

    文章目录 前言 如何使用模板Thymeleaf来自动生成java代码 01 Thymeleaf 是什么? 02 Thymeleaf与springBoot的集成即使用 03 如何使用模板Thymelea ...

  2. 推荐几个代码自动生成器

    文章目录 老的代码生成器的地址:[https://www.cnblogs.com/skyme/archive/2011/12/22/2297592.html](https://link.zhihu.c ...

  3. 快速搭建springboot+mybatis-plus代码自动生成器的后端框架

    利用springboot + mybatis-plus 代码自动生成器快速搭建后端框架 项目环境 IDEA 2020 springboot 2.3.7.RELEASE mybatis-plus 3.5 ...

  4. spring boot:从零开始搭建一个项目 - day 5 Mybatis plus代码自动生成器

    spring boot:从零开始搭建一个项目 - day 5 Mybatis plus代码自动生成器 一.Mybatis plus代码自动生成器 1.引入配置 2.创建Controller 3.执行m ...

  5. Mybatis Plus 代码自动生成器常用配置参考(详细解读)

    Mybatis Plus 代码自动生成器常用配置 代码自动生成器常用配置 基础配置 代码自动生成配置(详) 1.常量 2.主方法用于运行生成代码 3.代码生成方法 4.各项配置详解 代码自动生成器常用 ...

  6. 感悟开发.Net代码自动生成器,为软件起个好名字

    前两天收到成都罗斌的再次来信,突然有些感悟.征求了作者本人意见后,现刊登一些网友的来信,同时就一些问题欢迎大家讨论. ----------------------------------------- ...

  7. t4b代码生成_Ef+T4模板实现代码快速生成器

    效果如图,demo(点击demo可下载案例) 项目结构如图 T4BLL添加BLL.tt文件: T4Model添加Model文件: T4DAL添加DAL.tt文件: T4DAL 添加ADO.NET En ...

  8. 发布CodeBuild.Net代码自动生成器 V2008 2.01(Vs2008)和架构实例源码Demo

    CodeBuild.Net代码自动生成器 V2008 2.01(Vs2008) Microsoft Visual Studio 2008开发,需要安装运行库. 支持生成多标签切换等功能,方便代码生成, ...

  9. 表情自动生成器java代码实现

    转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/18556703 前几天在其他网站上看到一个表情自动生成器,自己就试着做了一下,先看 ...

  10. MyBatis-Plus Generator v3.5.1 最新代码自动生成器

    一.概述 官网:https://baomidou.com/ 官方文档 :https://baomidou.com/pages/56bac0/ 官方源码地址: https://gitee.com/bao ...

最新文章

  1. 《权力的游戏》最终季上线!谁是你最喜爱的演员?这里有一份Python教程 | 附源码...
  2. java field setfont_Java JTextField.setFont方法代碼示例
  3. 一个.java源文件中是否可以包括多个类
  4. TensorRT推理报错:pycuda._driver.LogicError: cuMemcpyHtoDAsync failed: invalid argument
  5. 【PAT乙级】1085 PAT单位排行 (25 分)
  6. C++——可变模板参数
  7. CSS中的position定位
  8. 《剑指offer》反转链表
  9. 《Objective-c》-(内存管理之三:@property的内存管理)
  10. python图书管理系统增删改查_固定资产管理系统,高效管理企业资产
  11. 趣文:有趣的 Linux 命令
  12. 信息学奥赛一本通(1153:绝对素数)
  13. nagios的实时监控
  14. android 权限库EasyPermissions
  15. linux系统可以玩星际争霸吧,在Linux下可用Wine安装和运行星际争霸2、水煮三国
  16. qt自定义qtablemodel实现改变item的背景色
  17. 电子元器件如何检测和筛选
  18. 怎么用nginx搭建文件服务器,使用nginx搭建简单文件服务器
  19. 搜狗输入法 linux 卸载,ubuntu彻底卸载搜狗拼音输入法
  20. win32gui操作

热门文章

  1. Autodesk cad卸载不干净导致的无法安装问题解决
  2. SPSS之单样本的T检验
  3. python实现屏幕截图_Python实现计算机屏幕任意区域截图
  4. doc 问卷调查模板表_幼儿园家长问卷调查表
  5. 16进制颜色透明度对照表
  6. 网络邻居没有查看工作组计算机,为什么网上邻居内看不到计算机工作组
  7. mysql ehcache_EhCache使用心得
  8. ice服务器修复教程,Bootice:系统引导菜单修复利器的功能解说
  9. 佳能Canon imageCLASS MF4830d 打印机驱动
  10. 文本特征提取:词袋模型/词集模型,TF-IDF