• 自定义tt文本模板实现MySql指数据库中生成实体类


    1.在项目中依次点击“添加”/“新建项”,选择“文本模板”,输入名称后点击添加。

    2.在Base.tt中添加如下代码。

    <#@ template debug="false" hostspecific="false" language="C#" #>
    <#@ output extension=".cs" #>
    <#@ Assembly Name="System.Core" #>
    <#@ Assembly Name="System.Windows.Forms" #>
    <#@ Assembly Name="MySql.Data.dll" #>
    <#@ Assembly Name="System.Data" #>
    <#@ Assembly Name="System" #>
    <#@ import namespace="System" #>
    <#@ import namespace="System.IO" #>
    <#@ import namespace="System.Diagnostics" #>
    <#@ import namespace="System.Linq" #>
    <#@ import namespace="System.Collections" #>
    <#@ import namespace="System.Collections.Generic" #> 
    <#@ import namespace="MySql.Data" #>
    <#@ import namespace="MySql.Data.MySqlClient" #>
    
    //数据库基本信息设置
    <# 
        string Server="localhost";
        string UId="root";
        string PWd="fxy19940923..";
        string Db_Name="cxkdb";
    #>
    //获取数据库中各表基本数据
    <#
        string conStr="server="+Server+";database="+Db_Name+";uid="+UId+";pwd="+PWd;
        MySqlConnection con=new MySqlConnection(conStr);
        con.Open();
        MySqlParameter mp=new MySqlParameter("@db_name",Db_Name);
        string sqlStr="select * from information_schema.COLUMNS where table_schema=@db_name ";
        MySqlCommand cmd=new MySqlCommand(sqlStr,con);
        cmd.Parameters.Add(mp);
        MySqlDataReader dr = cmd.ExecuteReader();
    
        var TableList=new List<string>();
        var DetailList=new List<Tuple<string,string,string>>();
        var TableName="";
        while(dr.Read())
        {
            var Table=dr["TABLE_NAME"].ToString();
            if(TableName==Table)
            {
                var Column=dr["COLUMN_NAME"].ToString();
                var DataTypeOld=dr["DATA_TYPE"].ToString();
                var DataType=DataTypeOld=="varchar"?"string":
                    (DataTypeOld=="int"?"int":
                    (DataTypeOld=="datetime"?"DateTime":
                    (DataTypeOld=="decimal"?"decimal":
                    (DataTypeOld=="char"?"string":
                    (DataTypeOld=="bit"?"Boolean":"string")))));
                DetailList.Add(Tuple.Create(Table,DataType,Column));
            }
            else
            {
                TableList.Add(Table);
            }
            TableName=Table;
        }
    #>
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data;

    3.利用1中的方法新建DataBaseEntity.tt文本模板,并添加如下代码。

    <#@ template debug="false" hostspecific="false" language="C#" #>
    <#@ output extension=".cs" #>
    <#@  include file="Base.tt" #>
    
    namespace DataBaseEntity
    {
    <# foreach(var item in TableList) { #>
        public class <#= item #>
        {<# foreach(var detail in DetailList) {if( item == detail.Item1 ) { #> 
            public <#=detail.Item2#> <#=detail.Item3#> { get; set; } 
    <#}}#>    }
    <# } #>}

    4.将数据库的基本信息填写在Base.tt文件中,即“数据库基本设置”部分,然后依次保存Base.tt、DataBaseEntity.tt,在DataBase.tt目录下会生成对应的实体类。

  • 相关阅读:
    MySql数据库时区异常,java.sql.SQLException: The server time zone value '?й???׼ʱ?' is unrecognized or represents more than one time zone.
    SpringBoot中自定义properties文件配置参数并带有输入提示
    Springboot2.x 集成jsp
    Spring Boot使用AOP实现REST接口简易灵活的安全认证
    Spring Boot使用过滤器和拦截器分别实现REST接口简易安全认证
    Spring Boot使用RestTemplate消费REST服务的几个问题记录
    Spring Boot开发MongoDB应用实践
    Spring Boot定时任务应用实践
    Spring Boot缓存应用实践
    Spring Boot消息队列应用实践
  • 原文地址:https://www.cnblogs.com/fuxuyang/p/7435927.html
Copyright © 2020-2023  润新知