题目来源:SQL必练50题
数据123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354-- 创建学生表并插入数据DROP TABLE student;CREATE TABLE student ( s_id INT NOT NULL PRIMARY KEY, s_name VARCHAR ( 10 ) NOT NULL, s_sex VARCHAR ( 5 ) NOT NULL,s_age INT NOT NULL );DELETE FROM student;INSERT INTO student VALUES(1,'胡图图','男',6);INSERT INTO student VALUES(2,'牛爷爷','男',55);INSERT INTO student VALUES(3,'壮壮妈','女',33);INSERT ...
LeetCode每日一题✨2024-12-27📙1. 两数之和法一:遍历数组12345678910public int[] twoSum(int[] nums, int target) { for (int i = 0; i < nums.length - 1; i++) { for (int j = i + 1; j < nums.length; j++) { if (nums[i] + nums[j] == target) { return new int[]{i, j}; } } } return null;}
法二:利用哈希表num为key
index为value
12345678910public int[] twoSum(int[] nums, int target) { HashMap<Integer, Integ ...
函数式编程-Stream流概述Stream是Java 8 API添加的一个新的抽象,称为流Stream,以一种声明性方式处理数据集合(侧重对于源数据计算能力的封装,并且支持序列与并行两种操作方式
例子:
12345678910111213141516171819//查询未成年作家的评分在70以上的书籍 可能出现重复,需要进行去重List<Book> bookList = new ArrayList<>();Set<Book> uniqueBookValues = new HashSet<>();Set<Author> uniqueAuthorValues = new HashSet<>();for (Author author : authors) { if (uniqueAuthorValues.add(author)) { if (author.getAge() < 18) { List<Book> books = aut ...
MybatisPlus-02自动填充在实际项目中的表会和我们的orders表一样,有更新时间,创建时间,创建人,更新人等字段
我们可以使用 @TableField 的 fill 属性来设置字段的自动填充,让我们能更方便的更新相关字段
示例①在对应字段上增加注解
使用TableField注解的fill属性来标注哪些字段需要在自动填充,加了注解MP才会在对应的SQL中为我们预留字段,而属性值代表我们在什么进行什么操作时需要预留字段
1234567891011/** * 更新时间 */@TableField(fill = FieldFill.INSERT_UPDATE)private LocalDateTime updateTime;/** * 创建时间 */@TableField(fill = FieldFill.INSERT)private LocalDateTime createTime;
②自定义填充处理器 MetaObjectHandler
12345678910111213@Componentpublic class MyMetaObjectHandler imple ...
MybatisPlus-01概述MybatisPlus是一款Mybatis增强工具,用于简化开发,提高效率
它在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生
官网: https://mp.baomidou.com/
快速入门准备工作①准备数据1234567891011CREATE TABLE `user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', `user_name` varchar(20) NOT NULL COMMENT '用户名', `password` varchar(20) NOT NULL COMMENT '密码', `name` varchar(30) DEFAULT NULL COMMENT '姓名', `age` int(11) DEFAULT NULL COMMENT '年龄', `address` varchar(100) DEFAULT NULL COM ...
Mybatis-03案例环境案例数据初始化sql123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354CREATE DATABASE /*!32312 IF NOT EXISTS*/`mybatis_db` /*!40100 DEFAULT CHARACTER SET utf8 */;USE `mybatis_db`;DROP TABLE IF EXISTS `orders`;CREATE TABLE `orders` ( `id` int(11) NOT NULL AUTO_INCREMENT, `createtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间', `price` int(11) DEFAULT NULL COMMENT '价格', `remark ...
Mybatis-02注解开发我们也可以使用注解的形式来进行开发,用注解来替换掉xml
使用注解来映射简单语句会使代码显得更加简洁,但对于稍微复杂一点的语句,Java 注解不仅力不从心,还会让你本就复杂的 SQL 语句更加混乱不堪,所以我们在实际企业开发中一般都是使用XML的形式
步骤①在核心配置文件中配置mapper接口所在的包名
123<mappers> <package name="com.sinarcsinx.dao"></package></mappers>
②在接口对应方法上使用注解来配置需要执行的sql
1234567891011121314public interface UserDao { @Select("select * from user") List<User> findAll(); @Insert("insert into user values(null,#{username},# ...
Mybatis-01Mybatis介绍
MyBatis 是一款优秀的持久层框架。
MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
官网:https://mybatis.org/mybatis-3/zh/#
快速入门①数据准备
1234567891011CREATE DATABASE /*!32312 IF NOT EXISTS*/`mybatis_db` /*!40100 DEFAULT CHARACTER SET utf8 */;USE `mybatis_db`;DROP TABLE IF EXISTS `user`;CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) DEFAULT NULL, `age` int(11) DEFAULT NULL, `address` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=3 ...
SSM整合SSM整合步骤分析步骤①Spring整合上Mybatis
通过Service层Dao层都注入Spring容器中
②引入配置SpringMVC
把Controller层注入SpringMVC容器中
③让web项目启动时自动读取Spring配置文件来创建Spring容器
可以使用ContextLoaderListener来实现Spring容器的创建
常见疑惑
为什么要用两个容器?
因为Controller如果不放在MVC容器中会没有效果,无法处理请求。而Service如果不放在Spring容器中,声明式事务也无法使用
SpringMVC容器中的Controller需要依赖Service,能从Spring容器中获取到所依赖的Service对象嘛?
Spring容器相当于是父容器,MVC容器相当于是子容器。子容器除了可以使用自己容器中的对象外还可以使用父容器中的对象
是如何实现这样父子容器的关系的?
具体可以看源码解析阶段的视频。但是我们目前可以用代码模拟下
是什么时候让两个容器产生这种父子容器的关系的?
在ContextLoaderListener中,会在创建好容 ...
SpringSecurity入门简介Spring Security 是 Spring 家族中的一个安全管理框架,相比与另外一个安全框架 Shiro,它提供了更丰富的功能,社区资源也比 Shiro 丰富
一般来说中大型的项目都是使用 SpringSecurity 来做安全框架,小项目有 Shiro 的比较多,因为相比与 SpringSecurity,Shiro 的上手更加的简单
一般 Web 应用的需要进行认证和授权
认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户
授权:经过认证后判断当前用户是否有权限进行某个操作
而认证和授权也是 SpringSecurity 作为安全框架的核心功能
快速入门准备工作我们先要搭建一个简单的 SpringBoot 工程
① 设置父工程 添加依赖
1234567891011121314151617<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent ...