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

网站 网络营销价值二手车网站开发数据库设计

网站 网络营销价值,二手车网站开发数据库设计,科技成果转化,城市分站seo第1步#xff1a;从大佬的gitee#xff1a;https://gitee.com/canonical-entropy/nop-entropy下载源码#xff0c;进行本地编译#xff0c;具体编译看项目下的readme,想偷懒的可以下载我编译后的jar#xff0c;放到自己的maven仓库 https://pan.baidu.com/s/15qANnrCh5RV…第1步从大佬的giteehttps://gitee.com/canonical-entropy/nop-entropy下载源码进行本地编译具体编译看项目下的readme,想偷懒的可以下载我编译后的jar放到自己的maven仓库 https://pan.baidu.com/s/15qANnrCh5RV-T1CYCDvMdw?pwdkq0q我把代码上传到gitee地址https://gitee.com/a-crud-boy/nop-simple-demonn第2步创建一个maven项目然后添加依赖 parentgroupIdio.github.entropy-cloud/groupIdartifactIdnop-entropy/artifactIdversion2.0.0-SNAPSHOT/version/parentpropertiesmaven.compiler.source11/maven.compiler.sourcemaven.compiler.target11/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependenciesdependencygroupIdio.github.entropy-cloud/groupIdartifactIdnop-spring-web-starter/artifactId/dependency!--h2数据库--dependencygroupIdcom.h2database/groupIdartifactIdh2/artifactIdscoperuntime/scope/dependency!--h2数据库--dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependency/dependencies第3步 添加springboot入口 SpringBootApplication public class NopSpringSimpleApplication {public static void main(String[] args) {SpringApplication.run(NopSpringSimpleApplication.class, args);} }第4步 添加application.yaml文件注意是yaml不是yml nop:debug: trueorm:init-database-schema: truedatasource:driver-class-name: org.h2.Driverjdbc-url: jdbc:h2:./db/demousername: sapassword:第5步 创建类 import com.nop.biz.DemoRequest; import com.nop.biz.DemoResponse; import io.nop.api.core.annotations.biz.BizModel; import io.nop.api.core.annotations.biz.BizMutation; import io.nop.api.core.annotations.biz.BizQuery; import io.nop.api.core.annotations.biz.RequestBean; import io.nop.api.core.annotations.core.Name; import io.nop.api.core.exceptions.NopException;import static com.nop.biz.DemoErrors.ARG_NAME; import static com.nop.biz.DemoErrors.ERR_DEMO_NOT_FOUND;BizModel(Demo) public class DemoBizModel {BizQuerypublic String hello(Name(message) String message) {return Hi, message;}BizMutationpublic DemoResponse testOk(RequestBean DemoRequest request) {DemoResponse ret new DemoResponse();ret.setName(request.getName());ret.setResult(ok);return ret;}BizMutationpublic DemoResponse testError(RequestBean DemoRequest request) {throw new NopException(ERR_DEMO_NOT_FOUND).param(ARG_NAME, request.getName());} } package com.nop.biz.demo;import io.nop.api.core.annotations.biz.BizModel; import io.nop.api.core.annotations.biz.BizMutation; import io.nop.api.core.annotations.biz.BizQuery; import io.nop.api.core.annotations.core.Name; import io.nop.api.core.annotations.graphql.GraphQLReturn; import io.nop.api.core.beans.FilterBeans; import io.nop.api.core.beans.query.QueryBean; import io.nop.core.reflect.bean.BeanTool; import io.nop.dao.api.IDaoProvider; import io.nop.dao.api.IEntityDao; import io.nop.orm.IOrmEntity; import jakarta.inject.Inject;import java.util.List; import java.util.Map;/*** strong /strong br* p* strong /strong br* /p* br** author :* date 2024年01月31日* 修改人 修改日期 修改描述br* -------------------------------------------br* br* br*/ BizModel(DemoEntity) public class DemoEntityBizModel {InjectIDaoProvider daoProvider;BizQueryGraphQLReturn(bizObjName DemoEntity)public IOrmEntity getEntity(Name(id) String id) {IEntityDaoIOrmEntity dao daoProvider.dao(app.demo.DemoEntity);return dao.getEntityById(id);}BizMutationGraphQLReturn(bizObjName DemoEntity)public IOrmEntity saveEntity(Name(data) MapString, Object data) {IEntityDaoIOrmEntity dao daoProvider.dao(app.demo.DemoEntity);IOrmEntity entity dao.newEntity();BeanTool.instance().setProperties(entity, data);dao.saveEntity(entity);return entity;}BizQueryGraphQLReturn(bizObjName DemoEntity)public ListIOrmEntity findByName(Name(name) String name) {IEntityDaoIOrmEntity dao daoProvider.dao(app.demo.DemoEntity);QueryBean query new QueryBean();query.addFilter(FilterBeans.contains(name, name));// contains namename valuea / name like %a%return dao.findAllByQuery(query);}// 注意字段不能声明为private。NopIoC无法注入私有成员变量InjectDemoMapper demoMapper;BizQueryGraphQLReturn(bizObjName DemoEntity)public IOrmEntity findBySql(Name(name) String name) {return demoMapper.findFirstByName(name);}} package com.nop.biz.demo;import io.nop.api.core.annotations.core.Name; import io.nop.api.core.annotations.orm.SqlLibMapper; import io.nop.orm.IOrmEntity;/*** strong /strong br* p* strong /strong br* /p* br** author :* date 2024年01月31日* 修改人 修改日期 修改描述br* -------------------------------------------br* br* br*/ SqlLibMapper(/test/demo/sql/demo.sql-lib.xml) public interface DemoMapper {IOrmEntity findFirstByName(Name(name) String name);}package com.nop.biz;import io.nop.api.core.annotations.core.Locale; import io.nop.api.core.exceptions.ErrorCode;import static io.nop.api.core.exceptions.ErrorCode.define;/*** strong /strong br* p* strong /strong br* /p* br** author :* date 2024年01月31日* 修改人 修改日期 修改描述br* -------------------------------------------br* br* br*/ Locale(zh-CN) public interface DemoErrors {String ARG_NAME name;ErrorCode ERR_DEMO_NOT_FOUND define(nop.err.demo.not-found, 指定数据不存在: {name}, ARG_NAME); }package com.nop.biz;import lombok.Data;/*** strong /strong br* p* strong /strong br* /p* br** author :* date 2024年01月30日* 修改人 修改日期 修改描述br* -------------------------------------------br* br* br*/ Data public class DemoRequest {private String name;private String email;} package com.nop.biz;import lombok.Data;/*** strong /strong br* p* strong /strong br* /p* br** author :* date 2024年01月30日* 修改人 修改日期 修改描述br* -------------------------------------------br* br* br*/ Data public class DemoResponse {private String name;private String result;} 其中BizModel BizMutation BizQuery RequestBean NameSqlLibMapper 是nop中规定的一些注解BizModel 类似spring中的ControlllerRequestBean 类似于spring中的RequestBodySqlLibMapper类似于Mapper代表存放sql的地址文件后面会有请求案例 第6步 创建资源文件 关于目录结构后面有介绍需要按照nop规定好的结构千万别忘了_module这是规定一个目录为一个模块的文件就是一个空文件 app-demo.beans.xml ?xml version1.0 encodingUTF-8 ?beans x:schema/nop/schema/beans.xdef xmlns:x/nop/schema/xdsl.xdefbean idDemoBizModel classcom.nop.biz.demo.DemoBizModel/bean idDemoEntityBizModel classcom.nop.biz.demo.DemoEntityBizModel/bean idcom.nop.biz.demo.DemoMapper classio.nop.orm.sql_lib.proxy.SqlLibProxyFactoryBeanioc:typebean:id ioc:bean-methodbuildproperty namemapperClass valuebean:type//bean /beansDemoEntity.xmeta meta x:schema/nop/schema/xmeta.xdef xmlns:x/nop/schema/xdsl.xdefpropsprop namesid displayNameSID queryabletrueschema typeString//propprop namename displayName名称 queryabletrue insertabletrue updatabletrueschema typeString//propprop namestatus displayName状态 queryabletrue insertabletrue updatabletrueschema typeInteger//propprop namestatus_label displayName状态文本schema typeString/getterc:script![CDATA[if(entity.status 1)return ACTIVE;return INACTIVE;]]/c:script/getter/prop/props /metaapp.orm.xml orm x:schema/nop/schema/orm/orm.xdef xmlns:x/nop/schema/xdsl.xdefentitiesentity nameapp.demo.DemoEntity tableNamedemo_entityclassNameio.nop.orm.support.DynamicOrmEntity registerShortNametruecolumnscolumn namesid codeSID propId1 stdSqlTypeVARCHAR precision32 tagSetseqmandatorytrue primarytrue/column namename codeNAME propId2 stdSqlTypeVARCHAR precision100 mandatorytrue/column namestatus codeSTATUS propId3 stdSqlTypeINTEGER//columns/entity/entities /ormdemo.sql-lib.xml sql-lib x:schema/nop/schema/orm/sql-lib.xdef xmlns:x/nop/schema/xdsl.xdefsqlseql namefindFirstByName sqlMethodfindFirstsourceselect o from DemoEntity o where o.name like ${% name %}/source/eql/sqls /sql-lib第7步 运行项目,项目启动以后会在项目目录下生成一个_dump 的目录里面可以供开发者调试 Nop平台调试模式启动Nop平台的调试模式只需设置nop.debugtrue。在调试模式下可以通过以下链接获取所有服务定义 /p/DevDoc__graphql/p/DevDoc__beans 例 127.0.0.1:8080/p/DevDoc__graphql 可以看到对外暴露的所有服务定义。 例如 type DemoEntity{ SID sid : String 名称 name : String 状态 status : Int 状态文本 status_label : String } 127.0.0.1:8080/p/DevDoc__beans 可以查看所有对象定义。 例如bean classcom.nop.biz.demo.DemoBizModel idDemoBizModel ioc:aopfalse/ 注意事项 前端的REST链接根据对象名和方法名自动推定无需手工指定固定格式为: /r/{bizObjName}__{bizMethod}。 注意是两个下划线。BizQuery允许通过GET和POST两种HTTP方法调用而BizMutation只允许通过POST方法调用。通过GET方式调用时可以通过URL链接来传递参数例如/r/Demo__hello?messageabc。通过POST方式调用时可以通过URL来传参也可以通过Http的body使用JSON格式传递。可以通过Name来一个个的指定前台参数也可以通过RequestBean将前台传递过来的所有参数包装为指定的JavaBean类型。服务函数总是返回POJO对象并指定按照JSON格式进行编码。 示例API访问 REST 例1带响应状态 访问127.0.0.1:8080/r/Demo__hello?messageabc响应 { “data”: “Hi,abc”, “status”: 0 } 例2不带响应状态 访问127.0.0.1:8080/p/Demo__hello?messageabc响应 Hi,abc 其他类似 127.0.0.1:8080/r/DemoEntity__findByName?nameabc 127.0.0.1:8080/r/Demo2Entity__findByName?nameabc GraphQL 例1(查询)关键字query 访问POST 127.0.0.1:8080/graphql 请求体 query{ Demo__hello(message:“2343”) } 响应 { “data”: { “Demo__hello”: “Hi,abc” } } 例2(更新)关键字mutation 访问POST 127.0.0.1:8080/graphql 请求体 mutation { Demo__testOk( name: “zhagnsan”, email: “123qq.com” ) { name result } } 响应 { “data”: { “Demo__hello”: “Hi,abc” } } 例3(保存)关键字mutation 访问POST 127.0.0.1:8080/graphql请求体 mutation { DemoEntity__saveEntity(data: {name: “zhagnsan”, status: 1}) { sid name status } }响应 { “data”: { “DemoEntity__saveEntity”: { “sid”: “23410bb4cdd74fc7bd2c1795059ff8a1”, “name”: “zhagnsan”, “status”: 1 } } } 例2跟例3有点类似于spring中的加RequestBody跟不加RequestBody的区别 用 RequestBean注解就直接写属性字段Name需要把方法中的对象参数名写在前面 文件命名规范 平台内所有会被自动识别并处理的文件模式已在此文档中列举 Nop平台内部约定了一定的资源路径模式会自动查找满足模式的文件进行加载。 META-INF/servicesio.nop.core.initialize.ICoreInitializer 使用Java内置的ServiceLoader机制注册分级初始化函数CoreInitialization会读取所有CoreInitializer按照优先级顺序执行 bootstrap.yaml 静态全局配置文件其中的内容优先级最高不会被外部配置所覆盖 application.yaml 全局的配置文件 application-{profile}.yaml 全局的配置文件profile是通过nop.profile指定的部署环境名称_vfs//_delta/{deltaDir} 这里是delta层的名称缺省会加载default层这里的文件会覆盖标准路径的同名文件/dict{dictName}.dict.yaml 字典文件不会被自动加载但是通过dictName加载指定字典文件 /i18n/{locale}{moduleName}.i18n.yaml I18nManager初始化的时候会自动加载所有i18n文件 /nop/aop{xxx}.annotations Nop的AOP代码生成器生成包装类时会读取所有的annotations文件并为每个标注了指定注解的类生成AOP包装类/autoconfig{xxx}.beans NopIoC会自动扫描解析所有后缀名为beans的文件加载其中的beans.xml文件/core/reigstry{xxx}.register-model.xml 初始化时会自动扫描所有registry-model.xml文件并注册对应的DSL模型解析器将它们和特定的文件类型关联起来/dao/dialect/selector{xxx}.selector.xml 初始化时会自动扫描所有selector.xml文件加载数据库方言的匹配规则{dialectName}.dialect.xml 数据库方言定义文件按照dialectName来加载/main/auth/main.action-auth.xml 全局的操作权限和菜单定义文件在其中通过x:extends来引用其他权限文件/main.data-auth.xml 全局的数据权限定义文件在其中通过x:extends来引用其他数据权限文件 /{moduleId} Nop模块的moduleId必须是nop/auth这种两级目录结构_module 每个Nop模块下都有一个_module文件来标记它是模块。/beansapp-{xxx}.beans.xml NopIoC启动时会自动扫描每个模块的beans目录下以app-为前缀的beans.xml文件/model{bizObjName}.xbiz 所有的服务对象原则上都是要在beans.xml中注册然后再通过对象名查找到对应的xbiz和xmeta文件{bizObjName}.xmeta NopDynEntity对象采用了简化注册流程直接向BizObjectManager注册没有在beans.xml中定义服务对象 /ormapp.orm.xml NopOrm引擎初始化的时候会加载所有模块的orm目录下的app.orm.xml模型文件/pages/{bizObjName}{pageId}.page.yaml 可以配置页面文件在系统初始化的情况下加载它引用的view模型因此被连带加载{bizObjName}.view.xml View模型不会被自动加载但是一般会放置在这个位置 第1篇就先写这么多后面再慢慢完善
http://www.w-s-a.com/news/96314/

相关文章:

  • 白山做网站网站建设 app 优化
  • 畜牧业网站建设官方网站下载拼多多app
  • 网站规划和布局备案网站地址
  • 站长工具流量统计招工信息发布平台
  • 上海网站建设公司排行建设无障碍网站
  • phpcms网站打不开网页制作网站设计稿
  • 博客网站开发环境wordpress 中英文双语
  • 做网站报价表群辉装wordpress
  • 请人做游戏的网站视觉设计师的工作内容
  • 昆明网站建设知名企业博客网站开发
  • 如何做网站网页免费thinkphp网站后台模板
  • 怎么自己做优惠券网站济南小程序开发
  • 南昌网站专业制作做仿站如何获取网站源码
  • qq钓鱼网站wordpress 企业站模板
  • 推进文明网站建设免费设计公司logo设计
  • 做电脑租赁网站server 2008 网站部署
  • 做网站的公司一年能赚多少钱wordpress作者增加分类插件
  • 苏州尚云网站建设专业摄影网站推荐
  • 020网站开发微信公众号直接链接网站怎么做
  • 学做烘焙的网站某网站注册需要邮箱是怎么弄
  • 网站的特效代码公司网站开发的工作内容
  • 网站制作哪家好商城网站建设预算要多少钱
  • 怎么做律所的官方网站微网站可以做商城吗
  • 通用网站后台管理系统(php版)网站备案ip查询网站查询
  • 制作网站代码吗江阴网站建设推广
  • 汕头建网站wordpress文章网址采集
  • 十大景观设计网站用vue框架做的网站
  • 福建省建设监理网官方网站做外贸网站卖什么东西好
  • 公司做网站排名东莞关键词优化推广
  • 连云港做企业网站公司全网营销与seo