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

建设个人技术网站济南网站定制

建设个人技术网站,济南网站定制,php网站开发 pdf,wordpress商城视频教程文章目录 案例导入说明1.安装MySQL1.1.准备目录1.2.运行命令1.3.修改配置1.4.重启 2.导入SQL3.导入Demo工程3.1.分页查询商品#xff08;仔细看代码#xff0c;很多新的MP编程技巧#xff09;3.2.新增商品3.3.修改商品3.4.修改库存3.5.删除商品3.6.根据id查询商品3.7.根据id… 文章目录 案例导入说明1.安装MySQL1.1.准备目录1.2.运行命令1.3.修改配置1.4.重启 2.导入SQL3.导入Demo工程3.1.分页查询商品仔细看代码很多新的MP编程技巧3.2.新增商品3.3.修改商品3.4.修改库存3.5.删除商品3.6.根据id查询商品3.7.根据id查询库存3.8.启动 4.导入商品查询页面4.1.运行nginx服务4.2.反向代理 案例导入说明 导入一个现成的IDEA项目工程但是利用Docker从0开始配置环境最终达到项目成功运行的目的 此外我们导入的是一个商品管理的案例其中包含商品的CRUD功能。我们将来会给查询商品添加多级缓存。 也即本项目可以用于演示多级缓存。 1.安装MySQL 后期做数据同步需要用到MySQL的主从功能所以需要在虚拟机中利用Docker来运行一个MySQL容器。 1.1.准备目录 为了方便后期配置MySQL我们先准备两个目录用于挂载容器的数据和配置文件目录 # 进入/tmp目录 cd /tmp # 创建文件夹 mkdir mysql # 进入mysql目录 cd mysql1.2.运行命令 进入mysql目录后执行下面的Docker命令 注意之前别忘了先启动docker systemctl start dockerdocker run \-p 3306:3306 \--name mysql \-v $PWD/conf:/etc/mysql/conf.d \-v $PWD/logs:/logs \-v $PWD/data:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD1234 \--privileged \-d \mysql:5.7.25docker run 创建一个新容器并运行他 --name 给容器取个名字 (此处给容器取名就叫mysql) -d 后面接一个镜像名称 表示根据哪个镜像创建新容器 -p 宿主机端口:容器端口 隔离容器配置绑定端口否则访问不了 -v 本地目录:容器内的目录 本地数据卷挂载到容器内的数据卷上 1.3.修改配置 在/tmp/mysql/conf目录添加一个my.cnf文件作为mysql的配置文件 # 创建文件 touch /tmp/mysql/conf/my.cnf文件的内容如下 [mysqld] skip-name-resolve character_set_serverutf8 datadir/var/lib/mysql server-id10001.4.重启 配置修改后必须重启容器 docker restart mysql 上面给容器取了名字的好处这里可以直接使用name启动容器而非容器id(需要docker ps 或者docker ps -a查一下比较麻烦) 注意是docker start 不是docker run(创建并运行容器) 查看 docker ps --format table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Status}}进入容器登陆看看 docker exec -it mysql bash mysql -uroot -p1234 show databases;宿主机无法直接登陆mysql,做了隔离了找不到该进程 2.导入SQL 接下来利用Navicat客户端连接MySQL然后导入资料提供的sql文件 链接https://pan.baidu.com/s/1dv6ydcwaum3tXRnqmCNxmA 提取码hzan 其中包含两张表 tb_item商品表包含商品的基本信息tb_item_stock商品库存表包含商品的库存信息 之所以将库存分离出来是因为库存是更新比较频繁的信息写操作较多。而其他信息修改的频率非常低。 先创建数据库 导入数据 3.导入Demo工程 下面导入资料提供的工程 项目结构如图所示 其中的业务包括 分页查询商品新增商品修改商品修改库存删除商品根据id查询商品根据id查询库存 业务全部使用mybatis-plus来实现如有需要请自行修改业务逻辑。 3.1.分页查询商品仔细看代码很多新的MP编程技巧 在cn.whu.item.web包的ItemController中可以看到接口定义 GetMapping(list) public PageDTO queryItemPage(RequestParam(value page, defaultValue 1) Integer page,RequestParam(value size, defaultValue 5) Integer size){// 一般名称不一致或者需要设置默认值时才需要用到RequestParam注解// 此注解是接受url参数的 value是前端的name值映射到后面变量里面 (一般name和形参名不一致时才需要指定)// 当然还可以设置默认值 如此处的defaultValue// 分页查询商品PageItem result itemService.query() //用query方法链式编程好处不用写lambda条件了.ne(status, 3).page(new Page(page, size));// 查询库存ListItem list result.getRecords().stream().peek(item - {ItemStock stock stockService.getById(item.getId());item.setStock(stock.getStock());item.setSold(stock.getSold());//库存和余量在另一张表 需要一个个查出来然后设置}).collect(Collectors.toList());// 封装返回return new PageDTO(result.getTotal(), list); }3.2.新增商品 在cn.whu.item.web包的ItemController中可以看到接口定义 3.3.修改商品 在cn.whu.item.web包的ItemController中可以看到接口定义 3.4.修改库存 在cn.whu.item.web包的ItemController中可以看到接口定义 3.5.删除商品 在cn.whu.item.web包的ItemController中可以看到接口定义 逻辑删除修改状态为3 (MP内部有这个机制呀这里竟然没用) 这里是采用了逻辑删除将商品状态修改为3 3.6.根据id查询商品 在cn.whu.item.web包的ItemController中可以看到接口定义 这里只返回了商品信息不包含库存 3.7.根据id查询库存 在cn.whu.item.web包的ItemController中可以看到接口定义 3.8.启动 注意修改application.yml文件中配置的mysql地址信息 需要修改为自己的虚拟机地址信息、还有账号和密码。 修改后启动服务访问http://localhost:8081/item/10001即可查询数据 完整Controller代码 package cn.whu.item.web;import cn.whu.item.service.IItemService; import cn.whu.item.service.IItemStockService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import cn.whu.item.pojo.Item; import cn.whu.item.pojo.ItemStock; import cn.whu.item.pojo.PageDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*;import java.util.List; import java.util.stream.Collectors;RestController RequestMapping(item) public class ItemController {Autowiredprivate IItemService itemService;Autowiredprivate IItemStockService stockService;GetMapping(list)public PageDTO queryItemPage(RequestParam(value page, defaultValue 1) Integer page,RequestParam(value size, defaultValue 5) Integer size){// 一般名称不一致或者需要设置默认值时才需要用到RequestParam注解// 此注解是接受url参数的 value是前端的name值映射到后面变量里面 (一般name和形参名不一致时才需要指定)// 当然还可以设置默认值 如此处的defaultValue// 分页查询商品PageItem result itemService.query() //用query方法链式编程好处不用写lambda条件了.ne(status, 3).page(new Page(page, size));// 查询库存ListItem list result.getRecords().stream().peek(item - {ItemStock stock stockService.getById(item.getId());item.setStock(stock.getStock());item.setSold(stock.getSold());//库存和余量在另一张表 需要一个个查出来然后设置}).collect(Collectors.toList());// 封装返回return new PageDTO(result.getTotal(), list);}PostMappingpublic void saveItem(RequestBody Item item){itemService.saveItem(item);}PutMappingpublic void updateItem(RequestBody Item item) {itemService.updateById(item);}PutMapping(stock)public void updateStock(RequestBody ItemStock itemStock){stockService.updateById(itemStock);}DeleteMapping(/{id})public void deleteById(PathVariable(id) Long id){itemService.update().set(status, 3).eq(id, id).update();}GetMapping(/{id})public Item findById(PathVariable(id) Long id){return itemService.query().ne(status, 3).eq(id, id).one();}GetMapping(/stock/{id})public ItemStock findStockById(PathVariable(id) Long id){return stockService.getById(id);} } 4.导入商品查询页面 商品查询是购物页面与商品管理的页面是分离的。 部署方式如图 我们需要准备一个反向代理的nginx服务器如上图红框所示将静态的商品页面放到nginx目录中。 页面需要的数据通过ajax向服务端nginx业务集群查询。 4.1.运行nginx服务 这里直接使用资料中准备好了的nginx反向代理服务器和静态资源。 链接https://pan.baidu.com/s/1dv6ydcwaum3tXRnqmCNxmA 提取码hzan 找到资料的nginx目录 将其拷贝到一个非中文无空格的目录下运行这个nginx服务。 运行命令 start nginx.exe然后访问 http://localhost/item.html?id10001即可 4.2.反向代理 现在页面是假数据展示的。我们需要向服务器发送ajax请求查询商品数据。 打开控制台可以看到页面有发起ajax查询数据 而这个请求地址同样是80端口所以被当前的nginx反向代理了。 http://localhost/api/item/10002 其中的api一看就知道是nginx.conf里配置的反向代理规则 查看nginx的conf目录下的nginx.conf文件 其中的关键配置如下 监听80端口以/api开头的请求 其中的192.168.150.101是我的虚拟机IP也就是我的Nginx业务集群要部署的地方 若你的不一样如192.168.141.100 手动修改一下 完整内容如下 #user nobody; worker_processes 1;events {worker_connections 1024; }http {include mime.types;default_type application/octet-stream;sendfile on;#tcp_nopush on;keepalive_timeout 65;#nginx的业务集群集群里可以做nginx本地缓存、redis缓存、tomcat查询upstream nginx-cluster{server 192.168.141.100:8081;server 192.168.141.100:8082;}server {listen 80;server_name localhost;location /api {proxy_pass http://nginx-cluster;}location / {root html;index index.html index.htm;}error_page 500 502 503 504 /50x.html;location /50x.html {root html;}} }环境都准备好啦接下来实现nginx集群部署到linux端然后windows端一个nginx做反向代理即可
http://www.hkea.cn/news/14305630/

相关文章:

  • 销售网站模板韩国电视剧
  • 黄山搜索引擎优化seo优化推广多少钱
  • 三合一网站建设用途下载什么网站做吃的
  • 六安网站制作哪里有做网站需要考虑哪些问题
  • 花里胡哨的网站网站优化能发外链的gvm网站大全
  • 网站建设地图怎么设置区块链软件开发
  • 新手学做网站要多久wordpress源代码在哪里
  • 优秀茶叶网站设计素材网免费素材
  • 网站开发工具蜡笔小新百度应用商店app下载安装
  • 武进区住房和城乡建设局网站教育主管部门建设的专题资源网站
  • 十堰秦楚网 十堰新闻门户网站凡诺网站建设
  • 仿快递网站源码wordpress做成公众号
  • 提高网站订单转化率邯郸新闻
  • 域名购买哪个网站上海seo怎么优化
  • 深圳百度seo整站中国行业网站联盟
  • 万网如何建设网站二手汽车手机网站模板
  • 有关网站建设的标题怎样做团购网站
  • 杭州网站建设网页制作商城项目
  • 网站建设与网络营销珠海室内设计学校
  • 网站开发对算法有要求么互联网内容服务商有哪些
  • 网站设计的优点利用分类信息网站做推广
  • 龙采哈尔滨建站公司怎样做app
  • 免费模板网站知乎个人网站 icp 代理
  • 广州定制型网站建设大连企业信息
  • 做恋爱方面的网站外贸流程图片
  • 网站素材模板个人型网站开站费用
  • 学习吧网站网站主色调简介
  • 建设网站松岗做微信平台图片网站
  • 织梦源码网站模板网站设计方案怎么做
  • 做检索网站如何建淘客网站