codesmith mysql 模板_CodeSmith代码自动生成器 JAVA模版的制作---CodeSmith+MySQL+MyEclipse 10...
自己做的时候没有找到详细的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...相关推荐
- 如何使用模板Thymeleaf来自动生成java代码
文章目录 前言 如何使用模板Thymeleaf来自动生成java代码 01 Thymeleaf 是什么? 02 Thymeleaf与springBoot的集成即使用 03 如何使用模板Thymelea ...
- 推荐几个代码自动生成器
文章目录 老的代码生成器的地址:[https://www.cnblogs.com/skyme/archive/2011/12/22/2297592.html](https://link.zhihu.c ...
- 快速搭建springboot+mybatis-plus代码自动生成器的后端框架
利用springboot + mybatis-plus 代码自动生成器快速搭建后端框架 项目环境 IDEA 2020 springboot 2.3.7.RELEASE mybatis-plus 3.5 ...
- spring boot:从零开始搭建一个项目 - day 5 Mybatis plus代码自动生成器
spring boot:从零开始搭建一个项目 - day 5 Mybatis plus代码自动生成器 一.Mybatis plus代码自动生成器 1.引入配置 2.创建Controller 3.执行m ...
- Mybatis Plus 代码自动生成器常用配置参考(详细解读)
Mybatis Plus 代码自动生成器常用配置 代码自动生成器常用配置 基础配置 代码自动生成配置(详) 1.常量 2.主方法用于运行生成代码 3.代码生成方法 4.各项配置详解 代码自动生成器常用 ...
- 感悟开发.Net代码自动生成器,为软件起个好名字
前两天收到成都罗斌的再次来信,突然有些感悟.征求了作者本人意见后,现刊登一些网友的来信,同时就一些问题欢迎大家讨论. ----------------------------------------- ...
- t4b代码生成_Ef+T4模板实现代码快速生成器
效果如图,demo(点击demo可下载案例) 项目结构如图 T4BLL添加BLL.tt文件: T4Model添加Model文件: T4DAL添加DAL.tt文件: T4DAL 添加ADO.NET En ...
- 发布CodeBuild.Net代码自动生成器 V2008 2.01(Vs2008)和架构实例源码Demo
CodeBuild.Net代码自动生成器 V2008 2.01(Vs2008) Microsoft Visual Studio 2008开发,需要安装运行库. 支持生成多标签切换等功能,方便代码生成, ...
- 表情自动生成器java代码实现
转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/18556703 前几天在其他网站上看到一个表情自动生成器,自己就试着做了一下,先看 ...
- MyBatis-Plus Generator v3.5.1 最新代码自动生成器
一.概述 官网:https://baomidou.com/ 官方文档 :https://baomidou.com/pages/56bac0/ 官方源码地址: https://gitee.com/bao ...
最新文章
- 《权力的游戏》最终季上线!谁是你最喜爱的演员?这里有一份Python教程 | 附源码...
- java field setfont_Java JTextField.setFont方法代碼示例
- 一个.java源文件中是否可以包括多个类
- TensorRT推理报错:pycuda._driver.LogicError: cuMemcpyHtoDAsync failed: invalid argument
- 【PAT乙级】1085 PAT单位排行 (25 分)
- C++——可变模板参数
- CSS中的position定位
- 《剑指offer》反转链表
- 《Objective-c》-(内存管理之三:@property的内存管理)
- python图书管理系统增删改查_固定资产管理系统,高效管理企业资产
- 趣文:有趣的 Linux 命令
- 信息学奥赛一本通(1153:绝对素数)
- nagios的实时监控
- android 权限库EasyPermissions
- linux系统可以玩星际争霸吧,在Linux下可用Wine安装和运行星际争霸2、水煮三国
- qt自定义qtablemodel实现改变item的背景色
- 电子元器件如何检测和筛选
- 怎么用nginx搭建文件服务器,使用nginx搭建简单文件服务器
- 搜狗输入法 linux 卸载,ubuntu彻底卸载搜狗拼音输入法
- win32gui操作
热门文章
- Autodesk cad卸载不干净导致的无法安装问题解决
- SPSS之单样本的T检验
- python实现屏幕截图_Python实现计算机屏幕任意区域截图
- doc 问卷调查模板表_幼儿园家长问卷调查表
- 16进制颜色透明度对照表
- 网络邻居没有查看工作组计算机,为什么网上邻居内看不到计算机工作组
- mysql ehcache_EhCache使用心得
- ice服务器修复教程,Bootice:系统引导菜单修复利器的功能解说
- 佳能Canon imageCLASS MF4830d 打印机驱动
- 文本特征提取:词袋模型/词集模型,TF-IDF