* SpringBoot 项目
* 依赖: 父工程 spring-boot-starter-parent
* 启动依赖: spring-boot-starter
* 单元测试: spring-boot-starter-test
* jdbc:
* mysql依赖: mysql-connector-java
* data-jdbc依赖: spring-boot-starter-data-jdbc 当添加 data-jdbc 依赖时会自动下载 HikariCp 依赖
*
* datasource连接数据库
* 数据库配置 :
* spring.datasource.url=jdbc:mysql://localhost:3306/jt?characterEncoding=utf8&serverTimezone=GMT%2B8
* spring.datasource.username=root
* spring.datasource.password=lvjing
*
* mybatis:
* 依赖: mybatis-spring-boot-starter
* 配置:mybatis.configuration.default-statement-timeout=30
* mybatis.configuration.map-underscore-to-camel-case=true
* mybatis.mapper-locations=classpath:/mapper/星/星.xml
* logging.level.com.cy=DEBUG
*
* SqlSession 连接数据库 Spring 框架会基于 MyBatis 框架底层配置,创建SqlSessionFactory 对象
*
* web:
* 依赖: spring-boot-starter-web
*
* 分页:
* 依赖: pagehelper-spring-boot-starter
*
*
*
* 插件:
* lombok:
* 1. 插件安装 2. 开启注解处理enable annotation processing 3. 添加依赖projectlombok
* .@Date setter/getter equals hashCode toString 除final修饰的
* .@NoArgsConstructor 无参构造
* .@AllArgsConstructor 全参构造
* .@Slf4j 日志对象
*
* 项目:
* 持久层:
* .1. pojo类 SysNotice 封装公告数据 --可以作为方法的参数传入 --也是方法的返回值
* .2. dao接口 SysNoticeDao 数据层接口及业务方法 @Mapper @Param @Select
* .@Mapper 就是告诉spring框架此接口实现由mybatis创建,并将其存储到spring容器
* .3. 映射文件 resources/mapper/sys/SysNoticeMapper.xml
* 文件头, 根元素( namespace 使得此映射文件和dao接口照应 )
* sql语句返回 增,删,改 --返回影响的行数 查 --返回表
* 业务层:
* .4. 接口 数据操作,日志记录,事务处理,缓存,权限
* .5. 实现类 重写接口所有方法进行具体实现 @service-描述分层架构中业务逻辑对象 注入持久层@Autowired
* 控制层:
* Spring Web SpringMVC依赖
* .6. 响应标准: JsonResult
* .7. controller类: @RestController @RequestMapping("/notice/")
* 1 @PostMapping @RequestBody 将post请求的json值赋值给pojo或map参数
* 2 @DeleteMapping("{ids}") @PathVariable 从url中取{}变量的值注入给参数
* 3 @GetMapping("{id}") @PathVariable
* 4 @GetMapping()
* 5 @PutMapping()
*
* .8. 全局异常处理: 多个控制层类具有 共性异常
* spring web中的全局异常处理
* .@RestControllerAdvice 描述的类为全局异常处理类
* .@Slf4j 日志注解 注入 log 的Logger对象
* .@ExceptionHandler() 异常处理方法
* 当Handler中出现异常 全局异常在DispatcherServlet中执行
*
*
* .9. 拦截器: 基于回调机制 在方法执行之前进行判断条件是否成立,
* spring mvc中的拦截器
* 1. 拦截器定义: 实现HandlerInterceptor接口 实现的拦截业务 时间拦截6-24 --返回的是boolean值 true通过,false拦截
* 2. 定义配置类 注册拦截器 实现WebMvcConfigurer 配置springmvc拦截器
* 拦截器 拦截程序 报错异常,在全局异常处理中获取到了异常 返回了JsonResult给客户端
*
*
* 分页:
* 依赖:
* 工具类: util
* 1. servletUtil获取请求对象
* 2. 分页查询逻辑 PageHelper.startPage(pageNum,pageSize)方法
* 参数,当前页数 一页条数
*
*
*
*
*
*
*----------------
* 向页面tbody中添加后端返回的数据
* var records = result.data.list;
* records.forEach( (item,i)=>$("tbody").append( doCreateRow(item,i)-一行一行添加 ) );
* function doCreateRow(item,i){
* return `<tr>
* <td>${i+1}</td>
* <td>${item.name}</td>
* <td>${item.sex='1'?'男':'女'}</td>
* <td>delete</td>
* </tr>`;
* }
* ----------------
* 页面实现
* 一 . jquery 实现
* .0. jquery页面加载完成函数
*
* .1. 页面加载完成 查询展示内容
* a. doGatNotices() 页面加载完执行方法
* 此方法中使用jquery的ajax方法进行请求 并对结果进行处理
* 在后端业务中实现了分页 初始化分页 把分页放在本地缓存中 LocalStorage
* a.b doHandleQueryResponseResult(result) 获取到结果 对结果进行处理 执行方法
* a.b.c.1. doHandleQueryError(result.message) 发生异常
* 出现异常 : 页面显示 没有找到页面 页码显示0/0
* a.b.c.2. doHandleQueryOk(result) 获取到结果-没有异常
* a.b.c.d.1. doSetTableBodyRows(result.data.list) 设置table内的内容
* 清空tbody中的内容
* forEach()迭代 把每一条数据添加到他tbody中每一行
* records = result.data.list
* records.forEach( (item,i)=>$("tbody").append( doCreateRow(item,i) ) );
* a.b.c.d.e doCreateRow(item,i) 把每条数据添加到行
* return `<tr>
* <td>${i+1}</td>
* <td>${item.title}</td>
* <td>${item.sex==1?'男':'女'}</td>
* </tr>`;
* a.b.c.d.2. doSetPagination(result) 设置分页部分的内容
* 初始化页面页码 获取页数和总页 result.data.pageNum pages
* 将页码值 放到浏览器缓存中 localStorage.setItem("pageCurrent",pageCurrent )
*
*
*
*
* .2. 分页事件
*
* .3. 条件查询
*
* .4. 删除操作
*
* .5. 新增操作
*
* .6. 更新操作
*
04notice实现
最新推荐文章于 2024-09-13 09:14:48 发布