Mybatis入门
修改历史: 2025-06-28 修改了部分错误,优化了文档结构 2025-07-01 修复了代码块sql语句无法高亮的问题 Mybatis入门 0.序 Mybatis是持久层(也就是三层架构中的Dao层)的一款框架,简化了JDBC的开发。内容来自视频->Day08-14. Mybatis-入门-快速入门程序_哔哩哔哩_bilibili。 1.入门 快速入门 开启一个模版程序,实现使用Mybatis查询所有用户数据 准备工作(创建springboot文件,定义实际类User,数据库表user) 添加mybatis相关依赖,配置mybatis(数据库连接信息) 编写SQL语句(注解/XML) 具体操作流程如下: 创建springboot文件:与springboot入门中的创建方法基本一致,注意要勾选Mybatis Framework和MySQL Driver依赖。 定义实际类:实际类要与数据库中user的字段保证一致,常见的几种类型对应:int->Integer,varchar->String,tinyint->Short,主要使用其包装类。同时声明相应的getset方法、构造器、toString方法。 在properties配置文件中加入以下内容,格式比较固定,url要根据相应的数据库名称确定,密码设定为自己的密码 1234spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/mybatisspring.datasource.username=rootspring.datasource.password=1234 编写SQL语句(注解/XML) 123456@Mapper//在运行时,MyBatis会扫描这个接口,并为其生成一个实现类对象(代理对象),并交给IOC管理public interface UserMapper { //查询 @Select("select * from user") public List<User> list();} 单元测试 123456789101112@SpringBootTest//springboot整合单元测试的注解class SpringbootMybatisQuickstartApplicationTests { @Autowired private UserMapper userMapper; @Test public void testListUser() { List<User> userList = userMapper.list(); for (User user : userList) { System.out.println(user); } }} 创建完成后的文件结构如图 配置SQL提示 在上边的SQL语句中,如果没有配置,那么就不会显示相应的提示,即使写错了也不会提醒,这对于开发是非常不利的。好在Idea中可以为其配置MySQL数据库连接。 选中SQL语句,右键,配置为MySQL语句 点击右侧边栏的数据库选项,点击加号,数据源选择MySQL,填写host、port、用户和密码、数据库 数据库连接池 数据库连接池是个容器,负责分配、管理数据库连接 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个 能够释放空闲时间超过最大空闲时间的连接,避免因为没有释放连接引起的数据库连接遗漏 好处:资源重用 提升系统响应速度...
SpringBoot入门
修改历史: 增加了Web入门的基础知识,完善了结构 SpringBoot入门 0.概述 本篇只是对springboot的基本使用的总结,学习视频->Day05-01. 请求响应-概述_哔哩哔哩_bilibili,使用postman进行调试。 1.Web入门 HTTP协议 概述 HTTP协议(HyperTextTransferProtocol),超文本传输协议,规定了浏览器和服务器之间数据传输的规则。 特点: TCP协议:面向连接,安全 基于请求-响应模型:一次请求对应一次响应 HTTP是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的 缺点:多次请求无法共享数据 优点:速度快 请求协议 请求数据包括三个部分: 请求行:请求数据第一行(请求方式,资源路径、协议) 请求头:第二行开始,格式key: value 请求体:POST请求,存放请求参数 两种请求方式对比: 请求方式-get:请求参数在请求行中,没有请求体。get请求大小是有限制的。 请求方式-post:请求参数在请求体中,post请求大小是没有限制的。 响应协议 响应数据包括三部分: 响应行:相应数据第一行(协议、状态码、描述) 响应头:key: value 响应体:存放响应数据 常见状态码: 状态码 描述 1xx 响应中 2xx 成功 3xx 重定向-重定向到其他地方;让客户端再发起一次请求以完成整个处理 4xx 客户端错误-处理发生错误,责任在客户端。如请求了不存在的资源、客户端未被授权、禁止访问 5xx 服务器错误-处理发生错误,责任在服务端。如程序抛出异常 目前主要了解:200 处理成功,404 请求资源不存在,500 服务器端异常 更多状态码见网站: 状态 | Status - HTTP 中文开发手册 - 开发者手册 - 腾讯云开发者社区-腾讯云 协议解析 服务器端要做的事情,一方面是要根据请求协议,解析浏览器发送的请求;另一方面是要根据响应协议,发送响应数据。 这种解析的工作较为固定,有不少Web服务器已经完成了这些工作,这样后端就只用关注业务逻辑的实现。常见的Web服务器有:Tomcat、IBM、jetty、WebLogic等 Tomcat服务器 具体内容暂时不用详细了解,SpringBoot已经内嵌了Tomcat服务器,所以不用专门下载。介绍在此省略 2.请求 此处请求的含义:后端接收来自浏览器端的请求指令,进行解析 简单参数 请求: GET指令:http://localhost:8080/simpleParam?name=miku&age=16 POST指令:http://localhost:8080/simpleParam请求体:name=Miku&age=16 Java代码: 原始方式: 12345678910//在原始的Web程序中,获取请求参数,需要通过HttpServletRequest对象手动获取@RequestMapping("/simpleParam")public String simpleRequest(HttpServletRequest request) { String name = request.getParameter("name");//需要与请求参数的key保持一致 String ageStr = request.getParameter("age");//需要与请求参数的key保持一致 int age = Integer.parseInt(ageStr); System.out.println("Name: " + name + ", Age: " + age); return "OK";}//繁琐,并且需要进行手动类型转换 SpringBoot方式: 简单参数,参数名与形参列表名相同,定义形参即可接收参数 12345@RequestMapping("/simpleParam")public String simpleRequest(int age,String name) { System.out.println(name + ":" + age); return...
Maven
Maven 概述 Maven是一款管理和构建Java项目的工具。基于POM(项目对象模型)的概念,通过一小段描述来管理项目 Maven坐标,唯一标识和定位一个项目 groupId:组织 artifactId:模块名称 version:版本 仓库:用于存储资源,管理jar包 本地仓库:自己计算机上的一个目录 中央仓库:由Maven团队维护的全球唯一的仓库 远程仓库:一般由公司团队搭建的私有仓库 使用顺序:本地仓库>远程仓库>中央仓库 依赖管理 依赖:指当前项目运行所需的jar包 配置依赖(在IDEA中) 在pom.xml中编写标签 在标签中使用引入坐标 定义坐标的groupId,artifactId,version 点击刷新按钮,引入最新加入的坐标 12345678<dependencyies> <dependency> <groupId></groupId> <artifactId></artifactId> <version></version> </dependency> ...</dependencyies> 依赖传递 依赖具有传递性 直接依赖:在当前项目中通过依赖配置建立的关系 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源 排除依赖:主动断开依赖的资源,被排除的资源无需指定版本 123456<exclusions> <exclusion> <groupId></groupId> <artifactId></artifactId> </exclusion></exclusions> 依赖范围 scope值 主程序 测试程序 打包(运行) 范例 compile(默认) Y Y Y log4j test - Y - junit provided Y Y - servlet-api runtime - Y Y jdbc驱动 可以通过下面的xml标签来设置依赖范围 1<scope>...</scope> 生命周期 每套生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段。(运行后面的阶段,前面的阶段也会运行) 生命周期阶段(常见) 常见生命周期阶段 clean 移除上一次构建生成的文件 compile 编译项目源代码 test 使用合适的单元测试框架运行测试 package 将编译后的文件打包,如:jar、war等 install 安装项目到本地仓库
MySQL
修改历史: 2025-07-01 修复了sql语句的代码快无法高亮的问题 MySQL-基础 数据库管理系统DBMS MySQL数据模型 客户端->DBMS->多个数据库->多个二维表 SQL语句 DDL(Data Definition Language)数据定义语言(数据库、表、字段) DML(Data Manipulation Language)数据操作语言 DQL(Data Query Language)数据查询语言 DCL(Data Control Language)数据控制语言,管理数据库用户,控制数据库的访问权限 DDL-数据定义 数据库操作 大类 语句 作用 查询 show databases 查询所有数据库 select database() 查询当前数据库 创建 create database [if not exists] 数据库名 (如果不存在)创建一个数据库 使用 use 数据库名; 使用数据库 删除 drop database [if exists] 数据库名 删除数据库 表操作-查询 语句 作用 show tables; 查询当前数据库所有表 desc 表名; 查询表结构 show create table 表名; 查询指定表的建表语句 表操作-创建 12345create table 表名( 字段1 字段类型 [约束] [comment 字段1注释], …… 字段n 字段类型 [约束] [comment 字段1注释])[comment 表注释]; 关于约束: 约束 描述 关键字 非空约束 限制字段值不能为null not null 唯一约束 保证字段所有数据唯一 unique 主键约束 主键是一行数据的唯一标识,非空且唯一 primary key 默认约束 字段未指定值则用默认值 default 外键约束 让两张表的数据建立连接 foreign key 字段数据类型 数值 类型 大小(byte) 描述 tinyint 1 小整数值 smallint 2 大整数值 mediumint 3 大整数值 int 4 大整数值 bigint 8 极大整数值 float 4 单精度浮点数 double 8 双精度浮点数 decimal 小数值(精确定点数) 例如double,需使用double(整个数的长度,小数部分长度) 字符串 类型 描述 char 定长字符串 varchar 变长字符串 tinyblob 不超过255个字符的二进制数据 tinytext 短文本字符串 blob 二进制形式的长文本数据 text 长文本数据 midiumblob 二进制形式的中等长度文本数据 midiumtext 中等长度文本数据 longblob 二进制形式的极大文本数据 longtext 极大文本数据 日期时间 大小 范围 格式 描述 date 3 1000-01-01至9999-12-31 YYYY-MM-DD 日期值 time 3 -838:59:59至838:59:59 HH:MM:SS 时间值或持续时间 year 1 1901至2155 YYYY 年份值 datatime 8 1000-01-01 00:00:00至9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值 timestamp 4 1970-01-01 00:00:01至2038-01-19 03:14:07 YYYY-MM-DD HH:MM:SS 混合日期和时间值,时间戳 修改、删除表结构 语言可以不掌握,但是要会图形化操作 DML-数据操作 添加数据: insert into 表名(字段1,字段2,……) values(值1,值2,……); 字符串应该和日期型数据应该包含在引号内 插入的数据大小,应该在字段的规定范围内 修改数据 update 表名 set 字段名1=值1,字段名2=值2,…[where 条件] 删除数据 delete from 表名 [where 条件] DQL-数据查询 基本查询: 基本查询 select 字段列表 from 表名; select * from 表名;(不建议在开发中使用这种方式,因为不直观) 起别名 select 字段 as ‘别名’ from 表名;as可省略 去重 select distinct 字段名称 from 表名; 条件查询: select 字段列表 from 表名...
主题~
一点牢骚 我自己的博客网站基本配置好了,选了张涩涩的miku当头图,或许这样能让我写代码和文的时候肾上腺素提升从而提高效率呢(bushi)。 好像很多技术党都有一个自己博客,我也就东施效颦一下,但是其实更多的原因还是因为他人,也就是跟风。一直以来,我好像都缺乏一个内源的动力和目标,也没有什么自己的想法和意志,一直都是在不停地模仿。但是那又如何呢? 我真的很讨厌自己去做选择,既没有能做出正确决定的视野,连做出决定的决心也没有。算了,我也不想过分自贬,就这样吧。 言归正传,用了一天半搭建的网站还是可以庆祝一下的,也是有了一个个人的空间,或许可以成为我之后若干年还活着的证明。 整体来讲,我想写一个是学习笔记,专业的技术文我也没有写的实力,还有就是一个经验积累,最后就是一些随想,当日记写呗就。 最后附一张可爱的公主殿下!(typora的图片直接插入功能太好用了)
