form表单数据转换为Object对象.docx

上传人:b****5 文档编号:28411542 上传时间:2023-07-13 格式:DOCX 页数:29 大小:21.49KB
下载 相关 举报
form表单数据转换为Object对象.docx_第1页
第1页 / 共29页
form表单数据转换为Object对象.docx_第2页
第2页 / 共29页
form表单数据转换为Object对象.docx_第3页
第3页 / 共29页
form表单数据转换为Object对象.docx_第4页
第4页 / 共29页
form表单数据转换为Object对象.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

form表单数据转换为Object对象.docx

《form表单数据转换为Object对象.docx》由会员分享,可在线阅读,更多相关《form表单数据转换为Object对象.docx(29页珍藏版)》请在冰豆网上搜索。

form表单数据转换为Object对象.docx

form表单数据转换为Object对象

form表单数据转换为Object对象,Git代码托管推送时文件忽略规则,golang连接mysql数据库,golang面向对象编程struct

Golang实现的线程安全的队列,正则表达式网页解析,golang实现的3DES加密解密文件的命令行程序,随机字符串生成函数(数字、大小写字母,整数最大值函数,Groovy执行系统命令获取本机名字,Groovy中利用AntBuilder拷贝文件[Groovy],grunt安装编译bootstrap

[代码][Java]代码

packagecanghailan;

importcanghailan.util.Fields;

importcanghailan.util.Methods;

importcanghailan.util.benchmark.BenchmarkCase;

importcanghailan.util.benchmark.SimpleBenchmark;

importcanghailan.util.benchmark.SimpleBenchmarkReporter;

importorg.apachemons.beanutils.PropertyUtils;

importjava.io.PrintWriter;

importjava.lang.invoke.MethodHandle;

importjava.lang.invoke.MethodHandles;

importjava.lang.invoke.MethodType;

importjava.lang.reflect.Method;

//Delphi源码分析之System.DateUtilsStart/Endfu

//Delphi根据Excel列总数返回结束列列名

//DelphiMySQL数据库操作类

/**

*@authorcanghailan2012-01-1322:

50

*/

publicclassReflectBenchmark{

publicstaticvoidmain(String[]args)throwsThrowable{

SimpleBenchmarkbenchmark=newSimpleBenchmark("ReflectToolBenchmark");

SimpleBenchmarkReporterreporter=newSimpleBenchmarkReporter(newPrintWriter(System.out));

finalUseruser=newUser("a");

benchmark.addBenchmarkCase(newBenchmarkCase(){

@Override

publicStringgetName(){

return"user.getName()";

}

@Override

publicvoidrun()throwsThrowable{

user.getName();

}

});

benchmark.addBenchmarkCase(newBenchmarkCase(){

Methodmethod=User.class.getDeclaredMethod("getName",newClass[0]);

Object[]params=newObject[0];

//Delphi代码样例-S05GK接口发送短信

//C语言随机函数rand实现

@Override

publicStringgetName(){

return"method.invoke(user,params)";

}

@Override

publicvoidrun()throwsThrowable{

method.invoke(user,params);

}

});

benchmark.addBenchmarkCase(newBenchmarkCase(){

MethodHandlemethodHandle=MethodHandles.publicLookup().findVirtual(

User.class,

"getName",

MethodType.methodType(String.class,newClass[0])

);

@Override

publicStringgetName(){

return"methodHandle.invoke(user)";

}

@Override

publicvoidrun()throwsThrowable{

methodHandle.invoke(user);

}

});

benchmark.addBenchmarkCase(newBenchmarkCase(){

@Override

publicStringgetName(){

return"PropertyUtils.getProperty(user,\"name\")";

}

@Override

publicvoidrun()throwsThrowable{

PropertyUtils.getProperty(user,"name");

}

});

benchmark.addBenchmarkCase(newBenchmarkCase(){

@Override

publicStringgetName(){

return"PropertyUtils.getSimpleProperty(user,\"name\")";

}

@Override

publicvoidrun()throwsThrowable{

PropertyUtils.getSimpleProperty(user,"name");

}

});

benchmark.addBenchmarkCase(newBenchmarkCase(){

@Override

publicStringgetName(){

return"Methods.invoke(user,\"getName\")";

}

@Override

publicvoidrun()throwsThrowable{

Methods.invoke(user,"getName");

}

});

benchmark.addBenchmarkCase(newBenchmarkCase(){

@Override

publicStringgetName(){

return"Fields.get(user,\"name\")";

}

@Override

publicvoidrun()throwsThrowable{

Fields.get(user,"name");

}

});

benchmark.addBenchmarkCase(newBenchmarkCase(){

@Override

publicStringgetName(){

return"Fields.directGet(user,\"name\")";

}

@Override

publicvoidrun()throwsThrowable{

Fields.directGet(user,"name");

}

});

reporter.report(benchmark,benchmark.warmUpAndRun(12000000));

System.exit(0);

}

publicstaticclassUser{

privateStringname;

publicUser(Stringname){

this.name=name;

}

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

}

}

[代码]~/.vimrc

"设置Vim字符集【enc】

setencoding=utf-8

"不要备份文件,使用backup备份文件(原文件加~后缀)

"setnobackup

"不生成.swap文件

"setnoswapfile

"搜索结果高亮【hls】

sethlsearch

"启用类似Emacs的增量(incremental)搜索,搜索与输入同时进行【is】

setincsearch

"搜索内容不区分大小写【ic】

setignorecase

"智能匹配,即小写全匹配,大小写混合则严格匹配【scs】

setsmartcase

"mouse=a启动所有模式,会屏蔽鼠标的右键功能;

"mouse=v让Vim在可视化模式下也可以使用右键粘贴

setmouse=v

"显示行号【nu】

setnumber

"显示光标所在列号【ru】

setruler

"高亮当前行【cul】

setcursorline

"显示匹配的括号【sm】

setshowmatch

"不显示响铃【noeb】

setnoerrorbells

"可视化铃声【vb】

setvisualbell

"光标移动到buffer的顶部和底部时保持3行距离

setscrolloff=3

"高亮当前列【cuc】

"setcursorcolumn

"启用List模式,用CTRL-I显示制表符,用$显示行结束符

"setlist

"显示当前的模式,FreeBSD下默认不显示【sc】

setshowcmd

"启用自动缩进,和上一行的缩进保持一致【ai】

setautoindent

setsmartindent

"使用C语言的缩进风格【cin】

setcindent

"探测文件类型

filetypeon

"为特定文件类型载入相关缩进文件

filetypeindenton

"设置F6为切换Paste模式的快捷键,便于从其他窗口向Vim中粘贴代码,GUI下的Vim可能无效【pt】

setpastetoggle=

"缩进和(软)制表符使用空格代替【et】

setexpandtab

"设置制表符为4个空格【ts】

settabstop=4

"设置软制表符为4个空格【sts】

setsofttabstop=4

"设置缩进为4个空格【sw】

setshiftwidth=4

"启用语法高亮【syn】

syntaxon

filetypepluginon

filetypeindenton

[文件]dbutils_demo.zip ~ 3MB    (816)

文件不存在或者代码语言不存在

[代码]po类,@Table,@Column,@Transient这三个注解辅助sqlBuilder生成sql

packagepo;

importjava.io.Serializable;

importjava.util.Date;

importdao.mapping.Column;

importdao.mapping.Table;

importdao.mapping.Transient;

/**

*广告信息实体类

*

*@authordixingxing

*@dateJan6,2012

*/

@Table(name="AD")

publicclassAdimplementsSerializable{

privatestaticfinallongserialVersionUID=1L;

privateLongid;

//广告标示

privateStringname;

//广告详情

privateStringdetail;

//显示位置

privateLongposition;

//状态

privateLongstate;

//发布时间

@Column(updatable=false)

privateDatepublishTime;

//发布人

@Column(updatable=false)

privateStringpublishMan;

//修改时间

privateDateupdateTime;

//修改人

privateStringupdateMan;

privateLongproviderId;

//这个属性测试多表查询

@Transient

privateStringproviderName;

publicLonggetProviderId(){

returnproviderId;

}

publicvoidsetProviderId(LongproviderId){

this.providerId=providerId;

}

publicLonggetId(){

returnid;

}

publicvoidsetId(Longid){

this.id=id;

}

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

publicStringgetDetail(){

returndetail;

}

publicvoidsetDetail(Stringdetail){

this.detail=detail;

}

publicLonggetPosition(){

returnposition;

}

publicvoidsetPosition(Longposition){

this.position=position;

}

publicLonggetState(){

returnstate;

}

publicvoidsetState(Longstate){

this.state=state;

}

publicDategetPublishTime(){

returnpublishTime;

}

publicvoidsetPublishTime(DatepublishTime){

this.publishTime=publishTime;

}

publicStringgetPublishMan(){

returnpublishMan;

}

publicvoidsetPublishMan(StringpublishMan){

this.publishMan=publishMan;

}

publicDategetUpdateTime(){

returnupdateTime;

}

publicvoidsetUpdateTime(DateupdateTime){

this.updateTime=updateTime;

}

publicStringgetUpdateMan(){

returnupdateMan;

}

publicvoidsetUpdateMan(StringupdateMan){

this.updateMan=updateMan;

}

publicStringgetProviderName(){

returnproviderName;

}

publicvoidsetProviderName(StringproviderName){

this.providerName=providerName;

}

@Override

publicStringtoString(){

StringBuildersb=newStringBuilder();

sb.append("id:

").append(id).append(",").append("name:

").append(name)

.append(",").append("publishMan:

").append(publishMan).append(

",publishTime:

").append(publishTime);

returnsb.toString();

}

}

[代码]根据pojo生成insert,update的sql

packagedao.mapping;

importjava.lang.reflect.Field;

importjava.lang.reflect.Modifier;

importjava.sql.Timestamp;

importjava.util.Date;

importorg.apachemons.lang.StringUtils;

importorg.apache.log4j.Logger;

importpo.Ad;

/**

*根据pojo构造SqlHolder

*

*@seeSqlHolder

*@authordixingxing

*@dateFeb6,2012

*/

publicclassSqlBuilder{

privatefinalstaticLoggerlogger=Logger.getLogger(SqlBuilder.class);

/**

*构造insert

*

*@parampo

*@return

*/

publicstaticSqlHolderbuildInsert(Objectpo){

SqlHolderholder=newSqlHolder();

Field[]fields=po.getClass().getDeclaredFields();

StringBuildercolumns=newStringBuilder();

StringBuildervalues=newStringBuilder();

for(Fieldf:

fields){

if(isTransient(f)){

continue;

}

holder.addParam(convert(getValue(po,f)));

columns.append(columnName(f)).append(",");

values.append("?

").append(",");

}

deleteLastComma(columns);

deleteLastComma(values);

StringBuildersql=newStringBuilder();

sql.append("INSERTINTO").append(tableName(po)).append("(");

sql.append(columns).append(")");

sql.append("VALUES(").append(values).append(")");

holder.setSql(sql.toString());

logger.debug(holder);

returnholder;

}

/**

*构造update

*

*@paramobj

*@paramwhere

*不允许为空

*@return

*/

publicstaticSqlHolderbuildUpdate(Objectobj,Stringwhere){

SqlHolderholder=newSqlHolder();

Field[]fields=obj.getClass().getDeclaredFields();

StringBuildersql=newStringBuilder();

sql.append("UPDATE").append(tableName(obj)).append("SET");

for(Fieldf:

fields){

if(isTransient(f)||!

isUpdatable(f)){

continue;

}

holder.addParam(convert(getValue(obj,f)));

sql.append(columnName(f)).append("=?

").append(",");

}

deleteLastComma(sql);

sql.append("WHERE");

sql.append(StringUtils.isNotBlank(where)?

where:

"1=2");

holder.setSql(sql.toString());

logger.debug(holder);

returnholder;

}

/**

*删除最后那个“,”

*

*@paramsb

*/

privatestaticvoiddeleteLastComma(StringBuildersb){

if(sb.lastIndexOf(",")==sb.length()-1){

sb.deleteCharAt(sb.length()-1);

}

}

/**

*获取列名
MyBeanProcessor中定义了查询时从数据库字段转->po属性的规则,

*此处po属性->数据库字段的规则和前面保持一致

*

*@seeMyBeanProcessor#prop2column(String)

*@paramf

*@return

*/

privatestaticStringcolumnName(Fieldf){

returnMyBeanProcessor.prop2column(f.getName());

}

/**

*获取对象中某个属性的值(没有通过getter方法获取)

*

*@paramobj

*@paramf

*@return

*/

pr

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1