ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2022年8-22到8-26

2022-08-23 18:35:13  阅读:220  来源: 互联网

标签:语句 26 group 22 PageHelper 2022 查询 id select


8月22日

DTO

https://www.cnblogs.com/Gyoung/archive/2013/03/23/2977233.html
DTO Data Transfer Object,应用于表现层和应用层之间的数据交互,是为了前端UI的需要,而不是领域对象,比如Customer 中有FirstName,LastName,Address,假如果前端不需要显示Address,那么CustomerDTO也不需要包含Address。

PageHelper 实现分页

参考文章:https://zhuanlan.zhihu.com/p/344982068

  1. 首先引入PageHelper的Maven依赖
  2. SpringBoot配置文件中声明插件
  3. service实现类
@Service
public class QueryUser2 implements Query2 {
    @Autowired
    UserMapper userMapper;

    @Override
    public List<User> selectAll(int pageNum,int pageSize) {
        PageHelper.startPage(pageNum,pageSize);
        List<User> users = userMapper.selectAll();
        PageInfo<User> pageInfo = new PageInfo<>(users);
        return pageInfo.getList();
    }
}

只有紧跟PageHelper.startPage()的Sql语句才会执行分页。

PageHelper分页实现原理
1、PageHelper首先将前端传递的参数保存到page这个对象中
2、接着将page的副本存放入ThreadLoacl中,ThreadLocal很多地方叫做线程本地变量,为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。这样可以保证分页的时候,参数互不影响
3、PageHelper实现了mybatis提供的拦截器interceptor接口,调用其中的intercept方法,取得ThreadLocal的值
PageHelper在我们执行SQL语句之前动态的将SQL语句拼接了分页的语句,从而实现了从数据库中分页获取的过程。

数据库

数据库三范式

参考文章:数据库设计三大范式(简单易懂)-阿里云开发者社区 (aliyun.com)

第一范式:确保每列保持原子性,所有字段都是不可拆分的原子值。
假如果一个系统需要经常使用地址中的省份,那么就需要把省份从地址中拆分出来。

第二范式:确保每列都和主键相关,一个数据库表中只能保存一种数据。
设计一个订单信息表,因为订单中可能会有多种商品,所以将订单号与商品号作为联合主键。

对表进行拆分:

第三范式:确定表中的每列与主键直接相关
比如设计一个订单数据表时候,可以用一个外键和订单表建立相应的关系,而不可以在订单表中添加关于客户的其他信息。

虽然说外键可以保证数据的有效性,但是在进行数据的CURD时,都会降低外键的性能,所以不推荐使用,数据的有效性应该在逻辑层进行控制。

数据库SQL语句

条件查询
where语句,对表中数据进行筛选。
模糊查询:查询姓黄的学生

select * from students where name like '黄%'

% 表示0个或多个
_ 表示任意单个字符
[]表示括号内所列字符的一个
[^]表示不在括号内的一个

范围查询
in 表示在一个非连续的范围内
between ... and ... 表示在一个连续的范围内

优先级
小括号、not、比较运算符、逻辑运算符
and比or先运算

排序

select * from info order by id asc|desc [,score asc]

聚合函数
总数 count(*)
最大值 max(id)
最小值 min(id)
平均值 avg(id)
求和 sum(id)

分组
group by:将查询结果按照一个或多个字段进行分组,字段相同的为一组。
group by x,y 是将x相同y相同的数据放进一个分组。
group by + group_concat():group_concat()放置每一组内容集合。
group by + having :having只能用于group by

获取部分行

select * from 表名 limit start,count

连接查询
内连接:结果为两个表的数据
右连接:右表特有数据,左边不存在则为null
左连接:左表特有数据,右边不存在则为null

select * from 表1 inner\left\right join 表2

子查询
在⼀个 select 语句中,嵌⼊了另外⼀个 select 语句, 那么被嵌⼊的 select 语句称之为⼦ 查询语句。

8月23日

名词介绍

mybatis:持久层框架,封装了jdbc代码
mybatis-plus:愿景是成为 MyBatis 最好的搭档,就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍,只做增强,不做改变。

分页插件PageHelper

  1. pom文件

2.配置application.yaml

3.编写代码,在service实现类中进行编写代码。

单元测试

单元测试怎么写?

对service、mapper进行单元测试只需要覆盖路径,使用断言。
对controller进行单元测试使用MockMvc
https://www.cnblogs.com/pass-ion/p/14048785.html

8月24日

标签:语句,26,group,22,PageHelper,2022,查询,id,select
来源: https://www.cnblogs.com/handsometaoa/p/16617350.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有