2024年7.9-7.19学习总结/暑假day12-22

2024年7.9-7.19学习总结/暑假day12-22

javaweb

java 04-09~10-01

day05-SpringBootWeb请求响应

springweb接收请求

image-20240719215551430

参数传递:在controller层编写函数

@RequestMapping 注解是 Spring MVC 框架中的一个控制器映射注解,用于将请求映射到相应的处理方法上。具体来说,它可以将指定 URL 的请求绑定到一个特定的方法或类上,从而实现对请求的处理和响应

@RequestMapping("/simpleParam")
public String simpleParam(@RequestParam(name = "name") String username , Integer age)
{
    System.out.println(username + " : " + age);                                             return "OK";
}

image-20240719215732583

三层架构和分层解耦

image-20240719220244907

day06~07-MySQL

sql语句分类

分类 说明
DDL(data defination language) 数据定义语言,用来定义数据库对象
DML(data maniqulation language) 数据操作语言,用来对数据库表内数据增删改查
DQL(data query language) 数据查询语言,用来查询数据库中表的记录
DCL(data control language) 用的不多,用于创建用户,管理权限

DDL

create table  表名(
	字段1  字段类型  [ 约束 ]  [ comment  字段1注释 ] ,
	......
	字段n  字段类型  [ 约束 ]  [ comment  字段n注释 ] 
) [ comment  表注释 ] ;


约束 描述 关键字
非空约束 限制该字段值不能为null not null
唯一约束 保证字段的所有数据都是唯一、不重复的 unique
主键约束 主键是一行数据的唯一标识,要求非空且唯一 primary key
默认约束 保存数据时,如果未指定该字段值,则采用默认值 default
外键约束 让两张表的数据建立连接,保证数据的一致性和完整性 foreign key

主要在idea中操作数据库

DML

INSERT语句
指定字段添加数据:insert into 表名 (字段名1, 字段名2) values (值1, 值2);
全部字段添加数据:insert into 表名 values (值1, 值2, ...);
批量添加数据(指定字段):insert into 表名 (字段名1, 字段名2) values (值1, 值2), (值1, 值2);
批量添加数据(全部字段):insert into 表名 values (值1, 值2, ...), (值1, 值2, ...);
UPDATE语句
修改数据:update 表名 set 字段名1 = 值1 , 字段名2 = 值2 , .... [ where 条件 ] ;
DELETE语句
删除数据:delete from 表名 [ where 条件 ];

DQL

不详细写了,贴张图吧

image-20240719221328431

day08-MySQL-Mybatis入门

mybatis使用示例

1.准备好数据库

2.引入mybatis依赖

3.编写sql语句

@Mapper
public interface UserMapper {
    @Select("select *  from user")    
 	public List<User> list();
}

4.单元测试

@SpringBootTest
class SpringbootMybatisQuickstart1ApplicationTests {
	@Autowired
	private UserMapper userMapper;
	
    @Test
    public void test1(){
        List<User> userList = userMapper.list();
        userList.stream().forEach(user -> {
            System.out.println(user);
        });
    }
}

示意图:

image-20240719222020163

lombok

image-20240719222110677

day09-Mybatis

1.准备

image-20240719222310064

2.编写根据主键删除的接口mapper

image-20240719222337446

预编译sql与占位符:

作用是可以防止sql注入

image-20240719222412008

3.编写新建员工的接口mapper

4.编写更新员工信息的接口mapper

image-20240719222654620

5.编写查询员工的接口mapper,返回员工信息列表

image-20240719222832935

数据封装使用mybatis自带的开启驼峰命名规则

#开启驼峰命名自动映射,即从数据库字段名 a_column 映射到Java 属性名 aColumn。
    
    mybatis.configuration.map-underscore-to-camel-case=true

做项目

用户中心项目,前端使用ant-design现成模板,后端使用springboot+mysql+mybatis,ssm框架。

前端前期处理

去ant-design官网找快速开始文档

在文件夹中执行命令

# 使用 npm
npm i @ant-design/pro-cli -g
pro create myapp


#选择simple框架
? 🚀 要全量的还是一个简单的脚手架? (Use arrow keys)
❯ simple
  complete



$ cd myapp && tyarn
// 或
npm install
#用npm install

至此,ant-design框架和相关依赖已经准备完成,在webstorm中打开执行package.json中的start脚本即可,然后访问8000端口就能看到初始界面

后续删除一些不用的组件,包括手机号登陆,以及ant-design自带的logo等,改成自己的。

建表

create table user
(
    id           bigint auto_increment primary key,
    username     varchar(256)                       null comment '用户昵称',
    userAccount  varchar(256)                       null comment '账号',
    avatarUrl    varchar(1024)                      null comment '用户头像',
    gender       tinyint                            null comment '性别',
    userPassword varchar(512)                       not null comment '密码',
    email        varchar(512)                       null comment '邮箱',
    userStatus   int      default 0                 null comment '状态 0-正常',
    phone        varchar(128)                       null comment '电话',
    createTime   datetime default CURRENT_TIMESTAMP null comment '创建时间',
    updateTime   datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新时间',
    isDelete     tinyint  default 0                 not null comment '是否删除'
)
    comment '用户表';

右键数据库中的user表直接MybatisX-generator,mybatis会自动帮忙生成相应的类,方法和接口。

编写后端代码

先实现register功能,包括

// 1.校验

// 2.加密

// 3.插入数据

package com.yupi.usercenter.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yupi.usercenter.model.domain.User;
import com.yupi.usercenter.service.UserService;
import com.yupi.usercenter.Mapper.UserMapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;

import javax.annotation.Resource;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
* 用户服务实现类
*
* @author yupi
*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User>
    implements UserService{

    @Resource
    private  UserMapper userMapper;

    @Override
    public long userRegister(String userAccount, String userPassword, String checkPassword) {
    // 1.校验
    if (StringUtils.isAnyBlank(userAccount, userPassword, checkPassword)) {
        return -1;
    }
    if (userAccount.length() < 4) {
        return -1;
    }
    if (userPassword.length() < 8 || checkPassword.length() < 8){
        return -1;
    }

    // 账户不能包含特殊字符
    String validPattern = "\\pP|\\pS|\\s+";
    Matcher matcher = Pattern.compile(validPattern).matcher(userAccount);
    if (matcher.find()) {
        return -1;
    }
    // 密码和校验密码相同
    if (!userPassword.equals(checkPassword)) {
        return -1;
    }

    // 账户不能重复
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.eq("userAccount", userAccount);
    long count = userMapper.selectCount(queryWrapper);
    if (count > 0) {
        return -1;
    }
    // 2.加密
    final String SALT = "yupi";
    String encryptPassword = DigestUtils.md5DigestAsHex((SALT + userPassword).getBytes());
    // 3.插入数据
    User user = new User();
    user.setUserAccount(userAccount);
    user.setUserPassword(encryptPassword);
    boolean saveResult = this.save(user);
    if (!saveResult) {
        return -1;
    }
        return user.getId();
    }
}

碎碎念

上班+学习确实有点累,不过还算挺充实的吧,也确实有不少收获,上下班坐地铁还得拿出手机刷牛客上的java题和操作系统题,因为java是速成的,而且操作系统学校也没教,像jvm虚拟机,接口之类的不太清楚,后面看javaguide补一补。找工作居然还要刷题,真是梦回初高中了。初高中的时候在路上刷猿题库,刷百词斩。高考考完刷科目一,现在刷牛客。我真的很感慨,活到现在一直在做题,看似练就了一身应试的本领,却也只是小镇做题家罢了。

posted @ 2024-07-19 22:49  vast_joy  阅读(19)  评论(0编辑  收藏  举报