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

永安市住房与城乡建设局网站网站建设 ipv6

永安市住房与城乡建设局网站,网站建设 ipv6,制作灯笼图片,网站建设求职简历模板下载目录 1、需求说明#xff1a;实现对部门表和员工表的增删改查 2、环境搭建 3、部门管理 3.1 查询部门 3.2 前后端联调 3.3 删除部门 3.4 新增部门 3.5 根据ID查询数据 3.5 修改部门 总结#xff08;Controller层参数接收#xff09;#xff1a; 4、员工管理 4.…目录 1、需求说明实现对部门表和员工表的增删改查  2、环境搭建 3、部门管理 3.1 查询部门 3.2 前后端联调 3.3 删除部门 3.4 新增部门 3.5 根据ID查询数据 3.5 修改部门 总结Controller层参数接收 4、员工管理 4.1 分页查询 4.2 分页查询插件-PageHelper 4.3 分页查询带条件 4.4 删除员工 4.5 新增员工 该项目是在看完黑马2023年JavaWeb视频跟着做的一个简单的SpringBoot项目 基于前后端分离模式进行开发会遵循接口文档的开发规范 开发流程 1、需求说明实现对部门表和员工表的增删改查  2、环境搭建 1 准备数据库表dept、emp 在本地创建tlias数据库并复制资料中的两张表 2 创建SpringBoot工程 pom.xml ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.example/groupIdartifactIdtlias/artifactIdversion1.0-SNAPSHOT/versionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.2.7.RELEASE/version/parentdependencies!-- mybatis的起步依赖--dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion2.2.2/version/dependency!-- mysql 驱动包--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdscoperuntime/scope/dependency!-- springboot单元测试--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-test/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependency/dependencies/project 启动类tliasquickstartapplication package pearl;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication//具有包扫描作用默认扫描当前包及其子包即demo01 public class tliasquickstartapplication {public static void main(String[] args) {SpringApplication.run(tliasquickstartapplication.class,args);}} 测试类tliasquickstartapplicationTest  package pearl;import org.springframework.boot.test.context.SpringBootTest;SpringBootTest //springboot整合单元测试的注解 public class tliasquickstartapplicationTest {}application.properties配置文件 # 配置数据库的链接信息 -四要素 #驱动类名称 spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver #数据库连接的url spring.datasource.urljdbc:mysql://localhost:3306/tlias?serverTimezoneUTC #连接数据库的用户名 spring.datasource.usernameroot #连接数据库的密码 spring.datasource.password# 配置mybatis的日志指定输出到控制台 mybatis.configuration.log-implorg.apache.ibatis.logging.stdout.StdOutImpl# 开启mybatis的驼峰命名自动映射开关 mybatis.configuration.map-underscore-to-camel-case true 创建实体类Emp、Dept 创建对应的Mapper接口、Service接口、实现类、Controller基础结构 3、部门管理 3.1 查询部门 EmpController: 首先返回一个空的数据测试端口号 Slf4j //定义一个日志记录对象 等价于下面对log对象的定义1. RestController public class DeptController { // 1.定义一个日志记录对象 // 1.private static Logger log LoggerFactory.getLogger(DeptController.class);// RequestMapping(value /depts,method RequestMethod.GET)//指定请求方式为getGetMapping(/depts)// 指定/depts路由的请求方式为get 与上一行代码等价public Result list(){log.info(查询全部部门数据);return Result.success();} } 然后运行启动类在postman中测试 没毛病然后定义一个Service层对象调用Service层方法查询数据 package pearl.controller;import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import pearl.pojo.Dept; import pearl.pojo.Result; import pearl.service.DeptService;import java.util.List;Slf4j //定义一个日志记录对象 等价于下面对log对象的定义1. RestController public class DeptController { // 1.定义一个日志记录对象 // 1.private static Logger log LoggerFactory.getLogger(DeptController.class);Autowired//定义一个Service层对象private DeptService deptService;// RequestMapping(value /depts,method RequestMethod.GET)//指定请求方式为getGetMapping(/depts)// 指定/depts路由的请求方式为get 与上一行代码等价public Result list(){log.info(查询全部部门数据);// 调用service查询部门数据ListDept deptList deptService.list();//此时service层中还没定义该方法需要返回Service层中定义该方法return Result.success(deptList);} }此时DeptService中还没有查询全部数据的list()方法所以现在去DeptService中定义list()接口 /** 查询全部部门数据* */ListDept list(); 然后去 DeptService中定义list()的实现方法 即定义一个mapper层对象调用mapper层方法查询数据 package pearl.service.impl;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import pearl.mapper.DeptMapper; import pearl.pojo.Dept;import java.util.List;Service public class DeptService implements pearl.service.DeptService {// 定义一个Mapper层对象Autowiredprivate DeptMapper deptMapper;Overridepublic ListDept list() {ListDept deptList deptMapper.list();//此时service层中还没定义该方法需要返回Service层中定义该方法return deptList;} }此时mapper层中没有list()方法需要我们现在去DeptMapper中定义list()接口 /** 查询全部部门数据* */Select(select * from dept)ListDept list(); 由于该SQL语句较简单所以直接使用注解方式配置 现在需要按mapper--service---controller的路径去查看返回数据是否正确 然后运行启动类查看查询结果 完成 3.2 前后端联调 前后端联调将前端工程、后端工程都启动起来然后访问前端工程通过前端工程访问服务程序进而进行调试 1.将资料中提供的“前端工程”文件中的压缩包拷贝到一个没有中文不带空格的目录下解压 2.启动nginx访问测试http://localhost:90  --ngix占用的是90端口 点击文件中的nginx.exe 然后通过任务管理器的详细信息查看nginx是否启动完成 然后在浏览器访问http://localhost:90进入前端页面 3.3 删除部门 EmpController编写删除函数调用Service删除接口 // 删除DeleteMapping(/depts/{id})public Result delete(PathVariable Integer id){ //PathVariable 表示绑定路径中的参数idlog.info(删除id为id的数据);deptService.delete(id);return Result.success();} PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中 URL 中的 {xxx} 占位符可以通过PathVariable(“xxx“) 绑定到操作方法的入参中  EmpService接口 /** 根据ID删除数据* */void delete(Integer id); EmpService实现类编写删除函数调用mapper 层删除接口 Overridepublic void delete(Integer id){deptMapper.delete(id);return ;} EmpMapper: 编写删除接口与SQL语句 Delete(delete from dept where id #{id})void delete(Integer id); 启动测试类在postman中测试接口  完成 3.4 新增部门 新增部门逻辑与前面相似 注意新增部门时使用RequestBody 将请求参数封装到实体类中再在service层的实现方法类中补全实体类的属性值在执行插入到数据库的操作 EmpController: // 新增部门PostMapping(/depts)public Result insert(RequestBody Dept dept){//RequestBody 将获取到的请求参数封装到实体类dept中log.info(新增部门dept);deptService.insert(dept);return Result.success();} EmpService接口 /** 新增数据* */void insert(Dept dept); EmpService实现类 Overridepublic void insert(Dept dept) {dept.setCreateTime(LocalDateTime.now());//补全dept中的属性dept.setUpdateTime(LocalDateTime.now());deptMapper.insert(dept);} EmpMapper Insert(insert into dept (name,create_time,update_time) values(#{name},#{createTime},#{updateTime}))void insert(Dept dept); 运行完成 3.5 根据ID查询数据 EmpController: /** 根据ID查询* */GetMapping(/depts/{id})public Result selectById(PathVariable Integer id){log.info(获取id为id的数据);Dept dept deptService.selectById(id);return Result.success(dept);} 注意这里路径中携带参数一定要使用PathVariable注解绑定 路径中的参数 EmpService接口 /** 根据ID查询数据* */Dept selectById(Integer id); EmpService实现类 Overridepublic Dept selectById(Integer id){Dept dept deptMapper.selectById(id);return dept;} EmpMapper Select(select * from dept where id #{id})Dept selectById(Integer id); 3.5 修改部门 EmpController: /** 修改部门* */PutMapping(/depts)public Result update(RequestBody Dept dept){log.info(修改部门dept);deptService.update(dept);return Result.success();} EmpService接口 /** 修改部门* */void update(Dept dept);EmpService实现类 Overridepublic void update(Dept dept){dept.setUpdateTime(LocalDateTime.now());deptMapper.update(dept);} EmpMapper Update(update dept set name #{name}, update_time #{updateTime} where id #{id})void update(Dept dept); 完成  编辑之前 点击编辑 这里会自动回显利用的是通过ID查询数据功能 编辑完成后 此时部门管理的操作已经完成了返回来看我们DeptController文件中还可以优化 优化前 package pearl.controller;import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.annotations.Insert; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import pearl.pojo.Dept; import pearl.pojo.Result; import pearl.service.DeptService;import java.util.List;Slf4j //定义一个日志记录对象 等价于下面对log对象的定义1. RestController public class DeptController { // 1.定义一个日志记录对象 // 1.private static Logger log LoggerFactory.getLogger(DeptController.class);Autowired//定义一个Service层对象private DeptService deptService;/** 查询* */ // RequestMapping(value /depts,method RequestMethod.GET)//指定请求方式为getGetMapping(/depts)// 指定/depts路由的请求方式为get 与上一行代码等价public Result list(){log.info(查询全部部门数据);// 调用service查询部门数据ListDept deptList deptService.list();//此时service层中还没定义该方法需要返回Service层中定义该方法return Result.success(deptList);}/** 根据ID查询* */GetMapping(/depts/{id})public Result selectById(PathVariable Integer id){log.info(获取id为id的数据);Dept dept deptService.selectById(id);return Result.success(dept);}/** 删除* */DeleteMapping(/depts/{id})public Result delete(PathVariable Integer id){ //PathVariable 表示绑定路径中的参数idlog.info(删除id为id的数据);deptService.delete(id);return Result.success();}/** 新增部门* */PostMapping(/depts)public Result insert(RequestBody Dept dept){//RequestBody 将获取到的请求参数封装到实体类dept中log.info(新增部门dept);deptService.insert(dept);return Result.success();}/** 修改部门* */PutMapping(/depts)public Result update(RequestBody Dept dept){log.info(修改部门dept);deptService.update(dept);return Result.success();}}由于该文件下的路径都是在/depts路径下所以就把这部分抽出类简化代码 完整的请求路径为类上RequestMappering的路径方法前的路径 简化后的代码如下  优化后 package pearl.controller;import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.annotations.Insert; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import pearl.pojo.Dept; import pearl.pojo.Result; import pearl.service.DeptService;import java.util.List;Slf4j RequestMapping(/depts) RestController public class DeptController {Autowired//定义一个Service层对象private DeptService deptService;/** 查询* */GetMapping// 指定/depts路由的请求方式为get 与上一行代码等价public Result list(){log.info(查询全部部门数据);// 调用service查询部门数据ListDept deptList deptService.list();//此时service层中还没定义该方法需要返回Service层中定义该方法return Result.success(deptList);}/** 删除* */DeleteMapping(/{id})public Result delete(PathVariable Integer id){ //PathVariable 表示绑定路径中的参数idlog.info(删除id为id的数据);deptService.delete(id);return Result.success();}/** 新增部门* */PostMappingpublic Result insert(RequestBody Dept dept){//RequestBody 将获取到的请求参数封装到实体类dept中log.info(新增部门dept);deptService.insert(dept);return Result.success();}}总结Controller层参数接收 参数格式路径参数 使用 PathVariable 表示绑定路径中的参数id eg1: DeleteMapping(/{id})public Result delete(PathVariable Integer id) 参数格式application/json 使用RequestBody 将获取到的请求参数封装到实体类中 eg: 请求参数是Dept类的部分属性值PostMappingpublic Result insert(RequestBody Dept dept) 参数格式queryString RequestParam(defaultValue 1) 设置默认值 下面的参数名称和类型一定要和文档中的保持一致否则传输不了数据 eg: public Result selectByPage(RequestParam(defaultValue 1) Integer page, RequestParam(defaultValue 5) Integer pageSize)4、员工管理 4.1 分页查询 分页查询语法 -- 参数1 b: 起始索引  页码-1* l -- 参数2 l: 查询返回记录数 每页展示的记录数 select * from emp limit b,l; 首先查看接口文档发现需要返回的数据类型是Json文件包含总记录数和数据列表 我们最好的选择就是把记录数和数据列表封装成一个实体类然后再返回给前端 PageBean: package pearl.pojo;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.util.List;Data NoArgsConstructor AllArgsConstructor public class PageBean {private Long total;//总记录数private List rows;//数据列表 }EmpController: //接收前端的请求参数并返回Result型数据 package pearl.controller;import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import pearl.pojo.PageBean; import pearl.pojo.Result; import pearl.service.EmpService;RestController Slf4j public class EmpController {Autowiredprivate EmpService empService;/** 分页查询* */GetMapping(/emps) //RequestParam(defaultValue 1) 设置默认值public Result selectByPage(RequestParam(defaultValue 1) Integer page, //注意这里的参数名称一定要和文档中的保持一致否则肯传输不了数据RequestParam(defaultValue 5) Integer pageSize){log.info(查询数据第{}页{}条数据,page,pageSize);PageBean pageBean empService.selectByPage(page,pageSize);return Result.success(pageBean);} }EmpService接口 /** 分页查询* */PageBean selectByPage(Integer page, Integer pageSize); EmpService实现类 Autowiredprivate EmpMapper empMapper;/** 分页查询* */Overridepublic PageBean selectByPage(Integer page, Integer pageSize) {ListEmp rows empMapper.selectByPage((page-1)*pageSize,pageSize);Long total empMapper.count();final PageBean pageBean new PageBean(total,rows);return pageBean;} EmpMapper: /** 分页查询获取列表数据* */Select(select * from emp limit #{page},#{pageSize})ListEmp selectByPage(Integer page, Integer pageSize);/** 查询记录数* */Select(select count(*) from emp)Long count(); 完成 4.2 分页查询插件-PageHelper 使用PageHelper插件实现分页查询功能 pom文件中导入依赖 !-- pagehelper分页插件依赖 --dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper-spring-boot-starter/artifactIdversion1.4.0/version/dependency EmpController 与EmpService接口代码不变 EmpService实现类 Overridepublic PageBean selectByPage(Integer page, Integer pageSize) { // 1. 设置分页参数PageHelper.startPage(page,pageSize); // 2. 执行查询ListEmp empList empMapper.list();PageEmp p (PageEmp) empList; // 3. 封装成bean对象PageBean pageBean new PageBean(p.getTotal(),p.getResult());return pageBean;} EmpMapper: /** 分页查询-使用PageHelper插件* */Select(select * from emp)public ListEmp list(); 完成 4.3 分页查询带条件 条件如上所示我们需要更改EmpController中的参数 EmpController GetMapping(/emps) //RequestParam(defaultValue 1) 设置默认值public Result selectByPage(RequestParam(defaultValue 1) Integer page, //注意这里的参数名称一定要和文档中的保持一致否则肯传输不了数据RequestParam(defaultValue 5) Integer pageSize,String name, Short gender,DateTimeFormat(pattern yyyy-MM-dd) LocalDate begin,//DateTimeFormat指定日期格式DateTimeFormat(pattern yyyy-MM-dd) LocalDate end){log.info(查询数据第{}页{}条数据,{},{},{},{},page,pageSize,name,gender,begin,end);PageBean pageBean empService.selectByPage(page,pageSize,name,gender,begin,end);return Result.success(pageBean);} EmpService接口也需要增加参数 /** 分页查询-带条件* */PageBean selectByPage(Integer page, Integer pageSize, String name, Short gender,LocalDate begin, LocalDate end); EmpService实现类参数 Overridepublic PageBean selectByPage(Integer page, Integer pageSize, String name, Short gender,LocalDate begin, LocalDate end) { // 1. 设置分页参数PageHelper.startPage(page,pageSize); // 2. 执行查询ListEmp empList empMapper.list(name,gender,begin,end);PageEmp p (PageEmp) empList; // 3. 封装成bean对象PageBean pageBean new PageBean(p.getTotal(),p.getResult());return pageBean;} EmpMapper接口 public ListEmp list(String name, Short gender,LocalDate begin, LocalDate end);由于条件参数非必须传递所以使用动态SQL配置在XML文件中 EmpMapper.xml ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacepearl.mapper.EmpMapperselect idlist resultTypepearl.pojo.Empselect * from empwhereif testname ! null and name ! name like concat(%, #{name},%)/ifif testgender ! nulland gender #{gender}/ifif testbegin ! null and end ! nulland entrydate between #{begin} and #{end}/if/where/select /mapper 完成! 4.4 删除员工 具体代码如下不做过多描述  4.5 新增员工 具体代码如下不做过多描述
http://www.hkea.cn/news/14285088/

相关文章:

  • python 兼职网站开发新乡市网站建设电脑培训班
  • 网站建设公司公司介绍商标生成器在线制作
  • 做装修的人到什么网站找工作设计平台软件
  • 敬请期待是什么意思seo排名优化是什么
  • 广州网站搜索排名医疗网站建设平台价格
  • 成都公司网站seo酒店网站建设方案书
  • 深圳做微信网站多少钱可不可以异地建设网站
  • 网站标题 关键字怎么设置代码立即优化在哪里
  • 设计网站会员哪个好用信息网站开发合同
  • 个人网站建设怎么样网站微信分享怎么做
  • 网站建设哪家专业唯品会是哪做的网站
  • 青县建设银行网站网站建设高清图片
  • 做抛物线的网站高端企业网站建设服务商
  • 南昌网站页面优化网站每天更新多少文章
  • 网站的加盟代理网络策划与营销
  • 工业园做网站的公司新余网站建设公司
  • 公司网站经典案例乐清做网站价格
  • 手机网站建设推广方案pptps毕业设计做网站界面
  • 网站内容页模板wordpress 调用页面
  • wordpress 菜单加图标广州seo工程师
  • 北京建设银行纪念钞预定官方网站摄影网站设计素材
  • 泉州住房和城乡建设局网站电子印章手机在线制作软件
  • 宿州市住房和城乡建设局网站微信h5商城网站
  • 广州网站开发费用wordpress下载按钮
  • 成都市成华区建设局官方网站离我最近的电脑培训中心
  • 福建省城乡建设厅网站新浪微博做wordpress图床
  • 什么服装网站做一件代发建设商务网站的目的
  • 用asp怎么做网站中国建设银行官方网站下载
  • 做外贸 需要做网站吗工商营业执照网上注册
  • 山西网站建设开发团队天津房地产网站建设