jbase代码生成器(成型篇)

上一篇说到通用码表可以解决百分之八十的基础维护功能,剩下的百分二十的需要级联维护的界面可以用代码生成器生成代码,基于生成的代码拷贝再组装界面,来解决这百分之二十的工作量里的百分之八十工作量。

首先实现代码生成器

Class Jbase.MakeWebCode Extends %RegisteredObject
{

/// 编码格式改WriteLineWithCode
/// 生成所有表实体代码
/// w ##class(Jbase.MakeWebCode).MakeAllJavaModelCode()
ClassMethod MakeAllJavaModelCode()
{
	s rset1 = ##class(%ResultSet).%New()
	d rset1.Prepare("select TABLE_NAME FROM information_schema.Tables where TABLE_SCHEMA='dbo'")
	s exeret1=rset1.Execute()
	s colCount1=rset1.GetColumnCount()
	s dealNum1=0
    While(rset1.Next())
    {
        s colField=rset1.GetColumnName(1)
        s ColValue=rset1.GetDataByName(colField)
        i $e(ColValue,1,2)="V_" continue
        s makeRet= ..MakeModelCodeJava(ColValue,"LIS.ModelJava\")
        zw ColValue
        zw makeRet
    }
    q "完成"
}

/// 生成操作表相关的代码,包括java代码、界面增删改查代码、实体代码
/// 编码格式改WriteLineWithCode
/// TableName:表名
/// PathAdd:生成路径,默认D
/// AshxDir:ashx文件要放的路径,默认lis
/// w ##class(Jbase.MakeWebCode).MakeOneTableCode("SYS_Form")
/// w ##class(Jbase.MakeWebCode).MakeOneTableCode("BT_Bed")
/// w ##class(Jbase.MakeWebCode).MakeOneTableCode("BT_TestCode")
/// w ##class(Jbase.MakeWebCode).MakeOneTableCode("BT_Bottle")
/// w ##class(Jbase.MakeWebCode).MakeOneTableCode("BT_Ward")
ClassMethod MakeOneTableCode(TableName, PathAdd, AshxDir)
{
	s TableName=$g(TableName)
	s PathAdd=$g(PathAdd)
	s MPath=$g(MPath)
	s AshxDir=$g(AshxDir)
	//构造java业务代码
	w ..MakeJavaBllCode(TableName, PathAdd, AshxDir),!
	//构造aspx页面代码
	w ..MakeAspxCode(TableName, PathAdd, AshxDir),!
	//构造实体代码
	w ..MakeModelCodeJava(TableName, PathAdd),!
	q "完成"
}

/// 构造表的增删改查的界面代码,以简化常规表界面代码工作量
/// 编码格式改WriteLineWithCode
/// w ##class(Jbase.MakeWebCode).MakeAspxCode("BT_Container")
ClassMethod MakeJavaBllCode(TableName, PathAdd, AshxDir)
{
	s TableName=$g(TableName)
	s PathAdd=$g(PathAdd)
	s AshxDir=$g(AshxDir)
	i '$l(AshxDir) s AshxDir="lis"
	s rset = ##class(%ResultSet).%New()
	d rset.Prepare("select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,DESCRIPTION,IS_NULLABLE FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='dbo'  and TABLE_NAME='"_TableName_"'")
	s exeret=rset.Execute()
	s colCount=rset.GetColumnCount()
	Set repid=$I(^CacheTemp)
	k ^TMP($zn,repid,$j)
	s IsLinux=1
	s logpath=""
	i ##class(%SYSTEM.Version).GetOS()="Windows" s IsLinux=0
	//默认路径
	i '$l(logpath) d
	.i IsLinux=0 d
	..s logpath="D:\"
	.e  d
	..s logpath="/"
	
	s logName=logpath_PathAdd_"ash"_$tr(TableName,"_")_".java"
	//方法名,查询名
	s TableInnerName=$tr(TableName,"_")
	//不存在目录就创建
	i '##class(%File).DirectoryExists(logpath_PathAdd) d
	.d ##class(%File).CreateNewDir(logpath_PathAdd,"")
	
	s file=##class(%File).%New(logName)
	//存在就追加
	i ##class(%File).Exists(logName) d
	.d ##class(%File).Delete(logName)
	.d file.Open("WSN:/SHARED:/IOTABLE=""UTF8""")
	//不存在就新建
	e  d
	.d file.Open("WSN:/SHARED:/IOTABLE=""UTF8""")
	
	//写类头部
	d ..WriteLineWithCode(file,"import appcode.BaseHttpHandlerNoSession;")
	d ..WriteLineWithCode(file,"import appcode.Helper;")
	d ..WriteLineWithCode(file,"import LIS.Core.Dto.HashParam;")
    d ..WriteLineWithCode(file,"import LIS.Core.Dto.ParamDto;")
    d ..WriteLineWithCode(file,"import LIS.Core.Dto.OutParam;")
    d ..WriteLineWithCode(file,"import LIS.Model.Entity.*;")
    d ..WriteLineWithCode(file,"import LIS.Core.Util.Convert;")
    d ..WriteLineWithCode(file,"")
    
    d ..WriteLineWithCode(file,"import java.util.ArrayList;")
    d ..WriteLineWithCode(file,"import java.util.List;")
    d ..WriteLineWithCode(file,"")
    
    d ..WriteLineWithCode(file,"/**")
    d ..WriteLineWithCode(file,"*由代码生成器生成的后台代码")
    d ..WriteLineWithCode(file,"*/")
    d ..WriteLineWithCode(file,"public class ash"_TableInnerName_" extends BaseHttpHandlerNoSession {")
 
    //构造增加方法的代码
    d ..WriteLineWithCode(file,"")
    d ..WriteLineWithCode(file,"	/**")
    d ..WriteLineWithCode(file,"	 * 保存数据,前台按表的属性名提交")
    d ..WriteLineWithCode(file,"	 * @return 字符串")
    d ..WriteLineWithCode(file,"	 */")
    d ..WriteLineWithCode(file,"	public String Save"_TableInnerName_"()")
    d ..WriteLineWithCode(file,"    {")
    d ..WriteLineWithCode(file,"		"_TableInnerName_" dto=new "_TableInnerName_"();")
    
    While(rset.Next())
    {
	    s outStr=""
        s colField=rset.GetColumnName(1)
        s colName=rset.GetDataByName(colField)
        s colField1=rset.GetColumnName(2)
        s colType=rset.GetDataByName(colField1)
        s colField2=rset.GetColumnName(3)
        s colLen=rset.GetDataByName(colField2)
        s colField3=rset.GetColumnName(4)
        s colDesc=rset.GetDataByName(colField3)
  		d ..WriteLineWithCode(file,"		//"_colDesc)
        d ..WriteLineWithCode(file,"		dto."_colName_"=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, """_colName_"""), dto."_colName_");")
    }
    
    d ..WriteLineWithCode(file,"		OutParam out=new OutParam();")
    d ..WriteLineWithCode(file,"		int ret=0;")
    d ..WriteLineWithCode(file,"		//更新")
    d ..WriteLineWithCode(file,"		if(dto.RowID>0)")
    d ..WriteLineWithCode(file,"		{")
    d ..WriteLineWithCode(file,"			ret=EntityManager().Update(dto,null, out, null, null, null);")
    d ..WriteLineWithCode(file,"		}")
    d ..WriteLineWithCode(file,"		//插入数据")
    d ..WriteLineWithCode(file,"		else")
    d ..WriteLineWithCode(file,"		{")
    d ..WriteLineWithCode(file,"			ret=EntityManager().Save(dto,out);")
    d ..WriteLineWithCode(file,"		}")
	d ..WriteLineWithCode(file,"		if(ret==1)")
	d ..WriteLineWithCode(file,"		{")
	d ..WriteLineWithCode(file,"			return Helper.Success();")
	d ..WriteLineWithCode(file,"		}")
	d ..WriteLineWithCode(file,"		else")
    d ..WriteLineWithCode(file,"		{")
    d ..WriteLineWithCode(file,"			return Helper.Error(out);")
    d ..WriteLineWithCode(file,"		}")
    d ..WriteLineWithCode(file,"    }")
    d ..WriteLineWithCode(file,"")
    d ..WriteLineWithCode(file,"")
    d ..WriteLineWithCode(file,"")    
	
	
	//构造删除方法
	d ..WriteLineWithCode(file,"	/**")
    d ..WriteLineWithCode(file,"	 * 删除数据,多个RowID以上尖号分割")
    d ..WriteLineWithCode(file,"	 * @return 字符串")
    d ..WriteLineWithCode(file,"	 */")
    d ..WriteLineWithCode(file,"	public String Delete"_TableInnerName_"()")
    d ..WriteLineWithCode(file,"    {")
    d ..WriteLineWithCode(file,"		String RowIDS=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, ""RowIDS""), """");")
    
    d ..WriteLineWithCode(file,"		if(RowIDS.isEmpty())")
    d ..WriteLineWithCode(file,"		{")
    d ..WriteLineWithCode(file,"			return Helper.Error(""请传入要删除数据的RowID,多个以^分割!"");")
    d ..WriteLineWithCode(file,"		}")
    d ..WriteLineWithCode(file,"		//分割主键")
    d ..WriteLineWithCode(file,"		String [] arr=RowIDS.split(""^"");")
    d ..WriteLineWithCode(file,"		//创建一个空对象")
    d ..WriteLineWithCode(file,"		"_TableInnerName_" dto=new "_TableInnerName_"();")
    d ..WriteLineWithCode(file,"		//out参数")
    d ..WriteLineWithCode(file,"		OutParam out=new OutParam();")
    d ..WriteLineWithCode(file,"		//循环删除数据")
    d ..WriteLineWithCode(file,"		for(int i=0;i<arr.length;i++)")
	d ..WriteLineWithCode(file,"		{")
	d ..WriteLineWithCode(file,"			HashParam hs=new HashParam();")
	d ..WriteLineWithCode(file,"			hs.Add(""RowID"",Convert.ToInt32(arr[i]));")
	d ..WriteLineWithCode(file,"			int ret=EntityManager().Remove(dto,hs,out,null,null);")
	d ..WriteLineWithCode(file,"			if(ret!=1)")
	d ..WriteLineWithCode(file,"			{")
	d ..WriteLineWithCode(file,"				return Helper.Error(out);")
    d ..WriteLineWithCode(file,"			}")
    d ..WriteLineWithCode(file,"		}")
    d ..WriteLineWithCode(file,"		return Helper.Success();")
    d ..WriteLineWithCode(file,"	}")
    d ..WriteLineWithCode(file,"")
    d ..WriteLineWithCode(file,"")
    
    //构造查询方法的代码
    d ..WriteLineWithCode(file,"")
    d ..WriteLineWithCode(file,"	/**")
    d ..WriteLineWithCode(file,"	 * 查询数据,前台按表的属性名提交")
    d ..WriteLineWithCode(file,"	 * @return 字符串")
    d ..WriteLineWithCode(file,"	 */")
    d ..WriteLineWithCode(file,"	public String Qry"_TableInnerName_"()")
    d ..WriteLineWithCode(file,"    {")
    d ..WriteLineWithCode(file,"		//预留的取前台参数代码")
    
    d ..WriteLineWithCode(file,"		//创建一个空对象")
    d ..WriteLineWithCode(file,"		"_TableInnerName_" dto=new "_TableInnerName_"();")
    d ..WriteLineWithCode(file,"		//参数")
    d ..WriteLineWithCode(file,"		List<ParamDto> para=new ArrayList<>();")
    d ..WriteLineWithCode(file,"		//sql连接符号")
    d ..WriteLineWithCode(file,"		List<String> joiner=new ArrayList<>();")
    d ..WriteLineWithCode(file,"		//sql比较符号")
    d ..WriteLineWithCode(file,"		List<String> operators=new ArrayList<>();")
    d ..WriteLineWithCode(file,"		//模糊查询")
    d ..WriteLineWithCode(file,"		String Filter=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, ""Filter""), """");")
    s exeret=rset.Execute()
    d ..WriteLineWithCode(file,"		//预留参数")
    While(rset.Next())
    {
	    s outStr=""
        s colField=rset.GetColumnName(1)
        s colName=rset.GetDataByName(colField)
        s colField1=rset.GetColumnName(2)
        s colType=rset.GetDataByName(colField1)
        s colField2=rset.GetColumnName(3)
        s colLen=rset.GetDataByName(colField2)
        s colField3=rset.GetColumnName(4)
        s colDesc=rset.GetDataByName(colField3)
        d ..WriteLineWithCode(file,"		//"_colDesc)
        d ..WriteLineWithCode(file,"		String "_colName_"=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, """_colName_"""), """");")

    }
    s exeret=rset.Execute()
    d ..WriteLineWithCode(file,"		//模糊查询")
    d ..WriteLineWithCode(file,"		if(!Filter.isEmpty())")
    d ..WriteLineWithCode(file,"		{")
    d ..WriteLineWithCode(file,"			ParamDto p=null;")
    While(rset.Next())
    {
	    s outStr=""
        s colField=rset.GetColumnName(1)
        s colName=rset.GetDataByName(colField)
        s colField1=rset.GetColumnName(2)
        s colType=rset.GetDataByName(colField1)
        s colField2=rset.GetColumnName(3)
        s colLen=rset.GetDataByName(colField2)
        s colField3=rset.GetColumnName(4)
        s colDesc=rset.GetDataByName(colField3)
        i colType'="varchar" continue
		d ..WriteLineWithCode(file,"			//"_colDesc)
        d ..WriteLineWithCode(file,"			p=new ParamDto();")
        d ..WriteLineWithCode(file,"			p.Key="""_colName_""";")
        d ..WriteLineWithCode(file,"			p.Value=""%""+Filter+""%"";")
        d ..WriteLineWithCode(file,"			para.add(p);")
        d ..WriteLineWithCode(file,"			joiner.add(""or"");")
        d ..WriteLineWithCode(file,"			operators.add(""like"");")
    }
    d ..WriteLineWithCode(file,"		}")
    
    d ..WriteLineWithCode(file,"		//调用查询")
    d ..WriteLineWithCode(file,"		String json=EntityManager().QueryAllWithFK(dto,para,"""",true,-1,-1,"""",joiner,operators);")
    d ..WriteLineWithCode(file,"		return json;")
    d ..WriteLineWithCode(file,"	}")
    d ..WriteLineWithCode(file,"")
    d ..WriteLineWithCode(file,"")
    
    
    
    //收尾
    d ..WriteLineWithCode(file,"}")
    d file.Close()
    q "代码生成在:"_logName
	q "完成"
}

/// 构造表的增删改查的界面代码,以简化常规表界面代码工作量
/// 编码格式改WriteLineWithCode
/// w ##class(Jbase.MakeWebCode).MakeAspxCode("SYS_TableEnum")
/// w ##class(Jbase.MakeWebCode).MakeAspxCode("RP_VisitNumber")
ClassMethod MakeAspxCode(TableName, PathAdd, AshxDir)
{
	s TableName=$g(TableName)
	s PathAdd=$g(PathAdd)
	s AshxDir=$g(AshxDir)
	i '$l(AshxDir) s AshxDir="lis"
	s ClassName=$tr(TableName,"_")
	s ClassName=$tr(TableName,"_")
	s rset = ##class(%ResultSet).%New()
	d rset.Prepare("select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,DESCRIPTION,IS_NULLABLE FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='dbo'  and TABLE_NAME='"_TableName_"'")
	s exeret=rset.Execute()
	s colCount=rset.GetColumnCount()
	Set repid=$I(^CacheTemp)
	k ^TMP($zn,repid,$j)
	s IsLinux=1
	s logpath=""
	i ##class(%SYSTEM.Version).GetOS()="Windows" s IsLinux=0
	//默认路径
	i '$l(logpath) d
	.i IsLinux=0 d
	..s logpath="D:\"
	.e  d
	..s logpath="/"
	
	s logName=logpath_PathAdd_"frm"_$tr(TableName,"_")_".aspx"
	//方法名,查询名
	s TableInnerName=$tr(TableName,"_")
	//不存在目录就创建
	i '##class(%File).DirectoryExists(logpath_PathAdd) d
	.d ##class(%File).CreateNewDir(logpath_PathAdd,"")
	
	s file=##class(%File).%New(logName)
	//存在就追加
	i ##class(%File).Exists(logName) d
	.d ##class(%File).Delete(logName)
	.d file.Open("WSN:/SHARED:/IOTABLE=""UTF8""")
	//不存在就新建
	e  d
	.d file.Open("WSN:/SHARED:/IOTABLE=""UTF8""")
	
	
	s RowSpec="RowID"
	s RowLen="10"
	s RowRemark="主键"
	s types="int"
    While(rset.Next())
    {
	    s outStr=""
        s colField=rset.GetColumnName(1)
        s colName=rset.GetDataByName(colField)
        s colField1=rset.GetColumnName(2)
        s colType=rset.GetDataByName(colField1)
        s colField2=rset.GetColumnName(3)
        s colLen=rset.GetDataByName(colField2)
        s colField3=rset.GetColumnName(4)
        s colDesc=rset.GetDataByName(colField3)
        s colField4=rset.GetColumnName(5)
        s NULLABLE=rset.GetDataByName(colField4)
        i colName="RowID" continue
        s RowSpec=RowSpec_","_colName
        s type=colType
        i colType="integer" d
        .s type="int"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        i colType="bigint" d
        .s type="int"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        i colType="smallint" d
        .s type="int"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        i colType="tinyint" d
        .s type="int"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        e  i colType="varchar" d
        .s type="string"
        e  i colType="bit" d
        .s type="bool"
        .s colLen=1
        .i NULLABLE="YES" d
        ..s type=type_"?"
        e  i colType="double" d
        .s type="double"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        e  i colType="numeric" d
        .s type="double"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        s RowLen=RowLen_","_colLen
        s colDesc=$tr(colDesc," ")
        i '$l(colDesc) s colDesc=colName
        s RowRemark=RowRemark_$c(2)_$p($p($p($p($p($p(colDesc," ",1),";",1),"{",1)," ",1),"	",1),"(",1)
        s types=types_","_type
    }
	
	//写类头部
	d ..WriteLineWithCode(file,"<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">")
	d ..WriteLineWithCode(file,"<html xmlns=""http://www.w3.org/1999/xhtml"">")
	d ..WriteLineWithCode(file,"<head>")
	d ..WriteLineWithCode(file,"    <meta http-equiv=""Content-Type"" content=""text/html;charset=utf-8"" />")
	d ..WriteLineWithCode(file,"    <title>"_TableInnerName_"供拷贝代码使用</title>")
	d ..WriteLineWithCode(file,"    <link rel=""shortcut icon"" href=""../../resource/common/images/favicon.ico"" />")
	d ..WriteLineWithCode(file,"    <script src=""../../resource/common/js/lis-commonHISUI.js"" type=""text/javascript""></script>")
	
	d ..WriteLineWithCode(file,"    <script language=""javascript"" type=""text/javascript"">")
	d ..WriteLineWithCode(file,"        //LISSYSPageCommonInfo.Init();")
	d ..WriteLineWithCode(file,"        var BasePath = '';")
	d ..WriteLineWithCode(file,"        var ResourcePath = '';")
	d ..WriteLineWithCode(file,"        //var WebServicAddress = LISSYSPageCommonInfo.Data.WebServicAddress;")
	d ..WriteLineWithCode(file,"        //var UserDR = LISSYSPageCommonInfo.Data.Sesssion.UserDR;")
	d ..WriteLineWithCode(file,"        //var WorkGroupDR = LISSYSPageCommonInfo.Data.Sesssion.WorkGroupDR;")
	d ..WriteLineWithCode(file,"        //var sysTheme = LISSYSPageCommonInfo.Data.Sesssion.Theme;")
	d ..WriteLineWithCode(file,"        //var SessionStr = LISSYSPageCommonInfo.Data.SessionStr;")
	d ..WriteLineWithCode(file,"    </script>")
	d ..WriteLineWithCode(file,"    <script type=""text/javascript"">")
	d ..WriteLineWithCode(file,"        //全局变量")
	d ..WriteLineWithCode(file,"        var me = {")
	d ..WriteLineWithCode(file,"            actionUrl: '../ashx/ash"_TableInnerName_".ashx'")
	d ..WriteLineWithCode(file,"        };")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"        //jquery入口")
	d ..WriteLineWithCode(file,"        $(function () {")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"            //新增数据点击")
	d ..WriteLineWithCode(file,"            $(""#btnAdd"_TableInnerName_""").click(function () {")
	d ..WriteLineWithCode(file,"                $(""#txt"_TableInnerName_"RowID"").val(""""); ")
	d ..WriteLineWithCode(file,"				$('#winEdit"_TableInnerName_"').window({")
	d ..WriteLineWithCode(file,"                    title: TranslateDataMTHD('Add Data', '新增数据', ''),")
	d ..WriteLineWithCode(file,"                    modal: true")
	d ..WriteLineWithCode(file,"                });")
	d ..WriteLineWithCode(file,"            });")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"            //修改数据点击")
	d ..WriteLineWithCode(file,"            $(""#btnUpdate"_TableInnerName_""").click(function () {")
	d ..WriteLineWithCode(file,"				Update"_TableInnerName_"();")
	d ..WriteLineWithCode(file,"            });")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"			//修改数据")
	d ..WriteLineWithCode(file,"			function Update"_TableInnerName_"(row)")
	d ..WriteLineWithCode(file,"			{")
	d ..WriteLineWithCode(file,"                var selectRow = $('#dg"_TableInnerName_"').datagrid(""getSelected"");")
	d ..WriteLineWithCode(file,"                if(row!=null)")
	d ..WriteLineWithCode(file,"                {")
	d ..WriteLineWithCode(file,"                	selectRow=row;")
	d ..WriteLineWithCode(file,"                }")
	d ..WriteLineWithCode(file,"                if (selectRow == null) {")
	d ..WriteLineWithCode(file,"                    $.messager.alert(TranslateDataMTHD('Info', '提示', ''), TranslateDataMTHD('Please select the data to modify', '请选择要修改的数据!', ''), 'info');")
	d ..WriteLineWithCode(file,"                    return;")
	d ..WriteLineWithCode(file,"                }")
	d ..WriteLineWithCode(file,"				$(""#form"_TableInnerName_""").form('load', selectRow);")
	d ..WriteLineWithCode(file,"				$('#winEdit"_TableInnerName_"').window({")
	d ..WriteLineWithCode(file,"                    title: TranslateDataMTHD('Update Data', '修改数据', ''),")
	d ..WriteLineWithCode(file,"                    modal: true")
	d ..WriteLineWithCode(file,"                });")
	d ..WriteLineWithCode(file,"			}")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"            //删除数据点击")
	d ..WriteLineWithCode(file,"            $(""#btnDelete"_TableInnerName_""").click(function () {")
	d ..WriteLineWithCode(file,"                var checkRow = $('#dg"_TableInnerName_"').datagrid(""getChecked"");")
	d ..WriteLineWithCode(file,"                var selectRow = $('#dg"_TableInnerName_"').datagrid(""getSelected"");")
	d ..WriteLineWithCode(file,"                if ((checkRow == null || checkRow.length == 0)&&selectRow==null) {")
	d ..WriteLineWithCode(file,"                    $.messager.alert(TranslateDataMTHD('Info', '提示', ''), TranslateDataMTHD('Please select the data to delete', '请勾选要删除的数据!', ''), 'info');")
	d ..WriteLineWithCode(file,"                    return;")
	d ..WriteLineWithCode(file,"                }")
	d ..WriteLineWithCode(file,"                if ((checkRow == null || checkRow.length == 0)) {")
	d ..WriteLineWithCode(file,"                    checkRow=[selectRow];")
	d ..WriteLineWithCode(file,"                }")
	d ..WriteLineWithCode(file,"                var RowIDS = """";")
	d ..WriteLineWithCode(file,"                for (var i = 0; i < checkRow.length; i++) {")
	d ..WriteLineWithCode(file,"                    if (i == 0) {")
	d ..WriteLineWithCode(file,"                        RowIDS = checkRow[i].RowID;")
	d ..WriteLineWithCode(file,"                    }")
	d ..WriteLineWithCode(file,"                    else {")
	d ..WriteLineWithCode(file,"                        RowIDS += ""^"" + checkRow[i].RowID;")
	d ..WriteLineWithCode(file,"                    }")
	d ..WriteLineWithCode(file,"                }")
	d ..WriteLineWithCode(file,"                $.messager.confirm(TranslateDataMTHD('Info', '提示', ''), TranslateDataMTHD('Do you want to delete the selected data', '是否要删除选择的数据?', '') , function (r) {")
	d ..WriteLineWithCode(file,"                    if (r) {")
	d ..WriteLineWithCode(file,"                		//开启等待")
	d ..WriteLineWithCode(file,"                		$.messager.progress({ text: TranslateDataMTHD(""Deleting data"",""正在删除数据"", """"), interval: 500 });")
	d ..WriteLineWithCode(file,"                		setTimeout(function () {")
	d ..WriteLineWithCode(file,"                    		$.messager.progress('close');")
	d ..WriteLineWithCode(file,"                		}, 8000);")
	d ..WriteLineWithCode(file,"                		//往后台提交数据")
	d ..WriteLineWithCode(file,"                		$.ajax({")
	d ..WriteLineWithCode(file,"                    		type: ""post"",")
	d ..WriteLineWithCode(file,"                    		dataType: ""json"",")
	d ..WriteLineWithCode(file,"                    		cache: false, //")
	d ..WriteLineWithCode(file,"                    		async: true, //为true时,异步,不等待后台返回值,为false时强制等待;-asir")
	d ..WriteLineWithCode(file,"                    		url: me.actionUrl + '?Method=Delete"_TableInnerName_"',")
	d ..WriteLineWithCode(file,"                    		data: { RowIDS: RowIDS },")
	d ..WriteLineWithCode(file,"                    		success: function (data, status) {")
	d ..WriteLineWithCode(file,"                        		$.messager.progress('close');")
	d ..WriteLineWithCode(file,"                        		if (!FilterBackData(data)) {")
	d ..WriteLineWithCode(file,"                            		return;")
	d ..WriteLineWithCode(file,"                        		}")
	d ..WriteLineWithCode(file,"                        		if (!data.IsOk) {")
	d ..WriteLineWithCode(file,"                            		$.messager.alert(TranslateDataMTHD(""Error message"", ""错误提示"", """"), TranslateDataMTHD(""failed to dalete data, error message:"", ""删除失败,错误信息:"", """") + data.Message);")
	d ..WriteLineWithCode(file,"                        		}")
	d ..WriteLineWithCode(file,"                        		else {")
	d ..WriteLineWithCode(file,"                            		Qry"_TableInnerName_"();")
	d ..WriteLineWithCode(file,"                            		$.messager.show({")
	d ..WriteLineWithCode(file,"                                		title: TranslateDataMTHD(""Info"", ""提示"", """"),")
	d ..WriteLineWithCode(file,"                               		 	msg: TranslateDataMTHD(""Successfully deleted!"", ""删除成功!"", """"),")
	d ..WriteLineWithCode(file,"                                		timeout: 500,")
	d ..WriteLineWithCode(file,"                                		showType: 'slide'")
	d ..WriteLineWithCode(file,"                            		});")
	d ..WriteLineWithCode(file,"                        		}")
	d ..WriteLineWithCode(file,"                    		}")
	d ..WriteLineWithCode(file,"                		});")
	d ..WriteLineWithCode(file,"                    }")
	d ..WriteLineWithCode(file,"                });")
	d ..WriteLineWithCode(file,"            });")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"            //保存数据")
	d ..WriteLineWithCode(file,"            $(""#btnSave"_TableInnerName_""").click(function () {")
	d ..WriteLineWithCode(file,"                var saveData = jQuery.parseJSON($(""#form"_TableInnerName_""").serializeObject());")
	d ..WriteLineWithCode(file,"                //开启等待")
	d ..WriteLineWithCode(file,"                $.messager.progress({ text: TranslateDataMTHD(""Saving data"",""正在保存数据"", """"), interval: 500 });")
	d ..WriteLineWithCode(file,"                setTimeout(function () {")
	d ..WriteLineWithCode(file,"                    $.messager.progress('close');")
	d ..WriteLineWithCode(file,"                }, 8000);")
	d ..WriteLineWithCode(file,"                //往后台提交数据")
	d ..WriteLineWithCode(file,"                $.ajax({")
	d ..WriteLineWithCode(file,"                    type: ""post"",")
	d ..WriteLineWithCode(file,"                    dataType: ""json"",")
	d ..WriteLineWithCode(file,"                    cache: false, //")
	d ..WriteLineWithCode(file,"                    async: true, //为true时,异步,不等待后台返回值,为false时强制等待;-asir")
	d ..WriteLineWithCode(file,"                    url: me.actionUrl + '?Method=Save"_TableInnerName_"',")
	d ..WriteLineWithCode(file,"                    data: saveData,")
	d ..WriteLineWithCode(file,"                    success: function (data, status) {")
	d ..WriteLineWithCode(file,"                        $.messager.progress('close');")
	d ..WriteLineWithCode(file,"                        if (!FilterBackData(data)) {")
	d ..WriteLineWithCode(file,"                            return;")
	d ..WriteLineWithCode(file,"                        }")
	d ..WriteLineWithCode(file,"                        if (!data.IsOk) {")
	d ..WriteLineWithCode(file,"                            $.messager.alert(TranslateDataMTHD(""Error message"", ""错误提示"", """"), TranslateDataMTHD(""failed to dalete data, error message:"", ""删除失败,错误信息:"", """") + data.Message);")
	d ..WriteLineWithCode(file,"                        }")
	d ..WriteLineWithCode(file,"                        else {")
	d ..WriteLineWithCode(file,"                            Qry"_TableInnerName_"();")
	d ..WriteLineWithCode(file,"                            $.messager.show({")
	d ..WriteLineWithCode(file,"                                title: TranslateDataMTHD(""Info"", ""提示"", """"),")
	d ..WriteLineWithCode(file,"                                msg: TranslateDataMTHD(""Successfully saveed!"", ""保存成功!"", """"),")
	d ..WriteLineWithCode(file,"                                timeout: 500,")
	d ..WriteLineWithCode(file,"                                showType: 'slide'")
	d ..WriteLineWithCode(file,"                            });")
	d ..WriteLineWithCode(file,"                            $('#winEdit"_TableInnerName_"').window(""close"");")
	d ..WriteLineWithCode(file,"                        }")
	d ..WriteLineWithCode(file,"                    }")
	d ..WriteLineWithCode(file,"                });")
	d ..WriteLineWithCode(file,"            });")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"            //关闭窗口")
	d ..WriteLineWithCode(file,"            $(""#btnClose"_TableInnerName_""").click(function () {")
	d ..WriteLineWithCode(file,"				$('#winEdit"_TableInnerName_"').window(""close"");")
	d ..WriteLineWithCode(file,"            });")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"            //构造查询事件")
	d ..WriteLineWithCode(file,"            $(""#txtFilter"_TableInnerName_""").searchbox({")
	d ..WriteLineWithCode(file,"                searcher: function (value, name) {")
	d ..WriteLineWithCode(file,"                    Qry"_TableInnerName_"();")
	d ..WriteLineWithCode(file,"                },")
	d ..WriteLineWithCode(file,"                prompt: TranslateDataMTHD('Enter query', '回车查询', '')")
	d ..WriteLineWithCode(file,"            });")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"")
	f i=1:1:$l(RowSpec,",") d
	.s colName=$p(RowSpec,",",i)
	.s colLen=$p(RowLen,",",i)
	.s remark=$p(RowRemark,$c(2),i)
	.s type=$p(types,",",i)
	.//外键参照信息
    .s refInfo=..GetForeignKeyInfo(colName,TableName)
    .//有外键
    .i $l(refInfo) d
    ..d ..WriteLineWithCode(file,"            //"_remark_"下拉表格渲染")
    ..d ..WriteLineWithCode(file,"            $('#txt"_TableInnerName_colName_"').combogrid({")
    ..d ..WriteLineWithCode(file,"                panelWidth: 350,")
    ..d ..WriteLineWithCode(file,"                idField: 'RowID',")
    ..d ..WriteLineWithCode(file,"                width: 205,")
    ..d ..WriteLineWithCode(file,"                textField: '"_$p(refInfo,"^",3)_"',")
    ..d ..WriteLineWithCode(file,"                url: me.actionUrl + '?Method=CommonQueryView&data='+JSON.stringify({ ModelName: """_$tr($p(refInfo,"^",1),"_")_""", Pram: [], IsDisplayCount: false, Joiner: [], Operators: [] }),")
    ..d ..WriteLineWithCode(file,"                columns: [[")
    ..d ..WriteLineWithCode(file,"                    { field: 'RowID', title: '主键', width: 60 },")
    ..d ..WriteLineWithCode(file,"                    { field: '"_$p(refInfo,"^",3)_"', title: '名称', width: 260 }")
    ..d ..WriteLineWithCode(file,"                ]]")
    ..d ..WriteLineWithCode(file,"            });")
    ..d ..WriteLineWithCode(file,"            $('#txt"_TableInnerName_colName_"').combogrid(""showSelectWin"");")
    ..d ..WriteLineWithCode(file,"")
    .//没外键
    .e  i $l(colName)>4 d
    ..s LastName=$e(colName,$l(colName)-3,$l(colName))
    ..//bool类型
    ..i (type="bool")||(type="bool?") d
    ...d ..WriteLineWithCode(file,"            //"_remark_"布尔渲染")
	...d ..WriteLineWithCode(file,"            $('#txt"_TableInnerName_colName_"').combobox({")
    ...d ..WriteLineWithCode(file,"                valueField:'RowID',")
    ...d ..WriteLineWithCode(file,"                textField:'CName',")
    ...d ..WriteLineWithCode(file,"                width: 205,")
    ...d ..WriteLineWithCode(file,"                data: [{""RowID"":""0"",""CName"":TranslateDataMTHD('No', '否', '')},{""RowID"":""1"",""CName"":TranslateDataMTHD('Yes', '是', '')}]")
    ...d ..WriteLineWithCode(file,"            });")
    ...d ..WriteLineWithCode(file,"")
	..i LastName="Date" d
    ...d ..WriteLineWithCode(file,"            //"_remark_"日期渲染")
	...d ..WriteLineWithCode(file,"            $('#txt"_TableInnerName_colName_"').datebox({")
    ...d ..WriteLineWithCode(file,"                required:false,")
    ...d ..WriteLineWithCode(file,"                editable: true,")
    ...d ..WriteLineWithCode(file,"                width: 205,")
    ...d ..WriteLineWithCode(file,"                formatter: DateFormatter,")
    ...d ..WriteLineWithCode(file,"                parser: DateParser")
    ...d ..WriteLineWithCode(file,"            });")
    ...d ..WriteLineWithCode(file,"            //设置默认日期")
    ...d ..WriteLineWithCode(file,"            $('#txt"_TableInnerName_colName_"').datebox(""setValue"",GetCurentDate())")
    ...d ..WriteLineWithCode(file,"")
    ..i LastName="Time" d
    ...d ..WriteLineWithCode(file,"            //"_remark_"时间渲染")
	...d ..WriteLineWithCode(file,"            $('#txt"_TableInnerName_colName_"').timespinner({")
    ...d ..WriteLineWithCode(file,"                required:false,")
    ...d ..WriteLineWithCode(file,"                editable: true,")
    ...d ..WriteLineWithCode(file,"                width: 205,")
    ...d ..WriteLineWithCode(file,"                showSeconds: true")
    ...d ..WriteLineWithCode(file,"            });")
    ...d ..WriteLineWithCode(file,"            //设置默认日期")
    ...d ..WriteLineWithCode(file,"            $('#txt"_TableInnerName_colName_"').timespinner(""setValue"",GetCurentTime())")
    ...d ..WriteLineWithCode(file,"")
    //构造表格代码
    d ..WriteLineWithCode(file,"            //"_TableInnerName_"表格")
    d ..WriteLineWithCode(file,"            $('#dg"_TableInnerName_"').datagrid({")
    d ..WriteLineWithCode(file,"                remoteSort:false,")
    d ..WriteLineWithCode(file,"                singleSelect: true,")
    d ..WriteLineWithCode(file,"                toolbar: ""#dg"_TableInnerName_"ToolBar"",")
    d ..WriteLineWithCode(file,"                fit: true,")
    d ..WriteLineWithCode(file,"                onSelect: function (index, row) {")
    d ..WriteLineWithCode(file,"                    //方便拷贝到子表查询用")
    d ..WriteLineWithCode(file,"                	var select"_TableInnerName_"=$('#dg"_TableInnerName_"').datagrid(""getSelected"");")
    d ..WriteLineWithCode(file,"                },")
    d ..WriteLineWithCode(file,"                onDblClickRow: function (index, row) {")
    d ..WriteLineWithCode(file,"                    Update"_TableInnerName_"(row);")
    d ..WriteLineWithCode(file,"                },")
    d ..WriteLineWithCode(file,"")
    d ..WriteLineWithCode(file,"                columns: [[")
    d ..WriteLineWithCode(file,"                    { field: 'ChkFlag', title: TranslateDataMTHD('Check', '选择', ''), width: 20, sortable: true, align: 'center', checkbox: true },")
    f i=1:1:$l(RowSpec,",") d
	.s colName=$p(RowSpec,",",i)
	.s colLen=$p(RowLen,",",i)
	.s remark=$p(RowRemark,$c(2),i)
	.s endChar=","
	.//外键参照信息
    .s refInfo=..GetForeignKeyInfo(colName,TableName)
    .i $l(refInfo) d
    ..s refTableName=$p(refInfo,"^",2)
    ..s refTableNameCol=$p(refInfo,"^",3)
    ..i refTableNameCol'="RowID" d
    ...s colName=colName_"Name"
	.i i=$l(RowSpec,",") s endChar=""
	.d ..WriteLineWithCode(file,"                    { field: '"_colName_"', title: TranslateDataMTHD('"_colName_"', '"_remark_"', '') , width: 150, sortable: true }"_endChar)
    d ..WriteLineWithCode(file,"                ]]")
    d ..WriteLineWithCode(file,"            });")
    d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"")
    //构造查询表格方法代码
	d ..WriteLineWithCode(file,"            //查询"_TableInnerName)
	d ..WriteLineWithCode(file,"            function Qry"_TableInnerName_"() {")
	d ..WriteLineWithCode(file,"                var Filter = $(""#txtFilter"_TableInnerName_""").searchbox(""getValue"");")
	d ..WriteLineWithCode(file,"                //开启等待,默认注释,在单击事件调用的逻辑启用等待会冲掉双击事件,按需要开启")
	d ..WriteLineWithCode(file,"                //$.messager.progress({ text: TranslateDataMTHD(""Querying data"",""正在查询数据"", """"), interval: 500 });")
	d ..WriteLineWithCode(file,"                //setTimeout(function () {")
	d ..WriteLineWithCode(file,"                    //$.messager.progress('close');")
	d ..WriteLineWithCode(file,"                //}, 8000);")
	d ..WriteLineWithCode(file,"                $.ajax({")
	d ..WriteLineWithCode(file,"                    type: ""post"",")
	d ..WriteLineWithCode(file,"                    dataType: ""json"",")
	d ..WriteLineWithCode(file,"                    cache: false, //")
	d ..WriteLineWithCode(file,"                    async: true, //为true时,异步,不等待后台返回值,为false时强制等待;-asir")
	d ..WriteLineWithCode(file,"                    url: me.actionUrl + '?Method=Qry"_TableInnerName_"',")
	d ..WriteLineWithCode(file,"                    data: { Filter: Filter },")
	d ..WriteLineWithCode(file,"                    success: function (data, status) {")
	d ..WriteLineWithCode(file,"                        //结束等待")
	d ..WriteLineWithCode(file,"                        //$.messager.progress('close');")
	d ..WriteLineWithCode(file,"                        $('#dg"_TableInnerName_"').datagrid(""loadData"", data);")
	d ..WriteLineWithCode(file,"                    }")
	d ..WriteLineWithCode(file,"                });")
	d ..WriteLineWithCode(file,"            };")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"            //执行查询数据")
	d ..WriteLineWithCode(file,"            Qry"_TableInnerName_"();")
	d ..WriteLineWithCode(file,"")
	d ..WriteLineWithCode(file,"")
	
	d ..WriteLineWithCode(file,"		});")
	d ..WriteLineWithCode(file,"    </script>")
	d ..WriteLineWithCode(file,"</head>")
	d ..WriteLineWithCode(file,"<body>")
	d ..WriteLineWithCode(file,"    <div class=""hisui-layout"" fit=""true"" style=""border: none;"">")
	d ..WriteLineWithCode(file,"        <div data-options=""region:'center',title:''"" style=""border: none;"">")
	d ..WriteLineWithCode(file,"            <div id=""dg"_TableInnerName_"ToolBar"" style=""padding: 3px 0px 3px 10px;"">")
	d ..WriteLineWithCode(file,"                <a id=""btnAdd"_TableInnerName_""" href=""#"" class=""hisui-linkbutton"" data-options=""iconCls:'icon-add'"" plain=""true"" listranslate=""html~Add"">新增</a>")
	d ..WriteLineWithCode(file,"                <a id=""btnUpdate"_TableInnerName_""" href=""#"" class=""hisui-linkbutton"" data-options=""iconCls:'icon-write-order'"" plain=""true"" listranslate=""html~Mod"">修改</a>")
	d ..WriteLineWithCode(file,"                <a id=""btnDelete"_TableInnerName_""" href=""#"" class=""hisui-linkbutton"" data-options=""iconCls:'icon-cancel'"" plain=""true"" listranslate=""html~Del"">删除</a>")
	d ..WriteLineWithCode(file,"                <input id=""txtFilter"_TableInnerName_""" style=""margin-left: 14px; width: 240px;""></input>")
	d ..WriteLineWithCode(file,"            </div>")
	d ..WriteLineWithCode(file,"            <table id=""dg"_TableInnerName_""" title="""" iconcls=""icon-paper"" listranslate=""title~"_TableInnerName_"""></table>")
	d ..WriteLineWithCode(file,"        </div>")
	
	s allColNum=$l(RowSpec,",")
	s ColNum=1
	i allColNum>6 s ColNum=2
	i allColNum>12 s ColNum=3
	s winWidth=370*ColNum+30
	s windowHeight=$l(RowSpec,",")*37/ColNum+90
	d ..WriteLineWithCode(file,"        <div id=""winEdit"_TableInnerName_""" style=""padding: 10px 0px 0px 10px;width:"_winWidth_"px;height:"_windowHeight_"px;"">")
	d ..WriteLineWithCode(file,"            <form id=""form"_TableInnerName_""" name=""edit_form"" method=""post"">")
	d ..WriteLineWithCode(file,"                <input type=""hidden"" id=""txt"_TableInnerName_"RowID"" name=""RowID"" value=""0"" />")
	d ..WriteLineWithCode(file,"                <table>")
	
	s outColNum=0
	f i=1:1:$l(RowSpec,",") d
	.s colName=$p(RowSpec,",",i)
	.i colName="RowID" q
	.s colLen=$p(RowLen,",",i)
	.s remark=$p(RowRemark,$c(2),i)
	.s outColNum=outColNum+1
	.i (ColNum=1)||(outColNum=1)||((outColNum#ColNum) =1) d
	..d ..WriteLineWithCode(file,"                    <tr>")
	.d ..WriteLineWithCode(file,"                        <td class=""lisar"" listranslate=""html~"_colName_""">"_remark_"</td>")
	.//外键参照信息
    .s refInfo=..GetForeignKeyInfo(colName,TableName)
    .//有外键
    .i $l(refInfo) d
    ..d ..WriteLineWithCode(file,"                        <td class=""lisal""><input id=""txt"_TableInnerName_colName_""" type=""text"" name="""_colName_""" style=""width:200px;""/></td>")
    .//没外键
    .e  d
    ..d ..WriteLineWithCode(file,"                        <td class=""lisal""><input id=""txt"_TableInnerName_colName_""" type=""text"" name="""_colName_""" style=""width:200px;"" class=""hisui-validatebox""  maxlength="""_colLen_"""/></td>")
    .i (ColNum=1)||((outColNum#ColNum) =0)||(outColNum=allColNum) d
    ..d ..WriteLineWithCode(file,"                    </tr>")
	d ..WriteLineWithCode(file,"                </table>")
	d ..WriteLineWithCode(file,"                <div region=""south"" border=""fale"" style=""text-align: center; padding: 5px 0 0;"">")
	d ..WriteLineWithCode(file,"                    <a id=""btnSave"_TableInnerName_""" href=""#"" class=""hisui-linkbutton"" plain=""false"" listranslate=""html~Save"">保存</a>")
	d ..WriteLineWithCode(file,"                    <span class=""sp6""></span>")
	d ..WriteLineWithCode(file,"                    <a id=""btnClose"_TableInnerName_""" href=""#"" class=""hisui-linkbutton"" plain=""false"" listranslate=""html~Cancel"">取消</a>")
	d ..WriteLineWithCode(file,"                </div>")
	d ..WriteLineWithCode(file,"            </form>")
	d ..WriteLineWithCode(file,"        </div>")
	d ..WriteLineWithCode(file,"</body>")
	d ..WriteLineWithCode(file,"</html>")
	d ..WriteLineWithCode(file,"")

	q "代码生成在:"_logName
}

/// 生成表java实体代码
/// 编码格式改WriteLineWithCode
/// w ##class(Jbase.MakeWebCode).MakeModelCodeJava("SYS_Form")
ClassMethod MakeModelCodeJava(TableName, PathAdd)
{
	s TableName=$g(TableName)
	s PathAdd=$g(PathAdd)
	s ClassName=$tr(TableName,"_")
	s rset = ##class(%ResultSet).%New()
	d rset.Prepare("select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,DESCRIPTION,IS_NULLABLE FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='dbo'  and TABLE_NAME='"_TableName_"'")
	s exeret=rset.Execute()
	s colCount=rset.GetColumnCount()
	Set repid=$I(^CacheTemp)
	k ^TMP($zn,repid,$j)
	s IsLinux=1
	s logpath=""
	i ##class(%SYSTEM.Version).GetOS()="Windows" s IsLinux=0
	//默认路径
	i '$l(logpath) d
	.i IsLinux=0 d
	..s logpath="D:\"
	.e  d
	..s logpath="/"
	
	s logName=logpath_PathAdd_$tr(TableName,"_")_".java"
	
	//不存在目录就创建
	i '##class(%File).DirectoryExists(logpath_PathAdd) d
	.d ##class(%File).CreateNewDir(logpath_PathAdd,"")
	
	s file=##class(%File).%New(logName)
	//存在就追加
	i ##class(%File).Exists(logName) d
	.d ##class(%File).Delete(logName)
	.d file.Open("WSN:/SHARED:/IOTABLE=""UTF8""")
	//不存在就新建
	e  d
	.d file.Open("WSN:/SHARED:/IOTABLE=""UTF8""")
	
	//写日志
	d ..WriteLineWithCode(file,"package LIS.Model.Entity;")
	d ..WriteLineWithCode(file,"import LIS.Core.CustomAttributes.*;")
	d ..WriteLineWithCode(file,"/**")
	d ..WriteLineWithCode(file,"*[功能描述:本代码由LIS内部代码生成工具生成,请不要手动修改,如要修改,请写修改变更记录]")
	d ..WriteLineWithCode(file,"*[创建者:LIS.Entity生成器]")
	d ..WriteLineWithCode(file,"*/")
	d ..WriteLineWithCode(file,"@UniqueAttribute(ColNames = ""RowID"")")
	d ..WriteLineWithCode(file,"@TableAttribute(Name=""dbo."_TableName_""")")
	d ..WriteLineWithCode(file,"public class "_ClassName)
	d ..WriteLineWithCode(file,"{")

    While(rset.Next())
    {
	    s outStr=""
        s colField=rset.GetColumnName(1)
        s colName=rset.GetDataByName(colField)
        s colField1=rset.GetColumnName(2)
        s colType=rset.GetDataByName(colField1)
        s colField2=rset.GetColumnName(3)
        s colLen=rset.GetDataByName(colField2)
        s colField3=rset.GetColumnName(4)
        s colDesc=rset.GetDataByName(colField3)
        s colField4=rset.GetColumnName(5)
        s NULLABLE=rset.GetDataByName(colField4)
        i '$l(colDesc) s colDesc=colName
        d ..WriteLineWithCode(file,"	/**")
        d ..WriteLineWithCode(file,"	* "_##Class(LIS.Util.Common).DealNotSeeChar(colDesc))
        d ..WriteLineWithCode(file,"	*/")
        i NULLABLE="NO" d
        .d ..WriteLineWithCode(file,"	@NotNullAttribute")
        
        i colName="RowID" d
        .d ..WriteLineWithCode(file,"	@IdAttribute(Name = ""RowID"")")
        
        s NULLABLE="No"
        s type=colType
        i colType="integer" d
        .s type="int"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        i colType="bigint" d
        .s type="int"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        i colType="smallint" d
        .s type="int"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        i colType="tinyint" d
        .s type="int"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        e  i colType="varchar" d
        .s type="String"
        e  i colType="bit" d
        .s type="boolean"
        .s colLen=1
        .i NULLABLE="YES" d
        ..s type=type_"?"
        e  i colType="double" d
        .s type="double"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        e  i colType="numeric" d
        .s type="double"
        .s colLen=10
        .i NULLABLE="YES" d
        ..s type=type_"?"
        
        i type="longvarbinary" s type="String"
        //外键参照信息
        s refInfo=..GetForeignKeyInfo(colName,TableName)
        s colLen=..DealNotSeeChar(colLen)
        i $l(refInfo) d
        .d ..WriteLineWithCode(file,"	@FrekeyAttribute(Name = """_$tr($p(refInfo,"^",1),"_")_""", RefColumnName = """_$p(refInfo,"^",2)_""", AssociaField = """_$p(refInfo,"^",3)_""")")
        i $l(colLen) d
        .d ..WriteLineWithCode(file,"	@LengthAttribute(MaxLen = "_colLen_")")
        
        d ..WriteLineWithCode(file,"	public "_type_" "_colName_";")
        d ..WriteLineWithCode(file,"")
    }
    d ..WriteLineWithCode(file,"}")
    d file.Close()
    q "代码生成在:"_logName
}

/// 带编码转换写字符
ClassMethod WriteLineWithCode(file, str)
{
	d file.WriteLine(str)
	//d file.WriteLine($zcvt(str,"O","UTF8"))
}

/// 得到外键参照关系
ClassMethod GetForeignKeyInfo(ColName, TableName)
{
	s TableName=$g(TableName)
	s ColName=$g(ColName)
	s rset = ##class(%ResultSet).%New()
	d rset.Prepare("select REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME,* FROM information_schema.KEY_COLUMN_USAGE where REFERENCED_TABLE_SCHEMA='dbo' and TABLE_NAME='"_TableName_"' and COLUMN_NAME='"_ColName_"'")
	s exeret=rset.Execute()
	s colCount=rset.GetColumnCount()
	s ret=""
	While(rset.Next())
    {
	    s outStr=""
        s colField=rset.GetColumnName(1)
        s refTableName=rset.GetDataByName(colField)
        s colField1=rset.GetColumnName(2)
        s refColName=rset.GetDataByName(colField1)
        s ret=refTableName_"^"_refColName_"^"_..GetForeignKeyAssociaField(refTableName)
    }
    q ret
}

/// 得到外键参照要拉取的字段
ClassMethod GetForeignKeyAssociaField(TableName)
{
	s TableName=$g(TableName)
	s rset = ##class(%ResultSet).%New()
	d rset.Prepare("select COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='dbo'  and TABLE_NAME='"_TableName_"'")
	s exeret=rset.Execute()
	s colCount=rset.GetColumnCount()
	s ret="RowID^1"
	s curLev=0
	s curIndex=0
	s index=0
	While(rset.Next())
    {
	    s index=index+1
	    s outStr=""
        s colField=rset.GetColumnName(1)
        s colName=rset.GetDataByName(colField)
        s lev=0
        i colName="CName" s lev=999
        i colName="IName" s lev=99
        i colName="XName" s lev=9
        i lev>curLev d
        .s ret=colName_"^"_index
        .s curLev=lev
        .s curIndex=index
    }
    q ret
}

/// 去除不可见字符
ClassMethod DealNotSeeChar(Data As %String) As %String
{
	s Data=$g(Data)
	i $l(Data) d
	.f i=0:1:31  d
	..s Data=$tr(Data,$c(i))
	.s Data=$tr(Data,$c(127))
	q Data
}

}

用生成器生成代码
在这里插入图片描述

前端示例

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <title>BTWard供拷贝代码使用</title>
    <link rel="shortcut icon" href="../../resource/common/images/favicon.ico" />
    <script src="../../resource/common/js/lis-commonHISUI.js" type="text/javascript"></script>
    <script language="javascript" type="text/javascript">
        //LISSYSPageCommonInfo.Init();
        var BasePath = '';
        var ResourcePath = '';
        //var WebServicAddress = LISSYSPageCommonInfo.Data.WebServicAddress;
        //var UserDR = LISSYSPageCommonInfo.Data.Sesssion.UserDR;
        //var WorkGroupDR = LISSYSPageCommonInfo.Data.Sesssion.WorkGroupDR;
        //var sysTheme = LISSYSPageCommonInfo.Data.Sesssion.Theme;
        //var SessionStr = LISSYSPageCommonInfo.Data.SessionStr;
    </script>
    <script type="text/javascript">
        //全局变量
        var me = {
            actionUrl: '../ashx/ashBTWard.ashx'
        };

        //jquery入口
        $(function () {

            //新增数据点击
            $("#btnAddBTWard").click(function () {
                $("#txtBTWardRowID").val(""); 
				$('#winEditBTWard').window({
                    title: TranslateDataMTHD('Add Data', '新增数据', ''),
                    modal: true
                });
            });


            //修改数据点击
            $("#btnUpdateBTWard").click(function () {
				UpdateBTWard();
            });

			//修改数据
			function UpdateBTWard(row)
			{
                var selectRow = $('#dgBTWard').datagrid("getSelected");
                if(row!=null)
                {
                	selectRow=row;
                }
                if (selectRow == null) {
                    $.messager.alert(TranslateDataMTHD('Info', '提示', ''), TranslateDataMTHD('Please select the data to modify', '请选择要修改的数据!', ''), 'info');
                    return;
                }
				$("#formBTWard").form('load', selectRow);
				$('#winEditBTWard').window({
                    title: TranslateDataMTHD('Update Data', '修改数据', ''),
                    modal: true
                });
			}



            //删除数据点击
            $("#btnDeleteBTWard").click(function () {
                var checkRow = $('#dgBTWard').datagrid("getChecked");
                var selectRow = $('#dgBTWard').datagrid("getSelected");
                if ((checkRow == null || checkRow.length == 0)&&selectRow==null) {
                    $.messager.alert(TranslateDataMTHD('Info', '提示', ''), TranslateDataMTHD('Please select the data to delete', '请勾选要删除的数据!', ''), 'info');
                    return;
                }
                if ((checkRow == null || checkRow.length == 0)) {
                    checkRow=[selectRow];
                }
                var RowIDS = "";
                for (var i = 0; i < checkRow.length; i++) {
                    if (i == 0) {
                        RowIDS = checkRow[i].RowID;
                    }
                    else {
                        RowIDS += "^" + checkRow[i].RowID;
                    }
                }
                $.messager.confirm(TranslateDataMTHD('Info', '提示', ''), TranslateDataMTHD('Do you want to delete the selected data', '是否要删除选择的数据?', '') , function (r) {
                    if (r) {
                		//开启等待
                		$.messager.progress({ text: TranslateDataMTHD("Deleting data","正在删除数据", ""), interval: 500 });
                		setTimeout(function () {
                    		$.messager.progress('close');
                		}, 8000);
                		//往后台提交数据
                		$.ajax({
                    		type: "post",
                    		dataType: "json",
                    		cache: false, //
                    		async: true, //为true时,异步,不等待后台返回值,为false时强制等待;-asir
                    		url: me.actionUrl + '?Method=DeleteBTWard',
                    		data: { RowIDS: RowIDS },
                    		success: function (data, status) {
                        		$.messager.progress('close');
                        		if (!FilterBackData(data)) {
                            		return;
                        		}
                        		if (!data.IsOk) {
                            		$.messager.alert(TranslateDataMTHD("Error message", "错误提示", ""), TranslateDataMTHD("failed to dalete data, error message:", "删除失败,错误信息:", "") + data.Message);
                        		}
                        		else {
                            		QryBTWard();
                            		$.messager.show({
                                		title: TranslateDataMTHD("Info", "提示", ""),
                               		 	msg: TranslateDataMTHD("Successfully deleted!", "删除成功!", ""),
                                		timeout: 500,
                                		showType: 'slide'
                            		});
                        		}
                    		}
                		});
                    }
                });
            });


            //保存数据
            $("#btnSaveBTWard").click(function () {
                var saveData = jQuery.parseJSON($("#formBTWard").serializeObject());
                //开启等待
                $.messager.progress({ text: TranslateDataMTHD("Saving data","正在保存数据", ""), interval: 500 });
                setTimeout(function () {
                    $.messager.progress('close');
                }, 8000);
                //往后台提交数据
                $.ajax({
                    type: "post",
                    dataType: "json",
                    cache: false, //
                    async: true, //为true时,异步,不等待后台返回值,为false时强制等待;-asir
                    url: me.actionUrl + '?Method=SaveBTWard',
                    data: saveData,
                    success: function (data, status) {
                        $.messager.progress('close');
                        if (!FilterBackData(data)) {
                            return;
                        }
                        if (!data.IsOk) {
                            $.messager.alert(TranslateDataMTHD("Error message", "错误提示", ""), TranslateDataMTHD("failed to dalete data, error message:", "删除失败,错误信息:", "") + data.Message);
                        }
                        else {
                            QryBTWard();
                            $.messager.show({
                                title: TranslateDataMTHD("Info", "提示", ""),
                                msg: TranslateDataMTHD("Successfully saveed!", "保存成功!", ""),
                                timeout: 500,
                                showType: 'slide'
                            });
                            $('#winEditBTWard').window("close");
                        }
                    }
                });
            });


            //关闭窗口
            $("#btnCloseBTWard").click(function () {
				$('#winEditBTWard').window("close");
            });


            //构造查询事件
            $("#txtFilterBTWard").searchbox({
                searcher: function (value, name) {
                    QryBTWard();
                },
                prompt: TranslateDataMTHD('Enter query', '回车查询', '')
            });



            //临床科室下拉表格渲染
            $('#txtBTWardLocationDR').combogrid({
                panelWidth: 350,
                idField: 'RowID',
                width: 205,
                textField: 'CName',
                url: me.actionUrl + '?Method=CommonQueryView&data='+JSON.stringify({ ModelName: "BTLocation", Pram: [], IsDisplayCount: false, Joiner: [], Operators: [] }),
                columns: [[
                    { field: 'RowID', title: '主键', width: 60 },
                    { field: 'CName', title: '名称', width: 260 }
                ]]
            });
            $('#txtBTWardLocationDR').combogrid("showSelectWin");

            //是否激活布尔渲染
            $('#txtBTWardActive').combobox({
                valueField:'RowID',
                textField:'CName',
                width: 205,
                data: [{"RowID":"0","CName":TranslateDataMTHD('No', '否', '')},{"RowID":"1","CName":TranslateDataMTHD('Yes', '是', '')}]
            });

            //BTWard表格
            $('#dgBTWard').datagrid({
                remoteSort:false,
                singleSelect: true,
                toolbar: "#dgBTWardToolBar",
                fit: true,
                onSelect: function (index, row) {
                    //方便拷贝到子表查询用
                	var selectBTWard=$('#dgBTWard').datagrid("getSelected");
                },
                onDblClickRow: function (index, row) {
                    UpdateBTWard(row);
                },

                columns: [[
                    { field: 'ChkFlag', title: TranslateDataMTHD('Check', '选择', ''), width: 20, sortable: true, align: 'center', checkbox: true },
                    { field: 'RowID', title: TranslateDataMTHD('RowID', '主键', '') , width: 150, sortable: true },
                    { field: 'Code', title: TranslateDataMTHD('Code', '代码', '') , width: 150, sortable: true },
                    { field: 'CName', title: TranslateDataMTHD('CName', '名称', '') , width: 150, sortable: true },
                    { field: 'HISCode', title: TranslateDataMTHD('HISCode', 'HIS对照码', '') , width: 150, sortable: true },
                    { field: 'LocationDRName', title: TranslateDataMTHD('LocationDRName', '临床科室', '') , width: 150, sortable: true },
                    { field: 'Sequence', title: TranslateDataMTHD('Sequence', '序号', '') , width: 150, sortable: true },
                    { field: 'Active', title: TranslateDataMTHD('Active', '是否激活', '') , width: 150, sortable: true },
                    { field: 'PhoneNo', title: TranslateDataMTHD('PhoneNo', 'PhoneNo', '') , width: 150, sortable: true }
                ]]
            });


            //查询BTWard
            function QryBTWard() {
                var Filter = $("#txtFilterBTWard").searchbox("getValue");
                //开启等待,默认注释,在单击事件调用的逻辑启用等待会冲掉双击事件,按需要开启
                //$.messager.progress({ text: TranslateDataMTHD("Querying data","正在查询数据", ""), interval: 500 });
                //setTimeout(function () {
                    //$.messager.progress('close');
                //}, 8000);
                $.ajax({
                    type: "post",
                    dataType: "json",
                    cache: false, //
                    async: true, //为true时,异步,不等待后台返回值,为false时强制等待;-asir
                    url: me.actionUrl + '?Method=QryBTWard',
                    data: { Filter: Filter },
                    success: function (data, status) {
                        //结束等待
                        //$.messager.progress('close');
                        $('#dgBTWard').datagrid("loadData", data);
                    }
                });
            };


            //执行查询数据
            QryBTWard();


		});
    </script>
</head>
<body>
    <div class="hisui-layout" fit="true" style="border: none;">
        <div data-options="region:'center',title:''" style="border: none;">
            <div id="dgBTWardToolBar" style="padding: 3px 0px 3px 10px;">
                <a id="btnAddBTWard" href="#" class="hisui-linkbutton" data-options="iconCls:'icon-add'" plain="true" listranslate="html~Add">新增</a>
                <a id="btnUpdateBTWard" href="#" class="hisui-linkbutton" data-options="iconCls:'icon-write-order'" plain="true" listranslate="html~Mod">修改</a>
                <a id="btnDeleteBTWard" href="#" class="hisui-linkbutton" data-options="iconCls:'icon-cancel'" plain="true" listranslate="html~Del">删除</a>
                <input id="txtFilterBTWard" style="margin-left: 14px; width: 240px;"></input>
            </div>
            <table id="dgBTWard" title="" iconcls="icon-paper" listranslate="title~BTWard"></table>
        </div>
        <div id="winEditBTWard" style="padding: 10px 0px 0px 10px;width:770px;height:238px;">
            <form id="formBTWard" name="edit_form" method="post">
                <input type="hidden" id="txtBTWardRowID" name="RowID" value="0" />
                <table>
                    <tr>
                        <td class="lisar" listranslate="html~Code">代码</td>
                        <td class="lisal"><input id="txtBTWardCode" type="text" name="Code" style="width:200px;" class="hisui-validatebox"  maxlength="10"/></td>
                        <td class="lisar" listranslate="html~CName">名称</td>
                        <td class="lisal"><input id="txtBTWardCName" type="text" name="CName" style="width:200px;" class="hisui-validatebox"  maxlength="40"/></td>
                    </tr>
                    <tr>
                        <td class="lisar" listranslate="html~HISCode">HIS对照码</td>
                        <td class="lisal"><input id="txtBTWardHISCode" type="text" name="HISCode" style="width:200px;" class="hisui-validatebox"  maxlength="20"/></td>
                        <td class="lisar" listranslate="html~LocationDR">临床科室</td>
                        <td class="lisal"><input id="txtBTWardLocationDR" type="text" name="LocationDR" style="width:200px;"/></td>
                    </tr>
                    <tr>
                        <td class="lisar" listranslate="html~Sequence">序号</td>
                        <td class="lisal"><input id="txtBTWardSequence" type="text" name="Sequence" style="width:200px;" class="hisui-validatebox"  maxlength="10"/></td>
                        <td class="lisar" listranslate="html~Active">是否激活</td>
                        <td class="lisal"><input id="txtBTWardActive" type="text" name="Active" style="width:200px;" class="hisui-validatebox"  maxlength="1"/></td>
                    </tr>
                    <tr>
                        <td class="lisar" listranslate="html~PhoneNo">PhoneNo</td>
                        <td class="lisal"><input id="txtBTWardPhoneNo" type="text" name="PhoneNo" style="width:200px;" class="hisui-validatebox"  maxlength="20"/></td>
                </table>
                <div region="south" border="fale" style="text-align: center; padding: 5px 0 0;">
                    <a id="btnSaveBTWard" href="#" class="hisui-linkbutton" plain="false" listranslate="html~Save">保存</a>
                    <span class="sp6"></span>
                    <a id="btnCloseBTWard" href="#" class="hisui-linkbutton" plain="false" listranslate="html~Cancel">取消</a>
                </div>
            </form>
        </div>
</body>
</html>


后台示例

import appcode.BaseHttpHandlerNoSession;
import appcode.Helper;
import LIS.Core.Dto.HashParam;
import LIS.Core.Dto.ParamDto;
import LIS.Core.Dto.OutParam;
import LIS.Model.Entity.*;
import LIS.Core.Util.Convert;

import java.util.ArrayList;
import java.util.List;

/**
*由代码生成器生成的后台代码
*/
public class ashBTWard extends BaseHttpHandlerNoSession {

	/**
	 * 保存数据,前台按表的属性名提交
	 * @return 字符串
	 */
	public String SaveBTWard()
    {
		BTWard dto=new BTWard();
		//RowID  
		dto.RowID=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "RowID"), dto.RowID);
		//代码  
		dto.Code=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "Code"), dto.Code);
		//名称  
		dto.CName=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "CName"), dto.CName);
		//HIS对照码  
		dto.HISCode=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "HISCode"), dto.HISCode);
		//临床科室  
		dto.LocationDR=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "LocationDR"), dto.LocationDR);
		//序号  
		dto.Sequence=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "Sequence"), dto.Sequence);
		//是否激活  {1:True,0:False}
		dto.Active=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "Active"), dto.Active);
		//      
		dto.PhoneNo=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "PhoneNo"), dto.PhoneNo);
		OutParam out=new OutParam();
		int ret=0;
		//更新
		if(dto.RowID>0)
		{
			ret=EntityManager().Update(dto,null, out, null, null, null);
		}
		//插入数据
		else
		{
			ret=EntityManager().Save(dto,out);
		}
		if(ret==1)
		{
			return Helper.Success();
		}
		else
		{
			return Helper.Error(out);
		}
    }



	/**
	 * 删除数据,多个RowID以上尖号分割
	 * @return 字符串
	 */
	public String DeleteBTWard()
    {
		String RowIDS=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "RowIDS"), "");
		if(RowIDS.isEmpty())
		{
			return Helper.Error("请传入要删除数据的RowID,多个以^分割!");
		}
		//分割主键
		String [] arr=RowIDS.split("^");
		//创建一个空对象
		BTWard dto=new BTWard();
		//out参数
		OutParam out=new OutParam();
		//循环删除数据
		for(int i=0;i<arr.length;i++)
		{
			HashParam hs=new HashParam();
			hs.Add("RowID",Convert.ToInt32(arr[i]));
			int ret=EntityManager().Remove(dto,hs,out,null,null);
			if(ret!=1)
			{
				return Helper.Error(out);
			}
		}
		return Helper.Success();
	}



	/**
	 * 查询数据,前台按表的属性名提交
	 * @return 字符串
	 */
	public String QryBTWard()
    {
		//预留的取前台参数代码
		//创建一个空对象
		BTWard dto=new BTWard();
		//参数
		List<ParamDto> para=new ArrayList<>();
		//sql连接符号
		List<String> joiner=new ArrayList<>();
		//sql比较符号
		List<String> operators=new ArrayList<>();
		//模糊查询
		String Filter=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "Filter"), "");
		//预留参数
		//RowID  
		String RowID=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "RowID"), "");
		//代码  
		String Code=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "Code"), "");
		//名称  
		String CName=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "CName"), "");
		//HIS对照码  
		String HISCode=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "HISCode"), "");
		//临床科室  
		String LocationDR=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "LocationDR"), "");
		//序号  
		String Sequence=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "Sequence"), "");
		//是否激活  {1:True,0:False}
		String Active=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "Active"), "");
		//      
		String PhoneNo=Helper.ValidParam(LIS.Core.MultiPlatform.LISContext.GetRequest(Request, "PhoneNo"), "");
		//模糊查询
		if(!Filter.isEmpty())
		{
			ParamDto p=null;
			//代码  
			p=new ParamDto();
			p.Key="Code";
			p.Value="%"+Filter+"%";
			para.add(p);
			joiner.add("or");
			operators.add("like");
			//名称  
			p=new ParamDto();
			p.Key="CName";
			p.Value="%"+Filter+"%";
			para.add(p);
			joiner.add("or");
			operators.add("like");
			//HIS对照码  
			p=new ParamDto();
			p.Key="HISCode";
			p.Value="%"+Filter+"%";
			para.add(p);
			joiner.add("or");
			operators.add("like");
			//      
			p=new ParamDto();
			p.Key="PhoneNo";
			p.Value="%"+Filter+"%";
			para.add(p);
			joiner.add("or");
			operators.add("like");
		}
		//调用查询
		String json=EntityManager().QueryAllWithFK(dto,para,"",true,-1,-1,"",joiner,operators);
		return json;
	}


}

实体示例

package LIS.Model.Entity;
import LIS.Core.CustomAttributes.*;
/**
*[功能描述:本代码由LIS内部代码生成工具生成,请不要手动修改,如要修改,请写修改变更记录]
*[创建者:LIS.Entity生成器]
*/
@UniqueAttribute(ColNames = "RowID")
@TableAttribute(Name="dbo.BT_Ward")
public class BTWard
{
	/**
	* RowID  
	*/
	@NotNullAttribute
	@IdAttribute(Name = "RowID")
	@LengthAttribute(MaxLen = 10)
	public int RowID;

	/**
	* 代码  
	*/
	@NotNullAttribute
	@LengthAttribute(MaxLen = 10)
	public String Code;

	/**
	* 名称  
	*/
	@LengthAttribute(MaxLen = 40)
	public String CName;

	/**
	* HIS对照码  
	*/
	@LengthAttribute(MaxLen = 20)
	public String HISCode;

	/**
	* 临床科室  
	*/
	@FrekeyAttribute(Name = "BTLocation", RefColumnName = "RowID", AssociaField = "CName")
	@LengthAttribute(MaxLen = 10)
	public int LocationDR;

	/**
	* 序号  
	*/
	@LengthAttribute(MaxLen = 10)
	public int Sequence;

	/**
	* 是否激活  {1:True,0:False}
	*/
	@LengthAttribute(MaxLen = 1)
	public boolean Active;

	/**
	*       
	*/
	@LengthAttribute(MaxLen = 20)
	public String PhoneNo;

}

生成之后投放网站
在这里插入图片描述

测试效果
在这里插入图片描述

然后发布到Linux,先把Linux上的JDK升级到JDK17,再更新程序

[BEGIN] 2023/11/10 20:40:45
[root@localhost ~]# tar -xzvf graalvm-jdk-17.0.9_linux-x64_bin.tar.gz
tar (child): graalvm-jdk-17.0.9_linux-x64_bin.tar.gz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
[root@localhost ~]# cd /
[root@localhost /]# tar -xzvf graalvm-jdk-17.0.9_linux-x64_bin.tar.gz
graalvm-jdk-17.0.9+11.1/license-information-user-manual.zip
graalvm-jdk-17.0.9+11.1/GRAALVM-README.md
graalvm-jdk-17.0.9+11.1/LICENSE.txt
graalvm-jdk-17.0.9+11.1/bin/gu
graalvm-jdk-17.0.9+11.1/lib/installer/installer.jar
graalvm-jdk-17.0.9+11.1/lib/installer/trufflejson.jar
graalvm-jdk-17.0.9+11.1/lib/installer/components/polyglot/.registry
graalvm-jdk-17.0.9+11.1/lib/installer/installer-ee.jar
graalvm-jdk-17.0.9+11.1/lib/installer/redline-rpm-1.2.10.jar
graalvm-jdk-17.0.9+11.1/lib/installer/slf4j-jdk4-1.7.30.jar
graalvm-jdk-17.0.9+11.1/lib/installer/slf4j-api-1.7.30.jar
graalvm-jdk-17.0.9+11.1/lib/installer/apache-commons-compress-1.21.jar
graalvm-jdk-17.0.9+11.1/lib/installer/bcprov-1.69-dist.jar
graalvm-jdk-17.0.9+11.1/lib/installer/bcpg-1.69-dist.jar
graalvm-jdk-17.0.9+11.1/lib/installer/gu_uln_key.asc
graalvm-jdk-17.0.9+11.1/lib/installer/components/licenses/.registry
graalvm-jdk-17.0.9+11.1/lib/installer/bin/gu
graalvm-jdk-17.0.9+11.1/lib/installer/components/org.graalvm.component
graalvm-jdk-17.0.9+11.1/lib/installer/components/org.graalvm.native-image.component
graalvm-jdk-17.0.9+11.1/bin/native-image-inspect
graalvm-jdk-17.0.9+11.1/bin/native-image
graalvm-jdk-17.0.9+11.1/bin/native-image-configure
graalvm-jdk-17.0.9+11.1/bin/polyglot
graalvm-jdk-17.0.9+11.1/bin/rebuild-images
graalvm-jdk-17.0.9+11.1/jmods/java.base.jmod
graalvm-jdk-17.0.9+11.1/languages/nfi-libffi/truffle-nfi-libffi.jar
graalvm-jdk-17.0.9+11.1/languages/nfi/builder/clibraries-libffi/libffi.a
graalvm-jdk-17.0.9+11.1/languages/nfi/builder/clibraries-libffi/include/ffi.h
graalvm-jdk-17.0.9+11.1/languages/nfi/builder/clibraries-libffi/include/ffitarget.h
graalvm-jdk-17.0.9+11.1/languages/nfi/builder/clibraries-libffi/include/svm_libffi.h
graalvm-jdk-17.0.9+11.1/languages/nfi/builder/clibraries-libffi/include/trufflenfi.h
graalvm-jdk-17.0.9+11.1/languages/nfi/builder/clibraries-none/.empty.h
graalvm-jdk-17.0.9+11.1/languages/nfi/builder/svm-none.jar
graalvm-jdk-17.0.9+11.1/languages/nfi/native-image.properties
graalvm-jdk-17.0.9+11.1/languages/nfi/truffle-nfi-none.jar
graalvm-jdk-17.0.9+11.1/languages/nfi/native-image-resources.filelist
graalvm-jdk-17.0.9+11.1/languages/nfi/truffle-nfi.jar
graalvm-jdk-17.0.9+11.1/languages/nfi/include/trufflenfi.h
graalvm-jdk-17.0.9+11.1/languages/nfi/builder/svm-libffi.jar
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libattach.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libawt.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libawt_headless.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libawt_xawt.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libdt_socket.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libextnet.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libfdlibm.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libfontmanager.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libinstrument.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libj2gss.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libj2pcsc.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libj2pkcs11.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjaas.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjava.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjavajpeg.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjawt.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjdwp.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjimage.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjli.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjpackageapplauncher.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjpackageapplauncheraux.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjsig.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjsound.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libjsvml.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/liblcms.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libmanagement.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libmanagement_agent.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libmanagement_ext.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libmlib_image.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libnet.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libnio.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libprefs.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/librmi.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libsaproc.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libsctp.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libsplashscreen.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libsyslookup.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libverify.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/glibc/libzip.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libattach.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libawt.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libawt_headless.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libawt_xawt.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libdt_socket.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libextnet.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libfdlibm.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libfontmanager.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libinstrument.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libj2gss.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libj2pcsc.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libj2pkcs11.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjaas.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjava.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjavajpeg.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjawt.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjdwp.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjimage.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjli.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjpackageapplauncher.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjpackageapplauncheraux.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjsig.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjsound.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libjsvml.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/liblcms.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libmanagement.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libmanagement_agent.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libmanagement_ext.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libmlib_image.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libnet.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libnio.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libprefs.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/librmi.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libsaproc.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libsctp.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libsplashscreen.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libsyslookup.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libverify.a
graalvm-jdk-17.0.9+11.1/lib/static/linux-amd64/musl/libzip.a
graalvm-jdk-17.0.9+11.1/lib/libtrufflenfi.so
graalvm-jdk-17.0.9+11.1/lib/graal/graal-processor.jar
graalvm-jdk-17.0.9+11.1/lib/graalvm/launcher-common.jar
graalvm-jdk-17.0.9+11.1/lib/graalvm/svm-enterprise-configure.jar
graalvm-jdk-17.0.9+11.1/lib/graalvm/jvmti-agent-base.jar
graalvm-jdk-17.0.9+11.1/lib/graalvm/svm-agent.jar
graalvm-jdk-17.0.9+11.1/lib/graalvm/svm-configure.jar
graalvm-jdk-17.0.9+11.1/lib/graalvm/svm-diagnostics-agent.jar
graalvm-jdk-17.0.9+11.1/lib/graalvm/svm-driver.jar
graalvm-jdk-17.0.9+11.1/lib/jvm.cfg
graalvm-jdk-17.0.9+11.1/lib/libjvmcicompiler.so
graalvm-jdk-17.0.9+11.1/lib/libnative-image-agent.so
graalvm-jdk-17.0.9+11.1/lib/libnative-image-diagnostics-agent.so
graalvm-jdk-17.0.9+11.1/lib/polyglot/polyglot-native-api.jar
graalvm-jdk-17.0.9+11.1/lib/polyglot/polyglot_types.h
graalvm-jdk-17.0.9+11.1/lib/polyglot/bin/polyglot
graalvm-jdk-17.0.9+11.1/lib/svm/bin/rebuild-images
graalvm-jdk-17.0.9+11.1/lib/svm/library-support.jar
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/liblibchelper.a
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/include/aarch64cpufeatures.h
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/include/amd64cpufeatures.h
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/include/amd64hotspotcpuinfo.h
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/include/riscv64cpufeatures.h
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/libjvm.a
graalvm-jdk-17.0.9+11.1/lib/svm/builder/lib/libreporterchelper.so
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/liblibchelper.a
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/include/aarch64cpufeatures.h
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/include/amd64cpufeatures.h
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/include/amd64hotspotcpuinfo.h
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/include/riscv64cpufeatures.h
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/libjvm.a
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/libjitdebug.a
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/include/jitdebug.h
graalvm-jdk-17.0.9+11.1/lib/svm/builder/debug/svmhelpers.py
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/libjitdebug.a
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/include/jitdebug.h
graalvm-jdk-17.0.9+11.1/lib/svm/debug/svmhelpers.py
graalvm-jdk-17.0.9+11.1/lib/svm/profile_inference_model/model.onnx
graalvm-jdk-17.0.9+11.1/lib/svm/profile_inference_model/preprocessing.onnx
graalvm-jdk-17.0.9+11.1/lib/svm/profile_inference_model/dataset.config
graalvm-jdk-17.0.9+11.1/lib/svm/adopted_profiles/jdk_profile.iprof
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/libg1gc-cr.a
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/libg1gc-ur.a
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/libg1gc-musl-cr.a
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/libg1gc-musl-ur.a
graalvm-jdk-17.0.9+11.1/lib/svm/builder/clibraries/linux-amd64/include/sharedGCStructs.hpp
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/libg1gc-cr.a
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/libg1gc-ur.a
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/libg1gc-musl-cr.a
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/libg1gc-musl-ur.a
graalvm-jdk-17.0.9+11.1/lib/svm/clibraries/linux-amd64/include/sharedGCStructs.hpp
graalvm-jdk-17.0.9+11.1/lib/svm/graal-microservices.jar
graalvm-jdk-17.0.9+11.1/lib/svm/bin/native-image
graalvm-jdk-17.0.9+11.1/lib/svm/bin/native-image-configure
graalvm-jdk-17.0.9+11.1/lib/svm/builder/svm.jar
graalvm-jdk-17.0.9+11.1/lib/svm/builder/objectfile.jar
graalvm-jdk-17.0.9+11.1/lib/svm/builder/pointsto.jar
graalvm-jdk-17.0.9+11.1/lib/svm/builder/native-image-base.jar
graalvm-jdk-17.0.9+11.1/lib/svm/builder/svm.src.zip
graalvm-jdk-17.0.9+11.1/lib/svm/builder/svm-enterprise.jar
graalvm-jdk-17.0.9+11.1/lib/svm/macros/gu-launcher/native-image.properties
graalvm-jdk-17.0.9+11.1/lib/svm/macros/native-image-agent-library/native-image.properties
graalvm-jdk-17.0.9+11.1/lib/svm/macros/native-image-configure-launcher/native-image.properties
graalvm-jdk-17.0.9+11.1/lib/svm/macros/native-image-diagnostics-agent-library/native-image.properties
graalvm-jdk-17.0.9+11.1/lib/svm/macros/native-image-launcher/native-image.properties
graalvm-jdk-17.0.9+11.1/lib/svm/macros/polyglot-launcher/native-image.properties
graalvm-jdk-17.0.9+11.1/lib/svm/macros/polyglot-library/native-image.properties
graalvm-jdk-17.0.9+11.1/lib/svm/macros/polyglot-library/polynative-libpolyglot-macro.jar
graalvm-jdk-17.0.9+11.1/lib/svm/macros/truffle-language-library/native-image.properties
graalvm-jdk-17.0.9+11.1/lib/svm/macros/truffle/native-image.properties
graalvm-jdk-17.0.9+11.1/lib/truffle/truffle-dsl-processor.jar
graalvm-jdk-17.0.9+11.1/lib/truffle/truffle-tck.jar
graalvm-jdk-17.0.9+11.1/lib/truffle/truffle-api.jar
graalvm-jdk-17.0.9+11.1/lib/truffle/locator.jar
graalvm-jdk-17.0.9+11.1/tools/chromeinspector/chromeinspector.jar
graalvm-jdk-17.0.9+11.1/tools/chromeinspector/native-image.properties
graalvm-jdk-17.0.9+11.1/tools/coverage/truffle-coverage.jar
graalvm-jdk-17.0.9+11.1/tools/coverage/native-image.properties
graalvm-jdk-17.0.9+11.1/tools/dap/dap.jar
graalvm-jdk-17.0.9+11.1/tools/dap/native-image.properties
graalvm-jdk-17.0.9+11.1/tools/insight/insight.jar
graalvm-jdk-17.0.9+11.1/tools/insight/native-image.properties
graalvm-jdk-17.0.9+11.1/tools/insightheap/insight-heap.jar
graalvm-jdk-17.0.9+11.1/tools/insightheap/native-image.properties
graalvm-jdk-17.0.9+11.1/tools/lsp/lsp-api.jar
graalvm-jdk-17.0.9+11.1/tools/lsp/lsp.jar
graalvm-jdk-17.0.9+11.1/tools/lsp/native-image.properties
graalvm-jdk-17.0.9+11.1/tools/profiler/truffle-profiler.jar
graalvm-jdk-17.0.9+11.1/tools/profiler/native-image.properties
graalvm-jdk-17.0.9+11.1/tools/sandbox/graal-sandbox.jar
graalvm-jdk-17.0.9+11.1/tools/sandbox/native-image.properties
graalvm-jdk-17.0.9+11.1/release
graalvm-jdk-17.0.9+11.1/lib/modules
graalvm-jdk-17.0.9+11.1/lib/classlist
graalvm-jdk-17.0.9+11.1/lib/jexec
graalvm-jdk-17.0.9+11.1/lib/jrt-fs.jar
graalvm-jdk-17.0.9+11.1/lib/jspawnhelper
graalvm-jdk-17.0.9+11.1/lib/libjava.so
graalvm-jdk-17.0.9+11.1/lib/libjimage.so
graalvm-jdk-17.0.9+11.1/lib/libjli.so
graalvm-jdk-17.0.9+11.1/lib/libjsig.so
graalvm-jdk-17.0.9+11.1/lib/libnet.so
graalvm-jdk-17.0.9+11.1/lib/libnio.so
graalvm-jdk-17.0.9+11.1/lib/libverify.so
graalvm-jdk-17.0.9+11.1/lib/libzip.so
graalvm-jdk-17.0.9+11.1/lib/tzdb.dat
graalvm-jdk-17.0.9+11.1/lib/libawt.so
graalvm-jdk-17.0.9+11.1/lib/libawt_headless.so
graalvm-jdk-17.0.9+11.1/lib/libawt_xawt.so
graalvm-jdk-17.0.9+11.1/lib/libfontmanager.so
graalvm-jdk-17.0.9+11.1/lib/libjavajpeg.so
graalvm-jdk-17.0.9+11.1/lib/libjawt.so
graalvm-jdk-17.0.9+11.1/lib/libjsound.so
graalvm-jdk-17.0.9+11.1/lib/liblcms.so
graalvm-jdk-17.0.9+11.1/lib/libmlib_image.so
graalvm-jdk-17.0.9+11.1/lib/libsplashscreen.so
graalvm-jdk-17.0.9+11.1/lib/psfont.properties.ja
graalvm-jdk-17.0.9+11.1/lib/psfontj2d.properties
graalvm-jdk-17.0.9+11.1/lib/libinstrument.so
graalvm-jdk-17.0.9+11.1/lib/libmanagement.so
graalvm-jdk-17.0.9+11.1/lib/libprefs.so
graalvm-jdk-17.0.9+11.1/lib/librmi.so
graalvm-jdk-17.0.9+11.1/lib/libj2gss.so
graalvm-jdk-17.0.9+11.1/lib/libj2pcsc.so
graalvm-jdk-17.0.9+11.1/lib/libattach.so
graalvm-jdk-17.0.9+11.1/lib/ct.sym
graalvm-jdk-17.0.9+11.1/lib/libj2pkcs11.so
graalvm-jdk-17.0.9+11.1/lib/libsaproc.so
graalvm-jdk-17.0.9+11.1/lib/libsyslookup.so
graalvm-jdk-17.0.9+11.1/lib/libjsvml.so
graalvm-jdk-17.0.9+11.1/lib/libdt_socket.so
graalvm-jdk-17.0.9+11.1/lib/libjdwp.so
graalvm-jdk-17.0.9+11.1/lib/libmanagement_ext.so
graalvm-jdk-17.0.9+11.1/lib/libmanagement_agent.so
graalvm-jdk-17.0.9+11.1/lib/libextnet.so
graalvm-jdk-17.0.9+11.1/lib/libsctp.so
graalvm-jdk-17.0.9+11.1/lib/libjaas.so
graalvm-jdk-17.0.9+11.1/lib/src.zip
graalvm-jdk-17.0.9+11.1/lib/security/blocked.certs
graalvm-jdk-17.0.9+11.1/lib/security/cacerts
graalvm-jdk-17.0.9+11.1/lib/security/default.policy
graalvm-jdk-17.0.9+11.1/lib/security/public_suffix_list.dat
graalvm-jdk-17.0.9+11.1/lib/server/libjsig.so
graalvm-jdk-17.0.9+11.1/lib/server/libjvm.so
graalvm-jdk-17.0.9+11.1/lib/server/classes.jsa
graalvm-jdk-17.0.9+11.1/lib/jfr/default.jfc
graalvm-jdk-17.0.9+11.1/lib/jfr/profile.jfc
graalvm-jdk-17.0.9+11.1/conf/net.properties
graalvm-jdk-17.0.9+11.1/conf/sound.properties
graalvm-jdk-17.0.9+11.1/conf/logging.properties
graalvm-jdk-17.0.9+11.1/conf/sdp/sdp.conf.template
graalvm-jdk-17.0.9+11.1/conf/security/java.policy
graalvm-jdk-17.0.9+11.1/conf/security/java.security
graalvm-jdk-17.0.9+11.1/conf/security/policy/README.txt
graalvm-jdk-17.0.9+11.1/conf/security/policy/limited/default_US_export.policy
graalvm-jdk-17.0.9+11.1/conf/security/policy/limited/default_local.policy
graalvm-jdk-17.0.9+11.1/conf/security/policy/limited/exempt_local.policy
graalvm-jdk-17.0.9+11.1/conf/security/policy/unlimited/default_US_export.policy
graalvm-jdk-17.0.9+11.1/conf/security/policy/unlimited/default_local.policy
graalvm-jdk-17.0.9+11.1/conf/management/jmxremote.access
graalvm-jdk-17.0.9+11.1/conf/management/jmxremote.password.template
graalvm-jdk-17.0.9+11.1/conf/management/management.properties
graalvm-jdk-17.0.9+11.1/include/classfile_constants.h
graalvm-jdk-17.0.9+11.1/include/jni.h
graalvm-jdk-17.0.9+11.1/include/jvmti.h
graalvm-jdk-17.0.9+11.1/include/jvmticmlr.h
graalvm-jdk-17.0.9+11.1/include/jawt.h
graalvm-jdk-17.0.9+11.1/include/jdwpTransport.h
graalvm-jdk-17.0.9+11.1/include/linux/jni_md.h
graalvm-jdk-17.0.9+11.1/include/linux/jawt_md.h
graalvm-jdk-17.0.9+11.1/man/man1/java.1
graalvm-jdk-17.0.9+11.1/man/man1/keytool.1
graalvm-jdk-17.0.9+11.1/man/man1/rmiregistry.1
graalvm-jdk-17.0.9+11.1/man/man1/jrunscript.1
graalvm-jdk-17.0.9+11.1/man/man1/kinit.1
graalvm-jdk-17.0.9+11.1/man/man1/klist.1
graalvm-jdk-17.0.9+11.1/man/man1/ktab.1
graalvm-jdk-17.0.9+11.1/man/man1/jabswitch.1
graalvm-jdk-17.0.9+11.1/man/man1/jaccessinspector.1
graalvm-jdk-17.0.9+11.1/man/man1/jaccesswalker.1
graalvm-jdk-17.0.9+11.1/man/man1/javac.1
graalvm-jdk-17.0.9+11.1/man/man1/serialver.1
graalvm-jdk-17.0.9+11.1/man/man1/jhsdb.1
graalvm-jdk-17.0.9+11.1/man/man1/jar.1
graalvm-jdk-17.0.9+11.1/man/man1/jarsigner.1
graalvm-jdk-17.0.9+11.1/man/man1/javadoc.1
graalvm-jdk-17.0.9+11.1/man/man1/jcmd.1
graalvm-jdk-17.0.9+11.1/man/man1/jinfo.1
graalvm-jdk-17.0.9+11.1/man/man1/jmap.1
graalvm-jdk-17.0.9+11.1/man/man1/jps.1
graalvm-jdk-17.0.9+11.1/man/man1/jstack.1
graalvm-jdk-17.0.9+11.1/man/man1/jstat.1
graalvm-jdk-17.0.9+11.1/man/man1/jconsole.1
graalvm-jdk-17.0.9+11.1/man/man1/javap.1
graalvm-jdk-17.0.9+11.1/man/man1/jdeprscan.1
graalvm-jdk-17.0.9+11.1/man/man1/jdeps.1
graalvm-jdk-17.0.9+11.1/man/man1/jdb.1
graalvm-jdk-17.0.9+11.1/man/man1/jfr.1
graalvm-jdk-17.0.9+11.1/man/man1/jlink.1
graalvm-jdk-17.0.9+11.1/man/man1/jmod.1
graalvm-jdk-17.0.9+11.1/man/man1/jpackage.1
graalvm-jdk-17.0.9+11.1/man/man1/jshell.1
graalvm-jdk-17.0.9+11.1/man/man1/jstatd.1
graalvm-jdk-17.0.9+11.1/bin/java
graalvm-jdk-17.0.9+11.1/bin/keytool
graalvm-jdk-17.0.9+11.1/bin/rmiregistry
graalvm-jdk-17.0.9+11.1/bin/jrunscript
graalvm-jdk-17.0.9+11.1/bin/javac
graalvm-jdk-17.0.9+11.1/bin/serialver
graalvm-jdk-17.0.9+11.1/bin/jhsdb
graalvm-jdk-17.0.9+11.1/bin/jar
graalvm-jdk-17.0.9+11.1/bin/jarsigner
graalvm-jdk-17.0.9+11.1/bin/javadoc
graalvm-jdk-17.0.9+11.1/bin/jcmd
graalvm-jdk-17.0.9+11.1/bin/jinfo
graalvm-jdk-17.0.9+11.1/bin/jmap
graalvm-jdk-17.0.9+11.1/bin/jps
graalvm-jdk-17.0.9+11.1/bin/jstack
graalvm-jdk-17.0.9+11.1/bin/jstat
graalvm-jdk-17.0.9+11.1/bin/jconsole
graalvm-jdk-17.0.9+11.1/bin/javap
graalvm-jdk-17.0.9+11.1/bin/jdeprscan
graalvm-jdk-17.0.9+11.1/bin/jdeps
graalvm-jdk-17.0.9+11.1/bin/jdb
graalvm-jdk-17.0.9+11.1/bin/jfr
graalvm-jdk-17.0.9+11.1/bin/jimage
graalvm-jdk-17.0.9+11.1/bin/jlink
graalvm-jdk-17.0.9+11.1/bin/jmod
graalvm-jdk-17.0.9+11.1/bin/jpackage
graalvm-jdk-17.0.9+11.1/bin/jshell
graalvm-jdk-17.0.9+11.1/bin/jstatd
graalvm-jdk-17.0.9+11.1/legal/java.desktop/mesa3d.md
graalvm-jdk-17.0.9+11.1/legal/java.desktop/lcms.md
graalvm-jdk-17.0.9+11.1/legal/java.desktop/colorimaging.md
graalvm-jdk-17.0.9+11.1/legal/java.desktop/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.desktop/xwd.md
graalvm-jdk-17.0.9+11.1/legal/java.desktop/harfbuzz.md
graalvm-jdk-17.0.9+11.1/legal/java.desktop/jpeg.md
graalvm-jdk-17.0.9+11.1/legal/java.desktop/libpng.md
graalvm-jdk-17.0.9+11.1/legal/java.desktop/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.desktop/giflib.md
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.opt/jopt-simple.md
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.opt/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.opt/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.crypto.cryptoki/pkcs11cryptotoken.md
graalvm-jdk-17.0.9+11.1/legal/jdk.crypto.cryptoki/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.crypto.cryptoki/pkcs11wrapper.md
graalvm-jdk-17.0.9+11.1/legal/jdk.crypto.cryptoki/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.xml/bcel.md
graalvm-jdk-17.0.9+11.1/legal/java.xml/jcup.md
graalvm-jdk-17.0.9+11.1/legal/java.xml/xerces.md
graalvm-jdk-17.0.9+11.1/legal/java.xml/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.xml/xalan.md
graalvm-jdk-17.0.9+11.1/legal/java.xml/dom.md
graalvm-jdk-17.0.9+11.1/legal/java.xml/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.dynalink/dynalink.md
graalvm-jdk-17.0.9+11.1/legal/jdk.dynalink/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.dynalink/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.smartcardio/pcsclite.md
graalvm-jdk-17.0.9+11.1/legal/java.smartcardio/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.smartcardio/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.javadoc/jqueryUI.md
graalvm-jdk-17.0.9+11.1/legal/jdk.javadoc/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.javadoc/jquery.md
graalvm-jdk-17.0.9+11.1/legal/jdk.javadoc/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.base/aes.md
graalvm-jdk-17.0.9+11.1/legal/java.base/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.base/icu.md
graalvm-jdk-17.0.9+11.1/legal/java.base/c-libutl.md
graalvm-jdk-17.0.9+11.1/legal/java.base/cldr.md
graalvm-jdk-17.0.9+11.1/legal/java.base/asm.md
graalvm-jdk-17.0.9+11.1/legal/java.base/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.base/public_suffix.md
graalvm-jdk-17.0.9+11.1/legal/java.base/unicode.md
graalvm-jdk-17.0.9+11.1/legal/java.logging/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.logging/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.management/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.management/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.vm.ci/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.vm.ci/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.compiler/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.compiler/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.instrument/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.instrument/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jfr/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jfr/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.unsupported/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.unsupported/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.datatransfer/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.datatransfer/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.prefs/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.prefs/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.transaction.xa/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.transaction.xa/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.sql/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.sql/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.management/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.management/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.vm.compiler/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.vm.compiler/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.security.sasl/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.security.sasl/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.naming/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.naming/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.rmi/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.rmi/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.management.rmi/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.management.rmi/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.net.http/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.net.http/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.scripting/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.scripting/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.security.jgss/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.security.jgss/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.sql.rowset/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.sql.rowset/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.xml.crypto/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.xml.crypto/santuario.md
graalvm-jdk-17.0.9+11.1/legal/java.xml.crypto/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/java.se/LICENSE
graalvm-jdk-17.0.9+11.1/legal/java.se/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.accessibility/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.accessibility/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.jvmstat/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.jvmstat/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.attach/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.attach/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.charsets/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.charsets/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.compiler/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.compiler/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.crypto.ec/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.crypto.ec/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.ed/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.ed/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.editpad/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.editpad/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.hotspot.agent/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.hotspot.agent/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.httpserver/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.httpserver/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.incubator.foreign/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.incubator.foreign/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.incubator.vector/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.incubator.vector/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.le/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.le/jline.md
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.le/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.vm.compiler.management/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.internal.vm.compiler.management/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jartool/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jartool/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jcmd/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jcmd/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.management.agent/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.management.agent/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jconsole/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jconsole/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jdeps/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jdeps/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jdwp.agent/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jdwp.agent/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jdi/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jdi/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jlink/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jlink/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jpackage/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jpackage/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jshell/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jshell/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jsobject/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jsobject/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.jstatd/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.jstatd/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.localedata/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.localedata/cldr.md
graalvm-jdk-17.0.9+11.1/legal/jdk.localedata/thaidict.md
graalvm-jdk-17.0.9+11.1/legal/jdk.localedata/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.management.jfr/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.management.jfr/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.naming.dns/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.naming.dns/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.naming.rmi/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.naming.rmi/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.net/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.net/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.nio.mapmode/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.nio.mapmode/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.random/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.random/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.sctp/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.sctp/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.security.auth/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.security.auth/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.security.jgss/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.security.jgss/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.unsupported.desktop/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.unsupported.desktop/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.xml.dom/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.xml.dom/COPYRIGHT
graalvm-jdk-17.0.9+11.1/legal/jdk.zipfs/LICENSE
graalvm-jdk-17.0.9+11.1/legal/jdk.zipfs/COPYRIGHT
graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.vm.compiler.management.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.crypto.ec.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.transaction.xa.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jcmd.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.security.sasl.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.security.jgss.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.hotspot.agent.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.management.jfr.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.security.jgss.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.accessibility.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.management.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.net.http.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.management.agent.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.naming.dns.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jlink.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jpackage.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.management.rmi.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jartool.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.net.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jconsole.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.jvmstat.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.naming.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.charsets.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.sql.rowset.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.sctp.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.vm.ci.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.compiler.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.zipfs.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jfr.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.editpad.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.xml.dom.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jsobject.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.unsupported.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.smartcardio.jmod
graalvm-jdk-17.0.9+11.1/jmods/com.oracle.svm.extraimage_enterprise.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.scripting.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.naming.rmi.jmod
graalvm-jdk-17.0.9+11.1/jmods/org.graalvm.sdk.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.random.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.ed.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.attach.jmod
graalvm-jdk-17.0.9+11.1/jmods/org.graalvm.js.scriptengine.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jstatd.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.security.auth.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.sql.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.incubator.vector.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.rmi.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jshell.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.opt.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.datatransfer.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.desktop.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.compiler.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.management.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jdi.jmod
graalvm-jdk-17.0.9+11.1/jmods/com.oracle.graal.graal_enterprise.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.nio.mapmode.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.httpserver.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.xml.crypto.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.javadoc.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.dynalink.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.localedata.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.vm.compiler.jmod
graalvm-jdk-17.0.9+11.1/jmods/org.graalvm.locator.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.vm.compiler.truffle.jfr.jmod
graalvm-jdk-17.0.9+11.1/jmods/org.graalvm.truffle.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.prefs.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.internal.le.jmod
graalvm-jdk-17.0.9+11.1/jmods/org.graalvm.extraimage.builder.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.xml.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.instrument.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jdwp.agent.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.crypto.cryptoki.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.se.jmod
graalvm-jdk-17.0.9+11.1/jmods/java.logging.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.jdeps.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.incubator.foreign.jmod
graalvm-jdk-17.0.9+11.1/jmods/jdk.unsupported.desktop.jmod
[root@localhost /]# mkdir jdk17
[root@localhost /]# cp -rf /graalvm-jdk-17.0.9+11.1/* /jdk17
[root@localhost /]# vim /etc/profile
-bash: vim: command not found
[root@localhost /]# vi /etc/profile
[root@localhost /]# 
[root@localhost /]# 
[root@localhost /]# cat /etc/profile
# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

pathmunge () {
    case ":${PATH}:" in
        *:"$1":*)
            ;;
        *)
            if [ "$2" = "after" ] ; then
                PATH=$PATH:$1
            else
                PATH=$1:$PATH
            fi
    esac
}


if [ -x /usr/bin/id ]; then
    if [ -z "$EUID" ]; then
        # ksh workaround
        EUID=`/usr/bin/id -u`
        UID=`/usr/bin/id -ru`
    fi
    USER="`/usr/bin/id -un`"
    LOGNAME=$USER
    MAIL="/var/spool/mail/$USER"
fi

# Path manipulation
if [ "$EUID" = "0" ]; then
    pathmunge /usr/sbin
    pathmunge /usr/local/sbin
else
    pathmunge /usr/local/sbin after
    pathmunge /usr/sbin after
fi

HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
    export HISTCONTROL=ignoreboth
else
    export HISTCONTROL=ignoredups
fi

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask 002
else
    umask 022
fi

for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then 
            . "$i"
        else
            . "$i" >/dev/null
        fi
    fi
done

unset i
unset -f pathmunge

export PGHOME=/usr/local/postgresql
export PGDATA=/data/pgdata/data
export PGLIB=/usr/local/postgresql/lib
export LC_ALL=en_US.UTF8
export LANG=en_US.UTF8
PATH=/usr/local/postgres/bin:$PATH
export PATH
export PATH=$PATH:/cmake-3.27.0-linux-x86_64/bin
source /opt/rh/devtoolset-9/enable
export JAVA_HOME=/jdk17
export PATH=$PATH:$JAVA_HOME/bin
[root@localhost /]# source /etc/profile
[root@localhost /]# java -version
java version "17.0.9" 2023-10-17 LTS
Java(TM) SE Runtime Environment Oracle GraalVM 17.0.9+11.1 (build 17.0.9+11-LTS-jvmci-23.0-b21)
Java HotSpot(TM) 64-Bit Server VM Oracle GraalVM 17.0.9+11.1 (build 17.0.9+11-LTS-jvmci-23.0-b21, mixed mode, sharing)
[root@localhost /]# bash /WebSrc/bin/startup.sh
Cannot find /WebSrc/bin/catalina.sh
The file is absent or does not have execute permission
This file is needed to run this program
[root@localhost /]# chmod +x /WebSrc/bin/startup.sh
[root@localhost /]# chmod +x /WebSrc/bin/shutdown.sh
[root@localhost /]# chmod +x /WebSrc/bin/catalina.sh
[root@localhost /]# chmod -R +777 /WebSrc
[root@localhost /]# bash /WebSrc/bin/startup.sh
Using CATALINA_BASE:   /WebSrc
Using CATALINA_HOME:   /WebSrc
Using CATALINA_TMPDIR: /WebSrc/temp
Using JRE_HOME:        /jdk17
Using CLASSPATH:       /WebSrc/bin/bootstrap.jar:/WebSrc/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

在这里插入图片描述

测试
在这里插入图片描述

log4j写的日志
在这里插入图片描述
脚本化的体现
在这里插入图片描述

至此,框架开始成体系,借助了一下现有静态资源测试,谁识货就卖给谁,包括我自己。不要给我谈什么spring,十年前我刚出来就是spring的狂热粉丝,极力推荐spring的人,当时和领导爬山我还各种给他介绍spring,ioc,aop这些。后面实践证明对服务型系统根本用不上,spring不可谓不精美,但是太庞大,适合产品型软件。虽然不用spring,但是容器解耦的理念框架还是离不开,我还是实现了微型容器供系统使用。也不要吹什么微服务,你能有多微,有我这每个脚本改了立马生效微吗?也不要提什么云、容器,发布而已。没有华丽的api文档,没有高大上的PPT介绍,有的只是朴实无华结构和api,和为开发便捷性和低成本的考虑。如果谁和我的目标契合,留言联系我。反互联网常规套路,在服务型软件行业取得优势。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/129201.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

创建一个事务级临时表或者会话级临时表继续测试,在什么情况下临时表里的数据会消失

目录 一、测试事务级临时表 1、创建事务级临时表 2、插入测试数据 3、查看表中的数据 4、提交事务 5、再次查看表中数据 二、测试会话级临时表 1、创建会话级临时表 2、插入测试数据 3、查看表中的数据 4、提交事务再次查看数据 5、关闭当前会话 6、再次进入数据库…

项目管理之如何出道(下)

前言 是谁用烛火照亮整个中国&#xff1f;是一伙伙行走在高压线上的电力工人&#xff1b; 是谁用水枪保护千家万户&#xff1f;是一组组穿梭于大街小巷的消防队伍&#xff1b; 是谁用身体捍卫国防边境&#xff1f;是一队队跋涉在高山深林的可爱战士。 那么作为IT业界的我们&…

GPIO实验:ARM汇编代码实现LED灯亮灭控制

GPIO实验&#xff1a;ARM汇编代码实现LED灯亮灭控制 一、 汇编工程模板Makefile分析 NAMEasm-led #指定编译的源文件名字 CROSS_COMPILE arm-linux-gnueabihf- #指定交叉编译工具链前缀CC $(CROSS_COMPILE)gcc #指定gcc名字LD $(CROSS_COMPILE)ld #指定链接器名字…

“第六十五天”

固态硬盘&#xff1a;SSD 原理&#xff1a;基于闪存技术Flash Memory &#xff0c;属于电可擦除ROM&#xff0c;即EEPROM&#xff1b; 由闪存翻译层和存储介质组成&#xff1b;闪存翻译层负责翻译逻辑块号&#xff0c;找到对应页&#xff0c;存储介质是由多个闪存芯片构成的&…

Pycharm常用快捷键和替换正则表达式

原生快捷键的使用&#xff1a; 1.CtrlF&#xff1a;查找 2.CtrlZ&#xff1a;返回上一步 3.Alt 鼠标左键选择&#xff1a;多行同时编辑&#xff08;上、下、左、右键能够移动光标&#xff09; 按住Ctrl,左键点击&#xff0c;定位光标 编辑过程 URL常用的替换正则表达式&am…

阿里云99元的主机到底怎么样?

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 在云栖大会上&#xff0c;阿里云推出了一款绝对超级超值的99元云服务器&#xff0c;并号称是11月销量王。什么?云栖大会11月2号结束的&#xff0c;你就号称11月销量王&#xff0c;这是未卜先知啊。…

【算法 | 数论 No.1】AcWing1246. 等差数列

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【AcWing算法提高学习专栏】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&a…

【异常----finally和自定义异常】

文章目录 finally练习问题 异常的处理流程【异常处理流程总结】自定义异常类 finally 有些特定的代码&#xff0c;不论程序是否发生异常&#xff0c;都需要执行&#xff0c;比如程序中打开的资源&#xff1a;在程序正常或者异常退出时&#xff0c;必须要对资源进进行回收。另外…

2023.11.10联测总结

T 1 T1 T1求的是有多少个区间的异或和是 k k k的因子&#xff0c; n , k ≤ 1 0 5 n,k \leq 10^5 n,k≤105。 这道题用前缀和维护一下&#xff0c;暴力枚举所有区间就有 80 80 80分。 有一瞬间想过枚举因数&#xff0c;但是脑抽以为要 O ( n ) \mathcal O(n) O(n)枚举&#x…

计算机技术专业CSIT883系统分析与项目管理介绍

文章目录 前言一、学科学习成果二、使用步骤最低出勤要求 前言 本课程介绍了信息系统开发中的技术和技术&#xff0c;以及与管理信息技术项目的任务相关的方法和过程。 它研究了系统分析师、客户和用户在系统开发生命周期中的互补角色。 它涵盖了引出系统需求的不同事实调查技…

Java进阶API第二章

Java进阶API第二章 一. 抛出企业问题&#xff0c;脱离main测试&#xff0c;模块化编程 1.学校里如何测试的 //学校教的测试方法 public static void main(String[] args) {//2.本地测试//3.调用函数//4.看输出&#xff0c;查看结果是否符合预期//5.预期结果和测试结果是通过人工…

CSS 文字溢出省略号显示

1. 单行文本溢出显示省略号 需要满足三个条件&#xff0c;添加对应的代码&#xff1a; &#xff08;1&#xff09;先强制一行内显示文本&#xff1b; &#xff08;2&#xff09;超出的部分隐藏&#xff1b; &#xff08;3&#xff09;文字用省略号来替代省略的部分&#xf…

创建两个简单表A,B 。AB表有相关联的列。并在关联列上创建索引

目录 一、创建两个简单表&#xff0c;并进行外键关联 1、创建表A 2、创建表B&#xff0c;并且关联表A 二、在关联列上创建索引 三、检查是否成功 一、创建两个简单表&#xff0c;并进行外键关联 1、创建表A CREATE TABLE A (id NUMBER PRIMARY KEY,name VARCHAR2(50),d…

3.5、Linux:命令行git的使用

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 在Linux Centos7.6下安装git yum -y install git 注册一个gitee账号 进去注册就好&#xff0c;记住自己的用户名和密码。 创建一个仓库 点击复制&#xff0c;接着就可以在Linux上使用了 git clone git clone 刚才复制的地…

物联网AI MicroPython学习之语法 ustruct 打包和解压原始数据类型

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; ustruct 介绍 ustruct提供打包和解压原始数据类型的功能。 默认情况下&#xff0c;C类型以机器的本机格式和字节顺序表示&#xff0c;并在必要时通过跳过填充字节来正确对齐&#xff08;根据C编译器使用的规…

generic webhook trigger 插件

generic webhook trigger 插件 通用 webhook 通过curl 请求触发流水线 rootubuntu20:~/luohuiwen/spring-boot-helloWorld# openssl rand -base64 32 QNJvWjUiNvNhQ4bKleI/5h2iZTKjSMREAvSJRvcM0 curl -X POST -H "Content-Type: application/json" -d { "ref…

C++:关联式容器map的使用

1、map的简介 map是关联容器&#xff0c;它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元素。 在map中&#xff0c;键值key通常用于排序和惟一地标识元素&#xff0c;而值value中存储与此键值key关联的内容。键值key和值value的类型可能不同&#xff0c;并…

操作系统·处理机调度死锁

3.1 处理机调度概述 3.1.1 处理机调度概述 高级调度 (High level Scheduling)决定把外存上哪些作业调入内存、创建进程、分配资源。高级调度又称作业调度、长程调度或宏观调度。只在批处理系统中有高级调度。 中级调度 (Middle level Scheduling)完成进程的部分或全部在内、…

K8S容器持续Terminating无法正常关闭(sider-car容器异常,微服务容器正常)

问题 K8S上出现大量持续terminating的Pod&#xff0c;无法通过常规命令删除。需要编写脚本批量强制删除持续temminating的Pod&#xff1a;contribution-xxxxxxx。 解决 获取terminating状态的pod名称的命令&#xff1a; # 获取media命名空间下&#xff0c;名称带contributi…

短信登录实现(黑马点评为例)

文章目录 前言一、隐藏用户敏感信息二、短信验证登录、注册1.流程2.代码3.使用redis优化解决代码 二、登录拦截&#xff08;校验&#xff09;1.流程2.代码 总结 前言 短信登录核心知识 首先黑马点评这个短信登录是一伪验证&#xff0c;即后台调用工具类随机生成六位数字。 1.R…
最新文章