当前位置: 首页 > news >正文

玉林建设工程信息网站视频制作软件哪个好用

玉林建设工程信息网站,视频制作软件哪个好用,免费外链工具,国外室内设计专业大学排名主要内容#xff1a;升级成mybatis-plus#xff0c;代码生成也是mybatis-plus版本 跟着我一步一步来#xff0c;就可完成升级#xff01; 检查#xff1a;启动程序#xff0c;先保证若依能启动 第一步#xff1a;添加依赖 这里需要在两个地方添加#xff0c;一个是最…主要内容升级成mybatis-plus代码生成也是mybatis-plus版本 跟着我一步一步来就可完成升级 检查启动程序先保证若依能启动 第一步添加依赖 这里需要在两个地方添加一个是最外面的父工程的pom.xml一个是ruoyi-common的pom.xml。 最外面的父工程的pom.xml 1.添加版本信息 代码 !-- mybatis-plus 版本--mybatis-pluc.version3.4.2/mybatis-pluc.version 2.添加mybatis-plus依赖 代码 !-- mybatis-plus 增强CRUD -- dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.4.2/version /dependency ruoyi-common的pom.xml 1.直接继承父工程的依赖 第一步验证 admin的包中的application.yml文件有mybatis-plus的提示说明依赖弄好啦 第二步修改application.yml文件 1.删除旧的mybatis配置 2.写入新配置 代码 # MyBatis Plus配置 mybatis-plus:# 搜索指定包别名 根据自己的项目来typeAliasesPackage: com.rchuing.sis.**.domain # 配置mapper的扫描找到所有的mapper.xml映射文件mapperLocations: classpath*:mapper/**/*Mapper.xml# 加载全局的配置文件configLocation: classpath:mybatis/mybatis-config.xmlglobal-config:enable-sql-runner: truedb-config:id-type: auto 第三步重写mybatis配置文件 1.在framework中找到MybatisConfig文件然后删除。 2.在刚删除的文件夹下新建一个MybatisPlus的java文件 复制已下内容到java文件中 /*** Mybatis Plus 配置** author ruoyi*/ EnableTransactionManagement(proxyTargetClass true) Configuration public class MybatisPlusConfig {Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor(){MybatisPlusInterceptor interceptor new MybatisPlusInterceptor();// 分页插件interceptor.addInnerInterceptor(paginationInnerInterceptor());// 乐观锁插件interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor());// 阻断插件interceptor.addInnerInterceptor(blockAttackInnerInterceptor());return interceptor;}/*** 分页插件自动识别数据库类型 https://baomidou.com/guide/interceptor-pagination.html*/public PaginationInnerInterceptor paginationInnerInterceptor(){PaginationInnerInterceptor paginationInnerInterceptor new PaginationInnerInterceptor();// 设置数据库类型为mysqlpaginationInnerInterceptor.setDbType(DbType.MYSQL);// 设置最大单页限制数量默认 500 条-1 不受限制paginationInnerInterceptor.setMaxLimit(-1L);return paginationInnerInterceptor;}/*** 乐观锁插件 https://baomidou.com/guide/interceptor-optimistic-locker.html*/public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor(){return new OptimisticLockerInnerInterceptor();}/*** 如果是对全表的删除或更新操作就会终止该操作 https://baomidou.com/guide/interceptor-block-attack.html*/public BlockAttackInnerInterceptor blockAttackInnerInterceptor(){return new BlockAttackInnerInterceptor();} } 如图 到这里Mybatis-plus就升级完成了。但代码生成里面还是以前mybatis的这里也需要升级一下方便代码生成。 第四步:把代码生成修改为mybatis-plus版本 1.在generator找到vm中的java文件夹 2.修改里面内容这里直接上代码了找到对应的直接复制粘贴就行。 2.1:domain.java.vm package ${packageName}.domain;#foreach ($import in $importList) import ${import}; #end import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.rchuing.sis.common.annotation.Excel; #if($table.crud || $table.sub) import com.rchuing.sis.common.core.domain.BaseEntity; #elseif($table.tree) import com.fenghuang.common.core.domain.TreeEntity; #end/*** ${functionName}对象 ${tableName}** author ${author}* date ${datetime}*/ #if($table.crud || $table.sub)#set($EntityBaseEntity) #elseif($table.tree)#set($EntityTreeEntity) #end TableName(resultMap ${packageName}.mapper.${ClassName}Mapper.${ClassName}Result) public class ${ClassName} extends ${Entity}{ private static final long serialVersionUID 1L;#foreach ($column in $columns)#if(!$table.isSuperColumn($column.javaField))/** $column.columnComment */#if($column.list)#set($parentheseIndex$column.columnComment.indexOf())#if($parentheseIndex ! -1)#set($comment$column.columnComment.substring(0, $parentheseIndex))#else#set($comment$column.columnComment)#end#if($parentheseIndex ! -1)Excel(name ${comment}, readConverterExp $column.readConverterExp())#elseif($column.javaType Date)JsonFormat(pattern yyyy-MM-dd)Excel(name ${comment}, width 30, dateFormat yyyy-MM-dd)#elseExcel(name ${comment})#end#end#if($column.isPk 1)TableId(value $column.columnName,type IdType.AUTO)#endprivate $column.javaType $column.javaField;#end #end #if($table.sub) /** $table.subTable.functionName信息 */ private List${subClassName} ${subclassName}List;#end #foreach ($column in $columns)#if(!$table.isSuperColumn($column.javaField))#if($column.javaField.length() 2 $column.javaField.substring(1,2).matches([A-Z]))#set($AttrName$column.javaField)#else#set($AttrName$column.javaField.substring(0,1).toUpperCase() ${column.javaField.substring(1)})#endpublic void set${AttrName}($column.javaType $column.javaField){this.$column.javaField $column.javaField;}public $column.javaType get${AttrName}(){return $column.javaField;}#end #end#if($table.sub) public List${subClassName} get${subClassName}List(){return ${subclassName}List;}public void set${subClassName}List(List${subClassName} ${subclassName}List){this.${subclassName}List ${subclassName}List;}#end Override public String toString() {return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)#foreach ($column in $columns)#if($column.javaField.length() 2 $column.javaField.substring(1,2).matches([A-Z]))#set($AttrName$column.javaField)#else#set($AttrName$column.javaField.substring(0,1).toUpperCase() ${column.javaField.substring(1)})#end.append(${column.javaField}, get${AttrName}())#end#if($table.sub).append(${subclassName}List, get${subClassName}List())#end.toString();}}2.2:mapper.java.vm package ${packageName}.mapper;import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import ${packageName}.domain.${ClassName}; #if($table.sub) import ${packageName}.domain.${subClassName}; #end/*** ${functionName}Mapper接口** author ${author}* date ${datetime}*/ public interface ${ClassName}Mapper extends BaseMapper${ClassName} {/*** 查询${functionName}** param ${pkColumn.javaField} ${functionName}主键* return ${functionName}*/public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});/*** 查询${functionName}列表** param ${className} ${functionName}* return ${functionName}集合*/public List${ClassName} select${ClassName}List(${ClassName} ${className});/*** 新增${functionName}** param ${className} ${functionName}* return 结果*/public int insert${ClassName}(${ClassName} ${className});/*** 修改${functionName}** param ${className} ${functionName}* return 结果*/public int update${ClassName}(${ClassName} ${className});/*** 删除${functionName}** param ${pkColumn.javaField} ${functionName}主键* return 结果*/public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});/*** 批量删除${functionName}** param ${pkColumn.javaField}s 需要删除的数据主键集合* return 结果*/public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s); #if($table.sub)/*** 批量删除${subTable.functionName}** param ${pkColumn.javaField}s 需要删除的数据主键集合* return 结果*/public int delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);/*** 批量新增${subTable.functionName}** param ${subclassName}List ${subTable.functionName}列表* return 结果*/public int batch${subClassName}(List${subClassName} ${subclassName}List);/*** 通过${functionName}主键删除${subTable.functionName}信息** param ${pkColumn.javaField} ${functionName}ID* return 结果*/public int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField}); #end }2.3:service.java.vm package ${packageName}.service;import java.util.List; import ${packageName}.domain.${ClassName}; import com.baomidou.mybatisplus.extension.service.IService;/*** ${functionName}Service接口** author ${author}* date ${datetime}*/ public interface I${ClassName}Service extends IService${ClassName} {/*** 查询${functionName}** param ${pkColumn.javaField} ${functionName}主键* return ${functionName}*/public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});/*** 查询${functionName}列表** param ${className} ${functionName}* return ${functionName}集合*/public List${ClassName} select${ClassName}List(${ClassName} ${className});/*** 新增${functionName}** param ${className} ${functionName}* return 结果*/public int insert${ClassName}(${ClassName} ${className});/*** 修改${functionName}** param ${className} ${functionName}* return 结果*/public int update${ClassName}(${ClassName} ${className});/*** 批量删除${functionName}** param ${pkColumn.javaField}s 需要删除的${functionName}主键集合* return 结果*/public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);/*** 删除${functionName}信息** param ${pkColumn.javaField} ${functionName}主键* return 结果*/public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); }2.4:serviceimpl.java.vm package ${packageName}.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import java.util.List; #foreach ($column in $columns) #if($column.javaField createTime || $column.javaField updateTime) import com.rchuing.common.utils.DateUtils; #break #end #end import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; #if($table.sub) import java.util.ArrayList; import com.rchuing.common.utils.StringUtils; import org.springframework.transaction.annotation.Transactional; import ${packageName}.domain.${subClassName}; #end import ${packageName}.mapper.${ClassName}Mapper; import ${packageName}.domain.${ClassName}; import ${packageName}.service.I${ClassName}Service;/*** ${functionName}Service业务层处理** author ${author}* date ${datetime}*/ Service public class ${ClassName}ServiceImpl extends ServiceImpl${ClassName}Mapper, ${ClassName} implements I${ClassName}Service {Autowiredprivate ${ClassName}Mapper ${className}Mapper;/*** 查询${functionName}** param ${pkColumn.javaField} ${functionName}主键* return ${functionName}*/Overridepublic ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) {return ${className}Mapper.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});}/*** 查询${functionName}列表** param ${className} ${functionName}* return ${functionName}*/Overridepublic List${ClassName} select${ClassName}List(${ClassName} ${className}) {return ${className}Mapper.select${ClassName}List(${className});}/*** 新增${functionName}** param ${className} ${functionName}* return 结果*/ #if($table.sub)Transactional #endOverridepublic int insert${ClassName}(${ClassName} ${className}) { #foreach ($column in $columns) #if($column.javaField createTime)${className}.setCreateTime(DateUtils.getNowDate()); #end #end #if($table.sub)int rows ${className}Mapper.insert${ClassName}(${className});insert${subClassName}(${className});return rows; #elsereturn ${className}Mapper.insert${ClassName}(${className}); #end}/*** 修改${functionName}** param ${className} ${functionName}* return 结果*/ #if($table.sub)Transactional #endOverridepublic int update${ClassName}(${ClassName} ${className}) { #foreach ($column in $columns) #if($column.javaField updateTime)${className}.setUpdateTime(DateUtils.getNowDate()); #end #end #if($table.sub)${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}());insert${subClassName}(${className}); #endreturn ${className}Mapper.update${ClassName}(${className});}/*** 批量删除${functionName}** param ${pkColumn.javaField}s 需要删除的${functionName}主键* return 结果*/ #if($table.sub)Transactional #endOverridepublic int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s) { #if($table.sub)${className}Mapper.delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaField}s); #endreturn ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s);}/*** 删除${functionName}信息** param ${pkColumn.javaField} ${functionName}主键* return 结果*/ #if($table.sub)Transactional #endOverridepublic int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) { #if($table.sub)${className}Mapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField}); #endreturn ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});} #if($table.sub)/*** 新增${subTable.functionName}信息** param ${className} ${functionName}对象*/public void insert${subClassName}(${ClassName} ${className}) {List${subClassName} ${subclassName}List ${className}.get${subClassName}List();${pkColumn.javaType} ${pkColumn.javaField} ${className}.get${pkColumn.capJavaField}();if (StringUtils.isNotNull(${subclassName}List)){List${subClassName} list new ArrayList${subClassName}();for (${subClassName} ${subclassName} : ${subclassName}List){${subclassName}.set${subTableFkClassName}(${pkColumn.javaField});list.add(${subclassName});}if (list.size() 0){${className}Mapper.batch${subClassName}(list);}}} #end }2.5:sub-domain.java.vm package ${packageName}.domain;#foreach ($import in $subImportList) import ${import}; #end import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.rchuing.common.annotation.Excel; import com.rchuing.common.core.domain.BaseEntity;/*** ${subTable.functionName}对象 ${subTableName}** author ${author}* date ${datetime}*/ public class ${subClassName} extends BaseEntity {private static final long serialVersionUID 1L;#foreach ($column in $subTable.columns) #if(!$table.isSuperColumn($column.javaField))/** $column.columnComment */ #if($column.list) #set($parentheseIndex$column.columnComment.indexOf()) #if($parentheseIndex ! -1) #set($comment$column.columnComment.substring(0, $parentheseIndex)) #else #set($comment$column.columnComment) #end #if($parentheseIndex ! -1)Excel(name ${comment}, readConverterExp $column.readConverterExp()) #elseif($column.javaType Date)JsonFormat(pattern yyyy-MM-dd)Excel(name ${comment}, width 30, dateFormat yyyy-MM-dd) #elseExcel(name ${comment}) #end #endprivate $column.javaType $column.javaField;#end #end #foreach ($column in $subTable.columns) #if(!$table.isSuperColumn($column.javaField)) #if($column.javaField.length() 2 $column.javaField.substring(1,2).matches([A-Z])) #set($AttrName$column.javaField) #else #set($AttrName$column.javaField.substring(0,1).toUpperCase() ${column.javaField.substring(1)}) #endpublic void set${AttrName}($column.javaType $column.javaField) {this.$column.javaField $column.javaField;}public $column.javaType get${AttrName}() {return $column.javaField;} #end #endOverridepublic String toString() {return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) #foreach ($column in $subTable.columns) #if($column.javaField.length() 2 $column.javaField.substring(1,2).matches([A-Z])) #set($AttrName$column.javaField) #else #set($AttrName$column.javaField.substring(0,1).toUpperCase() ${column.javaField.substring(1)}) #end.append(${column.javaField}, get${AttrName}()) #end.toString();} }到这里就升级完成。 下面进行测试 1. 2. 3.如果看到mybatis的东西说明升级成功 注意  1.这里可能有些包的路径不对把爆红的包删除重新导入就可 2.因为实际项目路径不同这里可能需要手动修改 3.在BaseEntity类中
文章转载自:
http://www.morning.bsqbg.cn.gov.cn.bsqbg.cn
http://www.morning.pjrql.cn.gov.cn.pjrql.cn
http://www.morning.kbntl.cn.gov.cn.kbntl.cn
http://www.morning.kxwsn.cn.gov.cn.kxwsn.cn
http://www.morning.yqrfn.cn.gov.cn.yqrfn.cn
http://www.morning.jcxqc.cn.gov.cn.jcxqc.cn
http://www.morning.qdlnw.cn.gov.cn.qdlnw.cn
http://www.morning.bklkt.cn.gov.cn.bklkt.cn
http://www.morning.ldsgm.cn.gov.cn.ldsgm.cn
http://www.morning.ptqpd.cn.gov.cn.ptqpd.cn
http://www.morning.zztmk.cn.gov.cn.zztmk.cn
http://www.morning.mxbks.cn.gov.cn.mxbks.cn
http://www.morning.qxnlc.cn.gov.cn.qxnlc.cn
http://www.morning.fbzdn.cn.gov.cn.fbzdn.cn
http://www.morning.xdjwh.cn.gov.cn.xdjwh.cn
http://www.morning.kfbth.cn.gov.cn.kfbth.cn
http://www.morning.syfty.cn.gov.cn.syfty.cn
http://www.morning.rlwcs.cn.gov.cn.rlwcs.cn
http://www.morning.dkzrs.cn.gov.cn.dkzrs.cn
http://www.morning.xhwty.cn.gov.cn.xhwty.cn
http://www.morning.csnmd.cn.gov.cn.csnmd.cn
http://www.morning.jjxnp.cn.gov.cn.jjxnp.cn
http://www.morning.wtcyz.cn.gov.cn.wtcyz.cn
http://www.morning.srckl.cn.gov.cn.srckl.cn
http://www.morning.pmdnx.cn.gov.cn.pmdnx.cn
http://www.morning.mdpkf.cn.gov.cn.mdpkf.cn
http://www.morning.cnfjs.cn.gov.cn.cnfjs.cn
http://www.morning.yqlrq.cn.gov.cn.yqlrq.cn
http://www.morning.4r5w91.cn.gov.cn.4r5w91.cn
http://www.morning.yuanshenglan.com.gov.cn.yuanshenglan.com
http://www.morning.pltbd.cn.gov.cn.pltbd.cn
http://www.morning.qzsmz.cn.gov.cn.qzsmz.cn
http://www.morning.tqdqc.cn.gov.cn.tqdqc.cn
http://www.morning.gnlyq.cn.gov.cn.gnlyq.cn
http://www.morning.rhkq.cn.gov.cn.rhkq.cn
http://www.morning.xtqld.cn.gov.cn.xtqld.cn
http://www.morning.rynq.cn.gov.cn.rynq.cn
http://www.morning.pltbd.cn.gov.cn.pltbd.cn
http://www.morning.qbmpb.cn.gov.cn.qbmpb.cn
http://www.morning.glbnc.cn.gov.cn.glbnc.cn
http://www.morning.ywgrr.cn.gov.cn.ywgrr.cn
http://www.morning.hxwrs.cn.gov.cn.hxwrs.cn
http://www.morning.fhtbk.cn.gov.cn.fhtbk.cn
http://www.morning.vvbsxm.cn.gov.cn.vvbsxm.cn
http://www.morning.bpyps.cn.gov.cn.bpyps.cn
http://www.morning.qbmjf.cn.gov.cn.qbmjf.cn
http://www.morning.yxwnn.cn.gov.cn.yxwnn.cn
http://www.morning.wmgjq.cn.gov.cn.wmgjq.cn
http://www.morning.mrfnj.cn.gov.cn.mrfnj.cn
http://www.morning.ygmw.cn.gov.cn.ygmw.cn
http://www.morning.gcbhh.cn.gov.cn.gcbhh.cn
http://www.morning.shxmr.cn.gov.cn.shxmr.cn
http://www.morning.ctwwq.cn.gov.cn.ctwwq.cn
http://www.morning.zhishizf.cn.gov.cn.zhishizf.cn
http://www.morning.qbdsx.cn.gov.cn.qbdsx.cn
http://www.morning.cwgt.cn.gov.cn.cwgt.cn
http://www.morning.lfmwt.cn.gov.cn.lfmwt.cn
http://www.morning.ybhrb.cn.gov.cn.ybhrb.cn
http://www.morning.taojava.cn.gov.cn.taojava.cn
http://www.morning.clbzy.cn.gov.cn.clbzy.cn
http://www.morning.mdjzydr.com.gov.cn.mdjzydr.com
http://www.morning.muzishu.com.gov.cn.muzishu.com
http://www.morning.ldcsw.cn.gov.cn.ldcsw.cn
http://www.morning.czgfn.cn.gov.cn.czgfn.cn
http://www.morning.pbpcj.cn.gov.cn.pbpcj.cn
http://www.morning.hdwjb.cn.gov.cn.hdwjb.cn
http://www.morning.hqgxz.cn.gov.cn.hqgxz.cn
http://www.morning.ldsgm.cn.gov.cn.ldsgm.cn
http://www.morning.kgnnc.cn.gov.cn.kgnnc.cn
http://www.morning.trjr.cn.gov.cn.trjr.cn
http://www.morning.rwzc.cn.gov.cn.rwzc.cn
http://www.morning.pmmrb.cn.gov.cn.pmmrb.cn
http://www.morning.qsmch.cn.gov.cn.qsmch.cn
http://www.morning.hrtfz.cn.gov.cn.hrtfz.cn
http://www.morning.nswcw.cn.gov.cn.nswcw.cn
http://www.morning.ypwlb.cn.gov.cn.ypwlb.cn
http://www.morning.ydxx123.cn.gov.cn.ydxx123.cn
http://www.morning.rkzb.cn.gov.cn.rkzb.cn
http://www.morning.tstwx.cn.gov.cn.tstwx.cn
http://www.morning.bdtpd.cn.gov.cn.bdtpd.cn
http://www.tj-hxxt.cn/news/255969.html

相关文章:

  • wordpress 网站为什么打不开杭州抖音代运营
  • 深圳网站建设公司招聘电话销售扑克直播软件app开发
  • 一个空间2个网站代码徐州vi设计公司
  • 网站建设执招标评分表做 暧视频在线观看网站
  • 如何建设网站方便后期维护把静态图片做成动态图片的软件
  • 不懂网站怎么做平台主要干啥
  • 深圳正规网站建设公司学雷锋做美德少年网站
  • wordpress全站静太化网页拒绝了您的访问
  • 创办一个网站要多少钱编写app
  • 怎么用VS2012建设网站网站开发行业分析
  • wordpress仿站难吗常州网站建设案例
  • PHP网站建设计划书上海购房网官网
  • 地方社区网站 备案福州app外包
  • 带后台管理的网站模板wordpress栏目出现404
  • 晋江企业网站建设动易网站后台编辑器无效问题
  • 个人网站如何备案苏州广告公司招聘
  • 男女性男女直接做的视频网站怎么把别人网站模板下载出来
  • 有哪些网站能够免费找到素材网站开发与维护书
  • 东莞企业网站制wordpress poststatus
  • 互联网网站制作制作网站需要什么知识
  • 怎么用网站做chmwordpress 树状目录
  • 网站后台显示不了网页一般用什么语言编写
  • 高端定制网站开发网站模板设计济南工装定制公司
  • 英文网站建站公司怎么做淘宝优惠券网站
  • 上传的网站打不开川畅咨询 的网络营销怎么做
  • 站长平台怎么添加网站无锡本地模板网站建设
  • 网站写动态新闻有什么好处装修网站怎么建设
  • 网站建设策划ppt做体育赛事网站公司
  • 网站的营销推广方案及预算高端营销网站建设
  • 淘宝客做网站怎么赚钱互联网门户网站建设管理 总结