官方网站搭建要多少钱企业网站托管费用

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

官方网站搭建要多少钱,企业网站托管费用,莆田有哪几家做网站设计的,网站设计论文范文大全集目录 一、介绍 二、前期准备工作 #xff08;一#xff09; 创建springboot项目和创建数据库 三、项目配置 #xff08;一#xff09;pom.xl导入相关依赖
1.导入依赖 #xff08;二#xff09;yml文件中配置连接数据库 2.配置yml文件
四、代码的编写 数据库展…目录 一、介绍 二、前期准备工作 一 创建springboot项目和创建数据库 三、项目配置 一pom.xl导入相关依赖  1.导入依赖 二yml文件中配置连接数据库 2.配置yml文件  四、代码的编写 数据库展示 项目提前展示 三MySQL表绑定到spring boot实体层 3.1 创建实体包 3.2编写User类 四springboot绑定到mybatis-plus数据层 4.1创建mapper包 4.2编写UserMapper接口 五把数据层加工处理成逻辑业务service服务层 5.1创建service包  5.2编写获取内置增删改查方法接口IUserService 5.3编写自己定义的UserService 5.4编写服务层合成逻辑业务UserServiceImpl 5.5故事解读服务层接口和类 六调用服务层的皇帝 6.1创建controller包 6.2 编写调取业务层的UserController类 五、前端请求测试 一、介绍 本篇文章通过springboot整合mybatis-plus去实现后端对数据库的增删改查以及响应给前端的url让前端获得数据。mybatis-plus技术是简化了繁琐的代码操作把增删改查的语句都内置了直接调用就可以实现数据库的增删改查了。还可以一定程度上防止SQL注入。缺点就是不够灵活不过这个灵活的问题也可以自己去创建代码去弥补这个。 二、前期准备工作 一 创建springboot项目和创建数据库 1. spring boot项目的介绍和创建方式SpringBoot项目的快速创建方式包含第一个程序的运行_云边的快乐猫的博客-CSDN博​​​​​​客 2.创建MySQL数据库和新建表的详细步骤  创建MySQL数据库和创建表的详细步骤navicat_云边的快乐猫的博客-CSDN博客 三、项目配置 一pom.xl导入相关依赖  这里面有几个必须的依赖 1.web依赖这个是创建时候就已经加入进去了所以不用导入了检查一下 2.lombok依赖 这个是创建时候就已经加入进去了所以不用导入了检查一下 3.mybatis-plus的依赖来源baomidou 4.mysql依赖 5.druid依赖来源阿里巴巴德鲁伊 6.swagger2依赖拥有这个注解ApiModelProperty才能用 1.导入依赖 在pom.xml文件里面导入相关的依赖。如果依赖加入不成功就要检查自己的maven配置问题了 maven解决方案 springboot添加maven环境详细步骤_云边的快乐猫的博客-CSDN博客 spring-boot-maven-plugin报红的解决办法_云边的快乐猫的博客-CSDN博客  !–新加入的依赖1–dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.4.3/version/dependency!–新加入的依赖2–dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.33/version/dependency!–新加入的依赖3–dependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion1.2.16/version/dependency!–新加入的依赖4 ApiModelProperty这个才能用–dependencygroupIdio.springfox/groupIdartifactIdspringfox-swagger2/artifactIdversion2.7.0/version/dependency即 二yml文件中配置连接数据库 2.配置yml文件  把application配置文件的后缀改为yml这样看着更分明一点然后再里面写入连接数据库的配置建立和数据库的关联。具体的端口号默认是8080的但是我改成了80端口了。  这里的第2、7、8、9行都要改为自己的   server:port: 80 spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/dndata?serverTimezoneGMT%2b8username: rootpassword: 123456 四、代码的编写 数据库展示 项目提前展示 三MySQL表绑定到spring boot实体层 为什么要建立这个类 可以这样理解这一步骤是让数据库字段和后端代码的绑定  3.1 创建实体包 在项目下新建一个entity包再新建一个类。类的命名就是User 命名来源类名和数据库中的表名一样不过首字母要大写一个属性类对应一张数据库表。 3.2编写User类 这个实体类里面的属性要和数据库中的字段对应   看着注释去编写还是很简单的在最下面的注释也解释了每个注解的作用  User类 package com.example.mybatis.entity;import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModelProperty; import lombok.Data;/*

  • 1.使用Data注解
  • 2.使用注解TableName(value user) —–user这个是对应数据库的表名
  • 3.编写和数据库字段对应的属性
  • 4.加上文档注解ApiModelProperty(用户的id)—里面的文字是相当于给自己看的备注
  • 5.使用TableId(value id, type IdType.AUTO) //作用是标明当前属性主键并且type IdType.AUTO这个代表id自增
  • / Data //1 TableName(value user) //2 public class User {ApiModelProperty(用户的id) //4TableId(value id, type IdType.AUTO) //5private Integer id; //3ApiModelProperty(用户名) //4private String username; //3ApiModelProperty(密码) //4private String password; //3 }/
  • 注解的解释
  • Data注解是这个来源于lombok内置了set、get、ToString等属性类里面我们需要写的东西就不用我们写了* TableName注解是 MyBatis-Plus 框架中的一个注解用于标识实体类与数据库表之间的映射关系。
  • 它的作用是告诉 MyBatis-Plus 框架这个实体类对应哪个数据库表。* ApiModelProperty注解是 Swagger 框架中的一个注解
  • 用于给实体类的属性字段添加额外的文档说明以便在生成 API 文档时提供更详细的描述和信息。
  • Swagger是一个用于生成和展示 API 文档的工具可以帮助开发人员更好地理解和使用 API。 *
  • TableId 注解用于标识表的主键字段帮助 MyBatis-Plus 框架了解哪个属性在数据库中扮演主键的角色
  • 以及如何生成主键值。这对于数据库操作和映射非常重要。
  • / 四springboot绑定到mybatis-plus数据层 为什么要创建这个接口呢 因为为了把springboot获得的属性类再绑定给到mybatis-plus那边然后绑定的这个接口给其他层调用。 4.1创建mapper包 项目下创建一个mapper包 4.2编写UserMapper接口 创建一个接口UserMapper命名来源是属性类名mapper驼峰命名 到这里就可以使用mybatis-plus内置最原始的增删改查但是不够灵活只能做最简单的增删改查。 UserMapper类 package com.example.mybatis.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.mybatis.entity.User; import org.apache.ibatis.annotations.Mapper; /
  • 1.使用Mapper注解 代表这个接口被mybatis接管
  • 2.继承BaseMapper属性类名
  • / Mapper public interface UserMapper extends BaseMapperUser { }/
  • Mapper注解是 MyBatis 框架中的一个重要标识
  • 它定义了 Mapper 接口用于与数据库交互。使用这个注解可以简化数据库操作代码并提供一些优势
  • 如自动生成 SQL、类型安全性等。
  • / 五把数据层加工处理成逻辑业务service服务层 为什么要这一层 答这一层次叫服务层也叫业务层。因为上面的数据完全都绑定好了可以实现增删改查了但是那只是最原始的封装的方法都很少稍微复杂一点的分页查询方法里面都没有所以要在这一层使用别人封装好的更好的方法以及各种逻辑都可以在这里写  5.1创建service包  5.2编写获取内置增删改查方法接口IUserService MP官方的 为什么要写这个接口 继承了MPmybatis-plus封装好的接口我们需要的各种增删改查方法都在这里面给我们写好了这个接口编写是为了给后面控制层去调用这个接口里面的增删改查方法。 你说的增删改查方法怎么看不到 因为被MP封装到了 这个IService接口里面了 在service包下建立这个IUserService接口 IUserService接口 package com.example.mybatis.service;import com.baomidou.mybatisplus.extension.service.IService; import com.example.mybatis.entity.User;//1.继承IService这个接口实体类名 public interface IUserService extends IServiceUser { }/ IService接口里面有mybatis-plus封装好我们经常会用到的增删改查的一些方法 里面本质上还调用了上数据层mapper是对mapper的封装优化 / 5.3编写自己定义的UserService 在service包下建立这个UserService类 MP官方自定义逻辑自己调用数据层—咱自己的 5.2不是已经有可以调用增删改查的方法了吗为什么还要写这个 答5.2那个接口是直接用MP内置的增删改查方法可以正常用但是我想对内置的这些增删改查再优化呢比如数据的加密、数据的校验等逻辑处理。 而且我想根据我自己的需求来去给这些内置的增删改查嵌套或者升级自定义呢 总而言之这个是类底层是就是5.2接口的实现类也就是说这个类包含了5.2的接口。还能自定义方法和对mapper数据层的调用就比5.2接口的方法更加丰富用于加上自定义处理繁琐的逻辑数据层 package com.example.mybatis.service;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.example.mybatis.entity.User; import com.example.mybatis.mapper.UserMapper; import org.springframework.stereotype.Service;/
  • 1.使用Service注解要不然咱自己定义的类谁知道他是服务层
  • 2.继承ServiceImpl这个是MP内置增删改查接口的一个实现牛逼的是还能自定义直接调取数据层的数据
  • 3.定义需要的方法根据自己的需要定义定义MP内置里面没有的
  • / Service public class UserService extends ServiceImplUserMapper, User {//下面这个方法是对数据库操作时候多加了一层封装用不到去掉也没有影响。// 、作用可以定义密码加密、数据校验、关联数据处理、日志记录、通知或触发事件等public boolean saveUser(User user){return saveOrUpdate(user);} } 5.4编写服务层合成逻辑业务UserServiceImpl 在service包下建立这个UserServiceImpl类  1.为什么要写这个实现类 因为把5.2和5.3的方法都拿来这里组成逻辑业务比如登录、校验、权限等 2.为什么不直接用5.3那个里面不是也可以定义逻辑方法吗  5.3那个自定义类主要用来处理一些对数据比较底层的方法密码加密校验这些底层。而这个类里面定义的是靠5.3那些小方法组起来的业务比如登录、权限验证这些 总而言之这里是业务的成型调用5.3主要5.2次要一些逻辑组成业务 package com.example.mybatis.service.Impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.example.mybatis.entity.User; import com.example.mybatis.mapper.UserMapper; import com.example.mybatis.service.IUserService; import org.springframework.stereotype.Service; /
  • 1.Service——–使用Service注解让人知道这个是服务层
  • 2.extends ServiceImplUserMapper, User —继承和UserService类里面继承的方法一样
  • 但是这里面还偷偷藏了UserService自定义的方法
  • 3.implements IUserService—实现接口
  • /Service public class UserServiceImpl extends ServiceImplUserMapper, User implements IUserService {//登录业务//登录校验业务//创建用户检查业务等等 }5.5故事解读服务层接口和类 这么多服务层到底什么关系啊这就来解读  这三个都是服务层的看需要选择调用哪个 5.2地主家傻儿子是一个服务接口去嵌套了MP内置的常用CRUD      地主家MP的傻儿子一样什么都没有只会调用他老爹写好的方法不过有个好老爹大部分常用的CRUD他都有了控制层可以直接调用他 5.3佣人的儿子是一个服务类嵌套内置CRUD自研调用方法      这个类虽然和地主家傻儿子拥有一样的内置方法但是却更上进想要变得更强所以可以自定义修炼很多方法底层密码加密、数据校验、关联数据处理、日志记录、通知或触发事件还能直接和数据层进行交互。 这个类厉害吧是不是很完美?控制层不会调用他的因为他这些方法都会被他爹实现类去组成各种逻辑业务 5.4佣人是一个实现服务类继承有5.2地主家傻儿子也实现了5.3亲儿子。大一统       在这里面实现各种业务。能在这里编写的都是业务了比如拿5.3方法组成的登录业务、权限校验业务等等。 这个是老爹服务类。够厉害了吧。但是这个也不能被控制层直接调用因为这个不是接口根据设计的依赖倒置原则调用接口可以达到解耦的效果。但是这些写的方法又不能浪费只能继承了5.2地主家的傻儿子接口让他帮我把这些逻辑都带出去。通过控制层构造器注入 六调用服务层的皇帝 为什么要这一层? 因为叫控制层是皇帝。你想要什么告诉我我让服务层去弄逻辑业务。 要什么数据或者逻辑业务都要通过我控制层直接找我拿就好了。 既然服务层都有了那我为什么要你 服务层的业务只有逻辑业务涉及到导入导出这种正常的业务还得是我来 那该去调用服务层的哪个 找这个接口—–IUserService 这里面不但继承了地主MP的CRUD还继承了实现类里面所有的业务逻辑 6.1创建controller包 6.2 编写调取业务层的UserController类 第一种理解方式 增删改查方法通用公式     1 public  2  自定义类名 3    4的数据类型   4       return   当前的全局服务类.服务类中的方法4 服务中的方法查全部list、根据ID查询getById、新增和修改saveOrUpdate、删除removeById 1.数据查询一般用GetMapping、对数据进行修改操作用PostMapping、删除用PostMapping。 前端我要删除或者根据id查询 后端那你get给我id就好了其他的交给我就是在注解的后面加(/{id})。如果是直接查询全部的你连id都不用给我我懂 前端我要修改和增加东西有很多字段的数据都要 后端那你不能放请求头里面不安全用post请求放到请求体里面吧 2.这个是希望后端给我的数据增删改什么的只要告诉我是否成功就好所以用布尔值。查询你就要告诉我查询到什么了就用属性类名 3.这个是和1相关post请求用RequestBody其他的都用PathVariable去解析请求头的id变成json传给后端 4.这个也看1前端传什么数据过来这里就用什么数据。什么都没有写就是全部—就是属性类名 第二种理解方式 注解 —这个就是前端要给后端的传输定义 public  希望后端给前端的   自定义类名  post注解使用RequestBody-反之   数据类型    对应前端传过来的            return  当前的全局服务类.服务类中的方法数据类型对应前端传过来的 package com.example.mybatis.controller;import com.example.mybatis.entity.User; import com.example.mybatis.service.IUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.;import java.util.List; /*
  • 1.RestController—添加控制层注解让springboot知道这是控制层
  • 2.RequestMapping(/user)— user代表默认访问路径在/user下可以访问
  • /RestController RequestMapping(/user) public class UserController {Autowired //4.自动注解private IUserService userService; //3.定义调用服务层的接口/**5.查询全部的数据5.1使用 GetMapping注解没有括号不定义就代表使用get方式url访问上面默认路径/user5.2查询全部肯定使用的方法是集合实体类方式去自定义一个findAll方法名5.3再用服务层返回一个集合就好了/GetMappingpublic ListUser findAll(){return userService.list();}/6.根据id查询一条6.1查询使用GetMapping注解既然是根据id查询那么就要把id传给后端。但是get是不能传递请求体的只能传递请求头那么只能把这个值放在请求头上面就是这样(/{id})放6.2自定义一个方法名(PathVariable 类型 id),为什么要用id呢这不是你前端这个/{id}说要吗PathVariable这个注解的方式就是把请求头中的数字以Json传递给后端去识别后端不能直接识别url上面的数字6.3 再用服务层返回获取id的方法就好了/GetMapping(/{id})public User findById(PathVariable Integer id){return userService.getById(id);}/7.新增和修改需要传递body传递全部参数7.1对数据的操作使用PostMapping括号里面不定义就代表使用post方式url访问上面默认路径/user7.2自定义一个方法括号里面使用(RequestBody 属性类 自定义属性昵称)为什么这里用Boolean而不是User因为对数据的修改希望返回的结果就两种要么成功要么失败所以用布尔值RequestBody这个注解用于映射传递来的json参数映射为到java对象里面特别是适用与请求体的参数7.3然后再用服务层返回获取的saveOrUpdate方法就好了/PostMappingpublic Boolean add(RequestBody User user){return userService.saveOrUpdate(user);}/8.删除的方法8.1使用DeleteMapping注解因为删除只需要传递一个特定的id给后端就可以了所以括号里面使用(/{id})8.2创建一个自定义的方法删除也是要么成功要么失败所以使用Boolean作为返回值PathVariable在上面已经解释过了8.3再用服务层次返回对应的方法括号里面的值就是上面括号里面需要的值 /DeleteMapping(/{id})public Boolean delete(PathVariable Integer id){return userService.removeById(id);}}/ //修改数据的另一种写法PostMapping(/update)public Boolean update(RequestBody User user){return userService.updateById(user);}*/ 到这里代码就全部编写完成了不懂的去看上面的代码提前展示图和注释解释 MySQL—属性类—数据层mapper接口—业务服务层service接口—控制层前后端交互  按照规范不能跨级调用接口属性类除外 五、前端请求测试 测试的工具可以使用idea自带的也可以使用postman等请求测试工具。 postman官网下载安装登录详细教程_云边的快乐猫的博客-CSDN博客  具体的测试方法