首页
统计
关于
Search
1
Sealos3.0离线部署K8s集群
1,085 阅读
2
类的加载
741 阅读
3
Spring Cloud OAuth2.0
726 阅读
4
SpringBoot自动装配原理
691 阅读
5
集合不安全问题
586 阅读
笔记
Java
多线程
注解和反射
JVM
JUC
设计模式
Mybatis
Spring
SpringMVC
SpringBoot
MyBatis-Plus
Elastic Search
微服务
Dubbo
Zookeeper
SpringCloud
Nacos
Sentinel
数据库
MySQL
Oracle
PostgreSQL
Redis
MongoDB
工作流
Activiti7
Camunda
消息队列
RabbitMQ
前端
HTML5
CSS
CSS3
JavaScript
jQuery
Vue2
Vue3
Linux
容器
Docker
Kubernetes
Python
FastApi
登录
Search
标签搜索
Java
CSS
mysql
RabbitMQ
JavaScript
Redis
JVM
Mybatis-Plus
Camunda
多线程
CSS3
Python
Spring Cloud
注解和反射
Activiti
工作流
SpringBoot
Mybatis
Spring
html5
蘇阿細
累计撰写
389
篇文章
累计收到
4
条评论
首页
栏目
笔记
Java
多线程
注解和反射
JVM
JUC
设计模式
Mybatis
Spring
SpringMVC
SpringBoot
MyBatis-Plus
Elastic Search
微服务
Dubbo
Zookeeper
SpringCloud
Nacos
Sentinel
数据库
MySQL
Oracle
PostgreSQL
Redis
MongoDB
工作流
Activiti7
Camunda
消息队列
RabbitMQ
前端
HTML5
CSS
CSS3
JavaScript
jQuery
Vue2
Vue3
Linux
容器
Docker
Kubernetes
Python
FastApi
页面
统计
关于
搜索到
389
篇与
的结果
2020-06-11
分页和排序
-- 分页 LIMIT 和排序 ORDER BY-- 排序:升序ASC 降序DESC-- 语法:ORDER BY 通过哪个字段排序 怎么排-- 根据成绩排序SELECT s.studentno,studentname,subjectname,studentresult FROM student s INNER JOIN result r ON s.studentno = r.studentno INNER JOIN `subject` sub ON r.subjectno = sub.subjectno WHERE subjectname = '数据库结构-1' ORDER BY studentresult DESC;-- 分页-- 为什么要分页:缓解数据库压力,提升体验,瀑布流-- 语法: LIMIT 起始值,页面大小SELECT s.studentno,studentname,subjectname,studentresult FROM student s INNER JOIN result r ON s.studentno = r.studentno INNER JOIN `subject` sub ON r.subjectno = sub.subjectno WHERE subjectname = '数据库结构-1' LIMIT 0,5;-- 第一页 limit 0,5 (1-1)5-- 第二页 limit 5,5 (2-1)5-- 第三页 limit 10,5 (3-1)5-- 第N页 limit 0,5 (n-1)pageSize,pageSize0-- pageSize:页面大小-- (n-1)*pageSize:起始值-- n:当前页数-- (数据总条数-1)/页面大小=总页数-- 查询java第一学年课程成绩排名前10的学生,并且分数大于80的学生信息(学号,姓名,科目,成绩)SELECT s.studentno,studentname,subjectname,studentresult FROM student s INNER JOIN result r ON s.studentno = r.studentno INNER JOIN `subject` sub ON r.studentno = sub.subjectno WHERE subjectname = 'JAVA第一学年' AND studentresult > 80 ORDER BY studentresult DESC LIMIT 0,10;
2020年06月11日
47 阅读
0 评论
0 点赞
2020-06-11
自连接
CREATE TABLE `category` ( `categoryid` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主题id', `pid` INT(11) COMMENT '父id', `categoryname` VARCHAR(50) COMMENT '主题名字', PRIMARY KEY (`categoryid`) ) ENGINE = INNODB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;TRUNCATE `category`; INSERT INTO `category` (`categoryid`,`pid`,`categoryname`); VALUES('2','1','信息技术'), ('3','1','软件开发'), ('4','3','数据库'), ('5','1','美术设计'), ('6','3','web开发'), ('7','5','ps技术'), ('8','2','办公信息');-- 自连接,核心:一张表拆为两张一样的表-- 查询父子信息:把一张表看作两张一摸一样的表SELECT a.categoryname,b.categoryname FROM category a,category b WHERE a.categoryid = b.pid;-- 查询学生所属的年级SELECT studentno,studentname,gradename FROM student s INNER JOIN grade g ON s.gradeid = g.gradeid;-- 查询参加了 数据库结构-1 考试的同学信息:学号,姓名,科目,成绩SELECT s.studentno,studentname,subjectname,studentresult FROM student s INNER JOIN result r ON s.studentno = r.studentno INNER JOIN `subject` sub ON r.subjectno = sub.subjectno WHERE subjectname = '数据库结构-1';
2020年06月11日
60 阅读
0 评论
0 点赞
2020-06-10
DQL操作
-- 函数 CONCAT(a,b)SELECT CONCAT('姓名:',studentname) AS 新名字 FROM student;-- 去重 DISTINCT(重复的数据只显示一条)SELECT * FROM result; -- 查询全部的考试成绩 SELECT studentno FROM result; -- 查询参加考试的同学 SELECT DISTINCT studentno FROM result; -- 去重 SELECT VERSION(); -- 查询系统版本 (函数) SELECT 100*99-100 AS 计算结果; -- 计算 (表达式) SELECT @@auto_increment_increment; -- 查询自增的步长 (变量)-- 考试成绩+1SELECT studentno,studentresult FROM result; SELECT stdentno,studentresult+1 AS '加分' FROM result;-- WHERE条件子句-- 作用:检索数据中符合条件的值-- 搜索的条件由一个或多个表达式组成,结果为布尔值-- 查询成绩在80-100之间-- ANDselect studentno,studentresult FROM result WHERE studentresult>=80 AND studentresult<=100;-- &&select studentno,studentresult FROM result WHERE studentresult>=80 && studentresult<=100;-- 模糊查询(区间)select studentno,studentresult FROM result WHERE studentresult BETWEEN 80 AND 100;-- 除了1000号学生之外的成绩select studentno,studentresult FROM result WHERE studentno != 1000;select studentno,studentresult FROM result WHERE NOT studentno = 1000;-- 模糊查询-- 查询姓刘的同学SELECT studentno,studentname FROM student WHERE studentname like '刘%';-- 查询姓刘的同学,名字后边只有一个字的SELECT studentno,studentname FROM student WHERE studentname like '刘_';-- 查询姓刘的同学,名字后边只有两个字的SELECT studentno,studentname FROM student WHERE studentname like '刘__';-- 查询名字中有华的同学SELECT studentno,studentname FROM student WHERE studentname like '%华%';-- 查询1000,1001,1002学号的学生信息SELECT * FROM student WHERE studentno IN (1000,1001,1002);-- 查询北京的学生信息SELECT * FROM student WHERE address IN ('北京朝阳');-- 查询地址为空的学生信息SELECT * FROM student WHERE address='' " OR address IS NULL;-- 查询出生日期不为空的学生信息SELECT * FROM student WHERE borndate IS NOT NULL;-- 多表查询-- 查询参加了考试得学生信息-- JOIN ON 连接查询-- WHERE 等值查询-- INNER JOIN SELECT s.studentno,studentname,subjectno,studentresult FROM student s INNER JOIN result r WHERE s.studentno = r.studentno;-- RIGHT JOIN SELECT s.studentno,studentname,subjectno,studentresult FROM student s RIGHT JOIN result r ON s.studentno = r.studentno;-- LEFT JOIN SELECT s.studentno,studentname,subjectno,studentresult FROM student s LEFT JOIN result r on s.studentno = r.studentno;-- INNER JOIN 如果表中至少有一个匹配,就返回行-- LEFT JOIN 会从左表中返回所有得值,即使右表中没有匹配-- RIGHT JOIN 会从右表中返回所有得值,即使左表中没有匹配-- 查询缺考的同学 SELECT s.studentno,studentname,subjectno,studentresult FROM student s LEFT JOIN result r on s.studentno = r.studentno WHERE studentresult IS NULL;-- 查询参加考试的同学的学号、姓名、科目名称、成绩 SELECT s.studentno,studentname,subjectname,studentresult FROM student s RIGHT JOIN result r on s.studentno = r.studentno INNER JOIN `subject` sub ON r.subjectno = sub.subjectno;
2020年06月10日
127 阅读
0 评论
0 点赞
2020-06-10
DML操作
INSERT INTO `grade`(`name`) VALUES('大一'),('大二'); INSERT INTO `student`(name,pwd,sex) VALUES('孙笑川','123','男'),('刘波','123','男'); UPDATE `student` set `name`='药水哥',`email`='123456@qq.com' WHERE id = 1; UPDATE `student` set `birthday`=CURRENT_TIME WHERE `name`='孙笑川' AND id = 2;-- TRUNCATE 重新设置自增列,计数器会归零-- 不会影响事务 TRUNCATE `grade`; -- 自增会归零 -- DELETE 不会影响自增 DELETE from `grade`;-- DELETE删除的问题(重启数据库)-- InnoDB 自增列会从1开始(存在内存中,断电即失)-- MyISAM 继续从上一个自增量开始(存在文件中,不会丢失)
2020年06月10日
59 阅读
0 评论
0 点赞
2020-06-09
修改删除表笔记
-- 修改表名 ALTER TABLE 旧表名 RENAME AS 新表名 ALTER TABLE teacher RENAME AS teacher1;-- 增加表的字段 ALTER TABLE 表名 ADD 字段名 列属性 ALTER TABLE teacher1 ADD age INT(11);-- 修改表的字段(重命名,修改约束) -- ALTER TABLE 表名 MODIFY 字段名 列属性[] ALTER TABLE teacher1 MODIFY age VARCHAR(255); -- 修改约束-- ALTER TABLE 表名 CHANGE 旧名字 新名字 列属性[] ALTER TABLE teacher1 CHANGE age age1 INT(11); -- 字段重命名-- 删除表的字段 -- ALTER TABLE 表名 DROP 字段名 ALTER TABLE teacher1 drop age1;-- 删除表 DROP TABLE IF EXISTS teacher1;-- 所有的创建和删除操作尽量加上判断,以免报错
2020年06月09日
82 阅读
0 评论
0 点赞
2020-06-09
外键
ALTER TABLE student ADD CONSTRAINT FK_gradeid FOREIGN KEY(gradeid) REFERENCES grade(gradeid);注释:-- ALTER TABLE 表 ADD CONSTRAINT 约束名 FOREIGN KEY(作为外键的列) REFERENCES 哪个表(哪个字段)
2020年06月09日
48 阅读
0 评论
0 点赞
2020-06-03
MyBatis缓存
缓存:存在于内存中的临时数据为什么使用缓存:减少和数据库的交互次数,提高执行效率什么样的数据能使用缓存,什么样的数据不能使用缓存?适用于缓存:经常查询并且不经常改变的数据的正确与否对最终结果影响不大不适用于缓存:经常改变的数据数据的正确与否对最终结果影响很大例如:商品的库存,银行的汇率,故事的牌价Mybatis中的一级缓存和二级缓存:一级缓存:它指的是Mybatis中SqlSession对象的缓存。当我们执行查询之后,查询的结果会同时存入到SqlSession为我们提供的一块区域,该区域的结构是一个Map。当我们再次查询同样的数据,mybatis会先去SqlSession中查询是否有,有的话直接拿出来用。当SqlSession对象消失时,mybatis的一级缓存也就消失了。二级缓存:它指的是Mybatis中SqlSessionFactory对象的缓存。由同一个SqlSessionFactory对象创建的SqlSession共享其缓存。使用步骤:1、让Mybatis框架支持二级缓存(在SqlSessionMap.xml中配置)2、让当前的映射文件支持二级缓存(在UserDao.xml中配置)3、让当前的操作支持二级缓存(在select标签中配置)
2020年06月03日
69 阅读
0 评论
0 点赞
2020-06-01
Java Web用户角色与权限的管理
以SSM框架为例后台管理系统——给用户添加角色流程分析与设计1.流程分析注:图片来源itheima的ssm课件2.UserController //给用户添加角色 @RequestMapping("/addRoleToUser.do") public String addRoleToUser(@RequestParam(name = "userId",required = true) Integer userId,@RequestParam(name = "ids",required = true) Integer[] roleIds){ //单个用户可以对应多个角色,所以采用数组存userService.findOtherRoles(id)查询出来的角色id userService.addRoleToUser(userId,roleIds); return "redirect:findAll.do"; } //查询用户以及用户可以添加的角色 @RequestMapping("/findUserByIdAndAllRole.do") public ModelAndView findUserByIdAndAllRole(@RequestParam(name = "id",required = true) Integer id){ ModelAndView mv = new ModelAndView(); //1.根据用户id查询用户 Userinfo userinfo = userService.findById(id); //2.根据用户id查询可以添加的角色 List<Role> roles = userService.findOtherRoles(id); mv.addObject("user",userinfo); mv.addObject("roleList",roles); mv.setViewName("user-role-add"); return mv; }3.UserService接口void addRoleToUser(Integer userId, Integer[] roleIds);4.UserServiceImpl //给用户添加角色 @Override public void addRoleToUser(Integer userId, Integer[] roleIds) { for (Integer roleId : roleIds) { //(单个用户可以对应多个角色)给用户添加角色时,从数组中遍历取出角色id userDao.addRoleToUser(userId,roleId); } } //根据用户id查询可以添加的角色 @Override public List<Role> findOtherRoles(Integer id) { return userDao.findOtherRoles(id); }5.UserDao//查询用户可以添加的角色@Select("select * from role where id not in(select roleId from users_role where userId=#{id})") List<Role> findOtherRoles(Integer id); @Insert("insert into users_role(userId,roleId) values(#{userId},#{roleId})") //当传入mybatis的参数有多个时,必须写@Param void addRoleToUser(@Param("userId") Integer userId,@Param("roleId") Integer roleId);注:添加权限与添加角色同理
2020年06月01日
90 阅读
0 评论
0 点赞
1
...
46
47
48
49