三阶段Day11

1. 用户模块管理

1.1 利用MP实现分页查询

1.1.1 编辑UserController

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

1.1.4 编辑MP配置类

//命名规则: 类似于配置文件 则把这个类称之为"配置类"一般Config结尾
@Configuration //标识我是一个配置类(代替之前的xml文件)
public class MybatisPlusConfig {
    //铺垫: xml中通过标签管理对象,将对象交给Spring容器管理. <bean>
    //配置类: 将方法的返回值交给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/当前的状态信息.

1.2.2 业务接口说明

 

1.2.3 前端JS分析

  1. 作用域插槽 一般用在循环遍历时,获取单行数据.

 

        2.页面Ajax

1.2.4 编辑UserController

1.2.5 编辑UserService

1.3 用户新增

1.3.1 正则表达式

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

1.3.2 正则表达式语法

1.起始/结束

2.次数匹配

 

3.次数区间用法 {}
例子: 3{3,5} 333 3333 33333

 

 4.任意字符

 5.取值范围 []

 6.分组写法
案例: 需要匹配图片的类型 xxx.jgp 只要满足其中之一即可 (jpg|png|jpeg|gif)

1.3.3 正则表达式语法案例

  1. 校验手机号

 

 const phoneRege = /^1[23456789][0-9]{9}$/

 

 2.校验邮箱 语法: xxxxx@xxxx.xx

	const emailRege = /^[a-zA-Z0-9-_]+@[a-zA-Z0-9-_]+\.[a-zA-Z0-9-_]+$/

1.3.4 用户新增页面JS

1.页面JS

 2.页面URL地址

1.3.5 用户新增业务接口

1.3.6 编辑UserController

1.3.7 编辑UserService

1.4 数据自动填充

1.4.1 需求分析

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

1.4.2 数据自动填充功能

1.4.3 编辑POJO属性

说明: 设定POJO属性 什么时候实现自动填充.

 

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);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值