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

品牌型网站制作价格网站分哪些种类

品牌型网站制作价格,网站分哪些种类,天津做网站多少钱,荷塘网站建设前言 为了快速入门一个SpringBootWeb项目#xff0c;这里就将基础的增删改查的案例进行总结#xff0c;作为对SpringBootMybatis的基础用法的一个巩固。 准备工作 需求说明 对员工表进行增删改查操作环境搭建 准备数据表 -- 员工管理(带约束) create table emp (id int …前言 为了快速入门一个SpringBootWeb项目这里就将基础的增删改查的案例进行总结作为对SpringBootMybatis的基础用法的一个巩固。 准备工作 需求说明 对员工表进行增删改查操作环境搭建 准备数据表 -- 员工管理(带约束) create table emp (id int unsigned primary key auto_increment comment ID,username varchar(20) not null unique comment 用户名,password varchar(32) default 123456 comment 密码,name varchar(10) not null comment 姓名,gender tinyint unsigned not null comment 性别, 说明: 1 男, 2 女,image varchar(300) comment 图像,job tinyint unsigned comment 职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管, 5 咨询师,entrydate date comment 入职时间,dept_id int unsigned comment 部门ID,create_time datetime not null comment 创建时间,update_time datetime not null comment 修改时间 ) comment 员工表; -- 员工表测试数据 INSERT INTO emp(id, username, password, name, gender, image, job, entrydate,dept_id, create_time, update_time) VALUES(1,jinyong,123456,金庸,1,1.jpg,4,2000-01-01,2,now(),now()),(2,zhangwuji,123456,张无忌,1,2.jpg,2,2015-01-01,2,now(),now()),(3,yangxiao,123456,杨逍,1,3.jpg,2,2008-05-01,2,now(),now()),(4,weiyixiao,123456,韦一笑,1,4.jpg,2,2007-01-01,2,now(),now()),(5,changyuchun,123456,常遇春,1,5.jpg,2,2012-12-05,2,now(),now()),(6,xiaozhao,123456,小昭,2,6.jpg,3,2013-09-05,1,now(),now()),(7,jixiaofu,123456,纪晓芙,2,7.jpg,1,2005-08-01,1,now(),now()),(8,zhouzhiruo,123456,周芷若,2,8.jpg,1,2014-11-09,1,now(),now()),(9,dingminjun,123456,丁敏君,2,9.jpg,1,2011-03-11,1,now(),now()),(10,zhaomin,123456,赵敏,2,10.jpg,1,2013-09-05,1,now(),now()),(11,luzhangke,123456,鹿杖客,1,11.jpg,5,2007-02-01,3,now(),now()),(12,hebiweng,123456,鹤笔翁,1,12.jpg,5,2008-08-18,3,now(),now()),(13,fangdongbai,123456,方东白,1,13.jpg,5,2012-11-01,3,now(),now()),(14,zhangsanfeng,123456,张三丰,1,14.jpg,2,2002-08-01,2,now(),now()),(15,yulianzhou,123456,俞莲舟,1,15.jpg,2,2011-05-01,2,now(),now()),(16,songyuanqiao,123456,宋远桥,1,16.jpg,2,2007-01-01,2,now(),now()),(17,chenyouliang,123456,陈友谅,1,17.jpg,NULL,2015-03-21,NULL,now(),now());创建springboot工程引入对应的起步依赖web、mybatis、mysql驱动、lombok 配置文件application.properties中引入mybatis的配置信息准备对应的实体类 application.properties#数据库连接 spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver spring.datasource.urljdbc:mysql://localhost:3306/tlias spring.datasource.usernameroot spring.datasource.password1234#开启mybatis的日志输出 mybatis.configuration.log-implorg.apache.ibatis.logging.stdout.StdOutImpl#开启数据库表字段 到 实体类属性的驼峰映射 mybatis.configuration.map-underscore-to-camel-casetrue实体类/*员工类*/ Data NoArgsConstructor AllArgsConstructor public class Emp {private Integer id;private String username;private String password;private String name;private Short gender;private String image;private Short job;private LocalDate entrydate;private Integer deptId;private LocalDateTime createTime;private LocalDateTime updateTime; }准备对应的Mapper、Service(接口、实现类)、Controller基础结构 数据访问层 EmpMapperimport org.apache.ibatis.annotations.Mapper;Mapper public interface EmpMapper { }业务层 EmpService //员工业务规则 public interface EmpService { }EmpServiceImpl import com.exmaple.service.EmpService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service;//员工业务实现类 Slf4j Service public class EmpServiceImpl implements EmpService {}控制层 EmpControllerpackage com.exmple.controller; import org.springframework.web.bind.annotation.RestController;//员工管理控制器 RestController public class EmpController { }开发规范 REST 传统URL和REST风格比较 1传统URL风格 http://localhost:8080/user/getById?id1 GET查询id为1的用户 http://localhost:8080/user/saveUser POST新增用户 http://localhost:8080/user/updateUser POST修改用户 http://localhost:8080/user/deleteUser?id1 GET删除id为1的用户2REST风格URL http://localhost:8080/users/1 GET查询id为1的用户 http://localhost:8080/users POST新增用户 http://localhost:8080/users PUT修改用户 http://localhost:8080/users/1 DELETE删除id为1的用户其中总结起来就一句话通过URL定位要操作的资源通过HTTP动词(请求方式)来描述具体的操作。 在REST风格的URL中通过四种请求方式来操作数据的增删改查。 GET 查询POST 新增PUT 修改DELETE 删除 统一响应结果 前后端工程在进行交互时使用统一响应结果 Result。 package com.example.pojo;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data NoArgsConstructor AllArgsConstructor public class Result {private Integer code;//响应码1 代表成功; 0 代表失败private String msg; //响应信息 描述字符串private Object data; //返回的数据//增删改 成功响应public static Result success(){return new Result(1,success,null);}//查询 成功响应public static Result success(Object data){return new Result(1,success,data);}//失败响应public static Result error(String msg){return new Result(0,msg,null);} }开发流程 查看页面原型明确需求 根据页面原型和需求进行表结构设计、编写接口文档(已提供) 阅读接口文档 思路分析 功能接口开发 就是开发后台的业务功能一个业务功能我们称为一个接口 功能接口测试 功能开发完毕后先通过Postman进行功能接口测试测试通过后再和前端进行联调测试 前后端联调测试 和前端开发人员开发好的前端工程一起测试 新增员工 需求 在新增用户时我们需要保存用户的基本信息并且还需要上传的员工的图片目前我们先完成第一步操作保存用户的基本信息。 接口文档 我们参照接口文档来开发新增员工功能 基本信息 请求路径/emps请求方式POST接口描述该接口用于添加员工的信息请求参数 参数格式application/json 参数说明 名称类型是否必须备注usernamestring必须用户名namestring必须姓名gendernumber必须性别, 说明: 1 男, 2 女imagestring非必须图像deptIdnumber非必须部门identrydatestring非必须入职日期jobnumber非必须职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管, 5 咨询师请求数据样例 {image: https://web-framework.oss-cn-hangzhou.aliyuncs.com/2022-09-03-07-37-38222.jpg,username: linpingzhi,name: 林平之,gender: 1,job: 1,entrydate: 2022-09-18,deptId: 1 }响应数据 参数格式application/json 参数说明 参数名类型是否必须备注codenumber必须响应码1 代表成功0 代表失败msgstring非必须提示信息dataobject非必须返回的数据 思路分析 接口文档规定 请求路径/emps请求方式POST请求参数Json格式数据响应数据Json格式数据 问题1如何限定请求方式是POST PostMapping问题2怎么在controller中接收json格式的请求参数 RequestBody //把前端传递的json数据填充到实体类中功能开发 EmpController Slf4j RestController RequestMapping(/emps) public class EmpController {Autowiredprivate EmpService empService;//新增PostMappingpublic Result save(RequestBody Emp emp){//记录日志log.info(新增员工, emp:{},emp);//调用业务层新增功能empService.save(emp);//响应return Result.success();}//省略... }EmpService public interface EmpService {/*** 保存员工信息* param emp*/void save(Emp emp);//省略... }EmpServiceImpl Slf4j Service public class EmpServiceImpl implements EmpService {Autowiredprivate EmpMapper empMapper;Overridepublic void save(Emp emp) {//补全数据emp.setCreateTime(LocalDateTime.now());emp.setUpdateTime(LocalDateTime.now());//调用添加方法empMapper.insert(emp);}//省略... }EmpMapper Mapper public interface EmpMapper {//新增员工Insert(insert into emp (username, name, gender, image, job, entrydate, dept_id, create_time, update_time) values (#{username}, #{name}, #{gender}, #{image}, #{job}, #{entrydate}, #{deptId}, #{createTime}, #{updateTime});)void insert(Emp emp);//省略... }删除员工 需求 前端页面可以一次性删除一个或多个员工。 问题我们需要开发两个功能接口吗一个删除单个员工一个删除多个员工 答案不需要。 只需要开发一个功能接口即可删除多个员工包含只删除一个员工 接口文档 基本信息 请求路径/emps/{ids}请求方式DELETE接口描述该接口用于批量删除员工的数据信息请求参数 参数格式路径参数 参数说明 参数名类型示例是否必须备注ids数组 array1,2,3必须员工的id数组请求参数样例 /emps/1,2,3响应数据 参数格式application/json 参数说明 参数名类型是否必须备注codenumber必须响应码1 代表成功0 代表失败msgstring非必须提示信息dataobject非必须返回的数据响应数据样例 {code:1,msg:success,data:null }思路分析 接口文档规定 前端请求路径/emps/{ids} 前端请求方式DELETE 问题1怎么在controller中接收请求路径中的路径参数 PathVariable问题2如何限定请求方式是delete DeleteMapping问题3在Mapper接口中执行delete操作的SQL语句时条件中的id值是不确定的是动态的怎么实现呢 Mybatis中的动态SQLforeach功能开发 EmpController Slf4j RestController RequestMapping(/emps) public class EmpController {Autowiredprivate EmpService empService;//批量删除DeleteMapping(/{ids})public Result delete(PathVariable ListInteger ids){empService.delete(ids);return Result.success();}}EmpService public interface EmpService {/*** 批量删除操作* param ids id集合*/void delete(ListInteger ids);//省略... }EmpServiceImpl Slf4j Service public class EmpServiceImpl implements EmpService {Autowiredprivate EmpMapper empMapper;Overridepublic void delete(ListInteger ids) {empMapper.delete(ids);}//省略... }EmpMapper Mapper public interface EmpMapper {//批量删除void delete(ListInteger ids);//省略... }EmpMapper.xml ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.example.mapper.EmpMapper!--批量删除员工--select iddeletedelete from emp where id inforeach collectionids itemid open( close) separator,#{id}/foreach/select!-- 省略... --/mapper元素用于迭代传入的集合。在这个例子中它用于构建IN子句中的值列表。 collection属性指定要迭代的集合名称。在这个例子中collectionids意味着传入的参数应该是一个名为ids的集合。 item属性指定每次迭代时使用的变量名。在这里item“id表示每次迭代时当前元素会被赋值给变量id。 open属性指定循环产生的SQL片段的开头字符。在这里open”(“表示循环开始时添加一个左括号。 close属性指定循环产生的SQL片段的结尾字符。在这里close”)“表示循环结束时添加一个右括号。 separator属性指定每次迭代之间使用的分隔符。在这里separator”,表示每次迭代之间添加一个逗号。 修改员工 需求 修改员工信息 接口文档 基本信息 请求路径/emps请求方式PUT接口描述该接口用于修改员工的数据信息请求参数 参数格式application/json 参数说明 名称类型是否必须备注idnumber必须idusernamestring必须用户名namestring必须姓名gendernumber必须性别, 说明: 1 男, 2 女imagestring非必须图像deptIdnumber非必须部门identrydatestring非必须入职日期jobnumber非必须职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管, 5 咨询师请求数据样例 {id: 1,image: https://web-framework.oss-cn-hangzhou.aliyuncs.com/2022-09-03-07-37-38222.jpg,username: linpingzhi,name: 林平之,gender: 1,job: 1,entrydate: 2022-09-18,deptId: 1 }响应数据 参数格式application/json 参数说明 参数名类型是否必须备注codenumber必须响应码1 代表成功0 代表失败msgstring非必须提示信息dataobject非必须返回的数据响应数据样例 {code:1,msg:success,data:null }代码实现 EmpMapper Mapper public interface EmpMapper {//修改员工信息public void update(Emp emp);//省略... }EmpMapper.xml ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.itheima.mapper.EmpMapper!--更新员工信息--update idupdateupdate empsetif testusername ! null and username ! username #{username},/ifif testpassword ! null and password ! password #{password},/ifif testname ! null and name ! name #{name},/ifif testgender ! nullgender #{gender},/ifif testimage ! null and image ! image #{image},/ifif testjob ! nulljob #{job},/ifif testentrydate ! nullentrydate #{entrydate},/ifif testdeptId ! nulldept_id #{deptId},/ifif testupdateTime ! nullupdate_time #{updateTime}/if/setwhere id #{id}/update!-- 省略... --/mapperEmpService public interface EmpService {/*** 更新员工* param emp*/public void update(Emp emp);//省略... }EmpServiceImpl Slf4j Service public class EmpServiceImpl implements EmpService {Autowiredprivate EmpMapper empMapper;Overridepublic void update(Emp emp) {emp.setUpdateTime(LocalDateTime.now()); //更新修改时间为当前时间empMapper.update(emp);}//省略... }EmpController Slf4j RestController RequestMapping(/emps) public class EmpController {Autowiredprivate EmpService empService;//修改员工PutMappingpublic Result update(RequestBody Emp emp){empService.update(emp);return Result.success();}//省略... }查询员工 需求 根据ID查询员工信息 接口文档 根据ID查询员工数据 基本信息 请求路径/emps/{id}请求方式GET接口描述该接口用于根据主键ID查询员工的信息请求参数 参数格式路径参数 参数说明 参数名类型是否必须备注idnumber必须员工ID请求参数样例 /emps/1响应数据 参数格式application/json 参数说明 名称类型是否必须默认值备注codenumber必须响应码, 1 成功 , 0 失败msgstring非必须提示信息dataobject必须返回的数据idnumber非必须idusernamestring非必须用户名namestring非必须姓名passwordstring非必须密码entrydatestring非必须入职日期gendernumber非必须性别 , 1 男 ; 2 女imagestring非必须图像jobnumber非必须职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管, 5 咨询师deptIdnumber非必须部门idcreateTimestring非必须创建时间updateTimestring非必须更新时间响应数据样例 {code: 1,msg: success,data: {id: 2,username: zhangwuji,password: 123456,name: 张无忌,gender: 1,image: https://web-framework.oss-cn-hangzhou.aliyuncs.com/2022-09-02-00-27-53B.jpg,job: 2,entrydate: 2015-01-01,deptId: 2,createTime: 2022-09-01T23:06:30,updateTime: 2022-09-02T00:29:04} }代码实现 EmpMapper Mapper public interface EmpMapper {//根据ID查询员工信息Select(select id, username, password, name, gender, image, job, entrydate, dept_id, create_time, update_time from emp where id #{id})public Emp findById(Integer id);//省略... }EmpService public interface EmpService {/*** 根据ID查询员工* param id* return*/public Emp getById(Integer id);//省略... }EmpServiceImpl Slf4j Service public class EmpServiceImpl implements EmpService {Autowiredprivate EmpMapper empMapper;Overridepublic Emp getById(Integer id) {return empMapper.findById(id);}//省略... }EmpController Slf4j RestController RequestMapping(/emps) public class EmpController {Autowiredprivate EmpService empService;//根据id查询GetMapping(/{id})public Result getById(PathVariable Integer id){Emp emp empService.getById(id);return Result.success(emp);}//省略... }后记 springboot mybatis做数据的增删改查其实相对比较简单我们根据上面的案例就可以进行学习主要关注的是常用的注解以及mybatis复杂查询时xml文件的配置。
http://www.dnsts.com.cn/news/89313.html

相关文章:

  • 襄阳高端网站建设软件排名工具
  • 做号网站国外云服务器推荐
  • 12306网站建设花了多少钱wordpress小工具位置
  • 网站开发工具js建设银行 福建 招聘网站
  • 哪些可以免费做网站wordpress添加评论
  • 淘宝网站建设成本大庆免费网站建设
  • 湘潭网站建设设计网站建设功能
  • 规范门户网站的建设和管理办法济南工程网站建设
  • 邯郸当地招聘网站长葛网站建设
  • 让自己的网站收录网站开发发帖语言
  • 网站报404错误怎么解决做响应式网站兼容哪几个尺寸
  • 东莞网站SEO优化托管flash代码做网站教程
  • 如何制作游戏?信息流优化师发展前景
  • 软件网站技术开发公司做彩票网站需要学习什么
  • 加粉网站开发网站建设合同编号
  • 自动做微网站南京环力建设有限公司网站
  • 企业网站需要多少费用短链接生成器免费下载
  • 优秀网站建设价格没有公司做网站犯法吗
  • 怎么用云服务器做网站美工招聘信息
  • 南阳住房和城乡建设厅网站深圳网站开发公司有哪些
  • 织梦开发网站电子商务网站规划的原则有哪些
  • 公主岭网站建设规划网站开发视频代码
  • 如何选择响应式网站wordpress 通知
  • 爬虫 做资讯网站服务好的建筑企业查询
  • 专门做恐怖片的网站网站内容页相关性怎么做
  • wordpress网站打开很卡山西省网站
  • 牟平做网站吉林省工程信息网官网
  • 微购物网站建设1999年怎样建立企业网站
  • 怎样做自己的销售网站深圳网站制作公司方案
  • 济宁计算机网站建设培训班移动端网站建设的意义