limit实现分页思考:为什么需要分页? 在学习mybatis等持久层框架的时候,会经常对数据进行增删改查操作,使用最多的是对数据库进行查询操作,如果查询大量数据的时候,我们往往使用分页进行查询,也就是每次处理小部分数据,这样对数据库压力就在可控范围内。
使用Limit实现分页123456789101112#语法SELECT * FROM table LIMIT stratIndex,pageSize SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 #为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1: SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last. #如果只给定一个参数,它表示返回最大的记录行数目: SELECT * FROM table LIMIT 5; //检索前 5 个记录行 #换句话说,LIMIT n 等价于 LIMIT 0,n。
步骤:
修改Mapper文件
123<select id="selectUser ...
面向接口编程
大家之前都学过面向对象编程,也学习过接口,但在真正的开发中,很多时候我们会选择面向接口编程
根本原因 : 解耦 , 可拓展 , 提高复用 , 分层开发中 , 上层不用管具体的实现 , 大家都遵守共同的标准 , 使得开发变得容易 , 规范性更好
在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现自己的,对系统设计人员来讲就不那么重要了;
而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作内容。面向接口编程就是指按照这种思想来编程。
关于接口的理解
接口从更深层次的理解,应是定义(规范,约束)与实现(名实分离的原则)的分离。
接口的本身反映了系统设计人员对系统的抽象理解。
接口应有两类:
第一类是对一个个体的抽象,它可对应为一个抽象体(abstract class);
第二类是对一个个体某一方面的抽象,即形成一个抽象面(interface);
一个体有可能有多个抽象面。抽象体与抽象面是有区别的。
三个面向 ...
namespace
将上面案例中的UserMapper接口改名为 UserDao;
将UserMapper.xml中的namespace改为为UserDao的路径 .
再次测试
结论
配置文件中namespace中的名称为对应Mapper接口或者Dao接口的完整包名,必须一致!
select
select标签是mybatis中最常用的标签之一
select语句有很多属性可以详细配置每一条SQL语句
SQL语句返回值类型。【完整的类名或者别名】
传入SQL语句的参数类型 。【万能的Map,可以多尝试使用】
命名空间中唯一的标识符
接口中的方法名与映射文件中的SQL语句ID 一一对应
id
parameterType
resultType
根据id查询用户在UserMapper中添加对应方法123456public interface UserMapper { //查询全部用户 List<User> selectUser(); //根据id查询用户 User selectUserById(int id);}
在UserMappe ...
JDBC,通过java来操作数据库https://jsd.onmicrosoft.cn/gh/LuckyTiger12138/images//img/202311121855703.png
JDBC概述 JDBC API允许用户访问任何形式的表格数据,尤其是存储在关系数据库中的数据,JDBC其实是一套接口,定义了java操作数据库的规范,各家数据库厂商,想要使用java语言,跟自家数据库建立连接,需要自己去实现驱动,数据库厂商写的这套实现类称为数据库驱动。
操作流程
导入数据库厂商写的驱动,也就是jar包
12345678910 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.41</version></dependency><dependency> <groupId>org.apache.commo ...
为什么需要数据库设计当数据库比较复杂时我们需要设计数据库
糟糕的数据库设计 :
数据冗余,存储空间浪费f
数据更新和插入的异常
程序性能差
良好的数据库设计 :
节省数据的存储空间
能够保证数据的完整性
方便进行数据库应用系统的开发
软件项目开发周期中数据库设计 :
需求分析阶段: 分析客户的业务和数据处理需求
概要设计阶段:设计数据库的E-R模型图 , 确认需求信息的正确和完整.
设计数据库步骤
收集信息
与该系统有关人员进行交流 , 座谈 , 充分了解用户需求 , 理解数据库需要完成的任务.
标识实体[Entity]
标识数据库要管理的关键对象或实体,实体一般是名词
标识每个实体需要存储的详细信息[Attribute]
标识实体之间的关系[Relationship]
三大范式问题 : 为什么需要数据规范化?不合规范的表设计会导致的问题:
信息重复
更新异常
插入异常
无法正确表示信息
删除异常
丢失有效信息
第一范式 (1st NF)
第一范式的目标是确保每列的原子性,如果每列都是不可再分的最小数据单元,则满足第一范式
第二范式(2nd NF)
第二范 ...
MySQL
未读事务什么是事务
事务就是将一组SQL语句放在同一批次内去执行
如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行
MySQL事务处理只支持InnoDB和BDB数据表类型
事务的ACID原则原子性(Atomic)
整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(ROLLBACK)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性(Consist)
一个事务可以封装状态改变(除非它是一个只读的)。事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务有多少。也就是说:如果事务是并发多个,系统也必须如同串行事务一样操作。其主要特征是保护性和不变性(Preserving an Invariant),以转账案例为例,假设有五个账户,每个账户余额是100元,那么五个账户总额是500元,如果在这个5个账户之间同时发生多个转账,无论并发多少个,比如在A与B账户之间转账5元,在C与D账户之间转账10元,在B与E之间转账15元,五个账户总额也应该还是500元,这就是保护性和不变性。
隔离性(Isolate ...
常用函数数据函数12345 SELECT ABS(-8); /*绝对值*/ SELECT CEILING(9.4); /*向上取整*/ SELECT FLOOR(9.4); /*向下取整*/ SELECT RAND(); /*随机数,返回一个0-1之间的随机数*/ SELECT SIGN(0); /*符号函数: 负数返回-1,正数返回1,0返回0*/
字符串函数1234567891011121314 SELECT CHAR_LENGTH('狂神说坚持就能成功'); /*返回字符串包含的字符数*/ SELECT CONCAT('我','爱','程序'); /*合并字符串,参数可以有多个*/ SELECT INSERT('我爱编程helloworld',1,2,'超级热爱'); /*替换字符串,从某个位置开始替换某个长度*/ SELECT LOWER('luckytiger'); /*小写*/ SELECT UPPER('luc ...
MySQL简介
概念 : 是现在流行的开源的,免费的 关系型数据库
历史 : 由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。
特点 :
免费 , 开源数据库
小巧 , 功能齐全
使用便捷
可运行于Windows或Linux操作系统
可适用于中小型甚至大型网站应用
官网 : https://www.mysql.com/安装MySQL这里建议大家使用压缩版,安装快,方便.不复杂.
软件下载
mysql5.7 64位下载地址:
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-winx64.zip
电脑是64位的就下载使用64位版本的!
安装步骤
下载后得到zip压缩包.
解压到自己想要安装到的目录,本人解压到的是E:\Environment\mysql-5.7.19
添加环境变量:我的电脑->属性->高级->环境变量
选择PATH,在其后面添加: 你的mysql 安装文件下面的bin文件夹
编辑 my.ini 文件 ,注意替换路径位置
不要手动创建data ...
Ngrok当我们做完web项目或者做到一半需要给别人展示的时候,我们可以使用Ngrok实现内网穿透让别人通过互联网登录我们网站。
如何注册
首先我们要到 ** Ngrok ** 的官网 http://www.ngrok.cc/,也可以百度搜索**Ngrok**,进入后我们点击注册注册一个账号。
然后我们开通一个通道,如果只是测试可以使用免费服务器但是速度会很慢,连的人越多越慢!!!
Ngrok的Windows使用教程1、下载客户端根据自己的操作系统去下载对应的 客户端
2、启动隧道
下载之后得到两个文件,可以通过cmd命令行进到sunny.exe所在的目录执行
1sunny.exe clientid 隧道id
多个隧道同时启动
1sunny.exe clientid 隧道id,隧道id
另一种方式通过 Sunny-Ngrok启动工具.bat 启动,直接输入隧道id就好了
启动成功界面如下