Java学习三阶段-Day13

1. 用户模块管理

1.1 利用MP实现分页查询

1.1.1 编辑UserController

Java学习三阶段-Day13_第1张图片

1.1.2 编辑UserService

 /**
     * 利用MP的方式实现分页查询
     * API说明: selectPage(arg1,arg2)
     * arg1:   MP中的分页对象 固定的
     * arg2:   MP分页中的条件构造器
     * @param pageResult
     * @return
     * 动态Sql: select * from user where username like "%admin%"
     * 条件: 如果用户传递query则拼接where条件 否则不拼接where条件
     */
    @Override
    public PageResult getUserList(PageResult pageResult) {//原始3个参数
        //1.定义MP的分页对象 arg1:页面   arg2:行数
        IPage iPage = new Page(pageResult.getPageNum(), pageResult.getPageSize());
        //2.构建查询条件构造器
        QueryWrapper queryWrapper = new QueryWrapper();
        //判断用户数据是否有效  有效 true   无效 false
        boolean flag = StringUtils.hasLength(pageResult.getQuery());
        queryWrapper.like(flag, "username", pageResult.getQuery());
        //经过MP分页查询将所有的分页(total/结果/页面/条数/xxx)数据封装到iPage对象
        iPage = userMapper.selectPage(iPage,queryWrapper);
        //从分页对象中获取总记录数
        long total = iPage.getTotal();
        //从分页对象中获取分页后的结果
        List<User> rows = iPage.getRecords();
        return pageResult.setTotal(total).setRows(rows);    //需要返回的是5个参数
    }

1.1.3 MP分页API

Java学习三阶段-Day13_第2张图片

1.1.4 编辑MP配置类

//命名规则: 类似于配置文件 则把这个类称之为"配置类"一般Config结尾
@Configuration //标识我是一个配置类(代替之前的xml文件)
public class MybatisPlusConfig {
    //铺垫: xml中通过标签管理对象,将对象交给Spring容器管理. 
    //配置类: 将方法的返回值交给Spring容器管理  @Bean注解.
    /**
     * 关于MP分页规则说明
     *   规则: 需要设定一个拦截器.将分页的Sql进行动态的拼接.
     *  Sql: 规则现在的Sql都支持Sql92标准!!!! 设计理念不同
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new 	  PaginationInnerInterceptor(DbType.MARIADB));
        return interceptor;
    }
}

1.2 状态修改

1.2.1 业务说明

说明: 当修改状态信息时,应该修改status属性, 启用-true/停用-false
修改条件: userId/当前的状态信息.
Java学习三阶段-Day13_第3张图片

1.2.2 业务接口说明

Java学习三阶段-Day13_第4张图片

1.2.3 前端JS分析

  1. 作用域插槽 一般用在循环遍历时,获取单行数据.
    Java学习三阶段-Day13_第5张图片
  2. 页面Ajax
    Java学习三阶段-Day13_第6张图片

1.2.4 编辑UserController

Java学习三阶段-Day13_第7张图片

1.2.5 编辑UserService

Java学习三阶段-Day13_第8张图片

1.3 用户新增

1.3.1 正则表达式

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

1.3.2 正则表达式语法

  1. 起始/结束
    Java学习三阶段-Day13_第9张图片
  2. 次数匹配
    在这里插入图片描述
  3. 次数区间用法 {}
    例子: 3{3,5} 333 3333 33333
    Java学习三阶段-Day13_第10张图片
  4. 任意字符
    在这里插入图片描述
  5. 取值范围 []
    Java学习三阶段-Day13_第11张图片
  6. 分组写法
    案例: 需要匹配图片的类型 xxx.jgp 只要满足其中之一即可 (jpg|png|jpeg|gif)
    在这里插入图片描述

1.3.3 正则表达式语法案例

  1. 校验手机号
 const phoneRege = /^1[23456789][0-9]{9}$/

   
   
     
     
     
     
  • 1
  1. 校验邮箱 语法: [email protected]
	const emailRege = /^[a-zA-Z0-9-_]+@[a-zA-Z0-9-_]+\.[a-zA-Z0-9-_]+$/

   
   
     
     
     
     
  • 1

1.3.4 用户新增页面JS

  1. 页面JS
    Java学习三阶段-Day13_第12张图片
  2. 页面URL地址
    Java学习三阶段-Day13_第13张图片

1.3.5 用户新增业务接口

Java学习三阶段-Day13_第14张图片

1.3.6 编辑UserController

Java学习三阶段-Day13_第15张图片

1.3.7 编辑UserService

Java学习三阶段-Day13_第16张图片

1.4 数据自动填充

1.4.1 需求分析

通过数据库进行 “更新” 操作,会修改数据库中的创建时间/修改时间. 每张表都有类似的操作. 所以应该抽取为一个公共API进行业务调用.
Java学习三阶段-Day13_第17张图片

1.4.2 数据自动填充功能

Java学习三阶段-Day13_第18张图片

1.4.3 编辑POJO属性

说明: 设定POJO属性 什么时候实现自动填充.
Java学习三阶段-Day13_第19张图片

1.4.4 实现MP自动填充

说明: MP对外暴露了一个自动填充的接口MetaObjectHandler ,用户只需要实现该接口,并且重写其中的方法.即可以实现自动填充的功能.

@Component  //将对象交给Spring容器管理 不属于C/S/M
public class MyMetaObjectHandler implements MetaObjectHandler {
    //入库操作时调用 created/updated
    //setFieldValByName(arg1,arg2,arg3)
    //arg1: 自动填充的字段名称   arg2: 自动填充的值   arg3: metaObject 固定写法
    @Override
    public void insertFill(MetaObject metaObject) {
        //设定时间变量
        Date date = new Date();
        this.setFieldValByName("created",date,metaObject);
        this.setFieldValByName("updated",date,metaObject);
    }
    //更新操作时调用 updated
    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updated",new Date(),metaObject);
    }
}

你可能感兴趣的:(mybatis,mybtatis-plus,Java学习三阶段,java,mybatis,Mybatis-Plus)