PDMan SqlSugar模板

本文介绍了一个使用SqlSugar ORM框架自动生成C#实体类的过程。该过程包括了如何根据数据库表结构动态创建实体类,并为每个字段添加相应的属性及SugarColumn特性。此外,还展示了如何自动生成构造函数及ToString方法。
using System;
using System.Collections.Generic;
using SqlSugar;

$blankline
{{
    var today=new Date();
    var fullYear=today.getFullYear();
    var month=today.getMonth() + 1;
    var days=today.getDate();
    var sqlSugartable='[SugarTable("{{=it.entity.defKey}}", TableDescription = "{{=it.func.join(it.entity.defName,it.entity.comment,';')}}")]';
    
    var pkVarName = "undefinedId";
    var pkDataType = "String";
    it.entity.fields.forEach(function(field){
        if(field.primaryKey){
            pkVarName = it.func.camel(field.defKey,false);
            pkDataType = field["type"];
            return;
        }
    });
    /*
    var defKeyArray=it.entity.fields.map(t=>+t.defKey+'\":this.'+it.func.camel(t.defKey,true));
    */
    var pkgName = it.entity.env.base.nameSpace;
    var beanClass = it.entity.env.base.codeRoot;
    var beanVarName = beanClass.charAt(0).toLowerCase()+beanClass.slice(1);
    var serviceClass = beanClass+'Service';
    var serviceVarName= beanVarName+'Service';
}}


/*
 * @author : 
 * @date : {{=fullYear}}-{{=month}}-{{=days}}
 * @desc : {{=it.func.join(it.entity.defName,it.entity.comment,'-')}}
 */
namespace {{=pkgName}}
{
    /// <summary>
    /// {{=it.func.join(it.entity.defName,it.entity.comment,';')}}
    /// </summary>
    {{=sqlSugartable}}
    public class {{=it.entity.defKey}}
    {
        {{~it.entity.fields:field:index}}
        /// <summary>
        /// {{=it.func.join(field.defName,field.comment,';')}}
        /// </summary>
        {{? field.primaryKey }}
        [SugarColumn(ColumnName="{{=field.defKey}}",IsIdentity = true, IsPrimaryKey = true)]
        {{?}}
        {{?  !field.primaryKey }}
        [SugarColumn(ColumnName="{{=field.defKey}}")]
        {{?}}
        public {{=field.type}} {{=it.func.camel(field.defKey,true)}}{ get; set; }
        $blankline
        {{~}}
    
    
        public override string ToString()
        {
            return $"{{=it.entity.fields.map(t=>{let s= t.defKey+':{this.'+it.func.camel(t.defKey,true); 
            /*if(t.type!="string"){
                s+='.ToString()';
                }   */
            s +='}';
            return s;
            }).join(',')}}";
        }
    }
}
我的示例模板 =========模板开始================== package com.sgcc.{{=it.module.name}}.domain; $blankline import javax.persistence.*; import java.io.Serializable; import java.util.Date; import lombok.Data; import org.hibernate.annotations.GenericGenerator; $blankline $blankline /** * 容量电价信息表 * @Column参数: 1. name: 指定映射到数据库中的字段名 2. unique: 是否唯一,默认为false 3. nullable: 是否允许为null,默认为true 5. insertable: 是否允许插入,默认为true 6. updatetable: 是否允许更新,默认为true 7. columnDefinition: 指定该属性映射到数据库中的实际类型,通常是自动判断。 * @author changjiakang */ @Data @Entity @Table(name="{{=it.entity.title}}") public class {{=it.func.camel(it.entity.title,true) }} implements Serializable{ {{~it.entity.fields:field:index}} /** {{=it.func.join(field.chnname,field.remark,';')}} */ {{? field.pk }} @Id @GeneratedValue(generator = "idGenerator") @GenericGenerator(name = "idGenerator", strategy = "uuid") @Column(name = "ID", nullable = false, length = 32) {{?}} @Column(name = "{{=field.name}}", nullable = true) private {{=field.type}} {{=it.func.camel(field.name,false)}}; {{~}} } $blankline $blankline =================================================== import java.io.Serializable; import java.math.BigDecimal; import lombok.Data; /** * 容量电价信息Vo * @author changjiakang */ @Data public class {{=it.func.camel(it.entity.title,true) }}Vo implements Serializable { {{~it.entity.fields:field:index}} /** {{=it.func.join(field.chnname,field.remark,';')}} */ private {{=field.type}} {{=it.func.camel(field.name,false)}}; {{~}} } =========模板结束================== 四.重命名数据类型,生成Po Vo如果字段类型为空,需要设置所有空字段对应的数据类型 五.生成po vo 六.数据库新加的表需要重新导入
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值