java_Web

开始进入学习java web部分

一、Socket技术

  1. 字节流传输
    使用bytes[] 封装字节进行传输数据

  2. 文件传输

  3. 浏览器访问
    使用http协议进行访问

二、MySQL数据库

  1. 环境
    Phpstydy+navicat

  2. 数据库使用

    • 注释
      -- # /* ..... */

    • 控制窗口
      配置bat自动进入数据库

      cd E:\phpstudy_pro\Extensions\MySQL5.7.26\bin
      e:
      mysql -uroot -padminn
      
      #pause
      

    在命令行中使用SQL语句需要注意分号 ;

    • SQL语句
      • DQL 数据查询语言 select * from where

        • 创建数据库
          create database study1;

          默认字符集不是utf8,需要带属性创建

        • 删除数据库
          drop database study1;

        • 带指定utf8字符集创建数据库
          create database study1 DEFAULT CHARSET utf8 COLLATE utd8_general_ci;

        • 创建表

        • SQL数据类型
          字符串

          • char 长度固定为n 字符不够长则填充空格
          • varchar 任意长度n且不固定 不能超过n 不会填充空格
            数字
          • smallint 存储小整数 范围在(-32768,32767)
          • int (-2147483648,2147483647)
          • bigint
          • float 浮点型
          • double 双浮点型
            日期
          • date 存储日期
          • time 时间
          • year 年份
          • datetime 混合存储日期+时间
        • 修改表
          use study1
          alter table teacher add sex enum('男','女','未知') not null default '男';
          image
          image

        • 删除表

          create table test(id int primary key);
          drop table test ;![image](uploading...)
          

          image

      • DML 数据操纵语言 insert update delete

        • 插入数据
          insert into 表名 values (数字,'字符','字符');
          insert into 表名(列名1,列名2,列名3) values (数字,'字符','字符');
          
        • 修改数据
          update 表明 set 列名='xxx' where 列名='xxx';
        • 删除数据
          delete from 表名
          delete from 表名 where 列名=xxx
        • 查询数据
          • DQL

            • 单表查询
              select * from 表名;
              select 列名 from 表名;
              • 去重 distinct
                select distinct 列名 from 表名;
              • 条件查询(in/not in)
                select * from 表名 where 列名=xxx;
                select * from 表名 where 列名 not in (字段1,字段2);
              • 模糊查询 (支持通配符)
                包含xxx的内容
                select * from 表名 where 列名 like `xxx`;
                不包含xxx的内容
                select * from 表名 where 列名 not like `xxx`;
              • 多条件查询(and/or/not)
                select * from 表名 where 列名1 not like `xxx` and 列名2 like 'zzz';
                select * from 表名 where 列名1 not like `xxx` or 列名2 like 'zzz';
            • 排序查询(asc/desc) 默认为空==asc正序
              select * from 表名 order by 列名 desc;
              select * from 表名 order by 列名1, 列名2 desc;
              // 先按照前面的规则排序 再按照后面的规则继续排
              select * from 表名 order by 列名1 desc, 列名2 asc;
            • 聚集函数
              select count(distinct 列名) from 表名 where 条件 //统计条件下的列名的行数
              select count(*) from 表名;// 统计有多少行数据
              count(*)统计所有信息
              count(distinct 列名) 去重统计
              sum() // 求和 需要数字类型
              avg() // 求平均值 需要是数字类型
              max() //最大值
              min() //最小值
            • 分组查询 group by
              select count(*) from 表名 group by 列名 // 根据列名统计总数
              image

            select count(*) from 表名 group by 列名 having 列名 = '' //统计 根据列名包含字段的方式组排
            image

            select count(*),sex from 表名 group by 列名 having 列名 = ''
            image

            • 分页 limit(默认为前开后闭)
              select * from 表名 limit (x,x1]
            • 多表查询
              // 笛卡尔积
              select * from 表1,表2
              //对自己查询笛卡尔积
              select * from 表1 别名1,表1 别名2
              //对自己取笛卡尔积例子
              select * from student stu1,student stu2;
              image
              // 只要sid相同的部分
              select * from student stu1,student stu2 where stu1.sid=stu2.sid;
              image
              // inner join 内连接 返回交集
              //表名 inner join teach on 条件
              // 意思是根据 外键表 查找学生对应的老师
              select * from student inner join teach on student.sid = teach.sid;
              image
              // 左连接 显示完整的左边和交集
              select *from student left join teach on student.sid = teach.sid;
              image
              // 右连接 显示完整的右边和交集
              // 联系三张表

            image

      • DDL 数据库定义 描述数据库中存储现实世界实体的语言,如何创建数据库,创建表

        • 1
      • DCL 数据库控制语言 grant deny revoke 只有 sysadmin,dbcreater, db_owner, db_securityadmin

        • 1

3. 设计数据库

  1. 规范
    • 数据库的每一列都是不可分割的基本数据项
    • 表中必须存在主键,其他属性必须完全依赖主键
    • 满足上一条的前提下,所有属性都不传递依赖于主键
    • BCNF
  2. 初步设计
    功能 账号密码 权限 crud
    老师 登录,上传,提交,修改,删除
    学院 登录,审阅,提交教学处,退回
    教学处 登录,审阅,提交打印,退回
    打印部 打印

2023年2月18日

mybatis是利用java的反射机制对jdbc进行深层封装

2023年2月19日

lombok注解生成映射中:
static没有setter和getter方法
如果强制生成 则出现 静态方法 getter和setter用法相同
public static void setName(String name){ Student.name = name; }
final没有setter方法

打印println是调用toString方法返回的内容

2023年2月21日

  • lombok (辣椒)
    注解一类
    • 常用
      • @Data
  • mybatis
    • mybatis-config.xml
    • sqlSessionFactoryBuilder
      image
      每个session互相隔离,SQL session可以创建多个

2023年2月28日

  • mybatis注解开发
    • 问题 报错 mapper is not known to the MapperRegistry.
      image
    • 问题原因 在工具类MybatisUtil中未修改映射路径
      image

如果存在多个不一样的构造时,需要用到@Param指定参数位置,当遇到基本类型和对象类型同时存在时,需要在接收的sql中详细指定引参数所属的引用类型

2023年3月2日

mapper动态代理机制 完全看不懂

posted @ 2023-01-30 20:44  rainsc  阅读(23)  评论(0编辑  收藏  举报