1、idea中创建Java类时,自动添加作者和创建时间
2、查询mysql版本号
A:在console命令行敲出来“select @@version;
”
3、springboot中使用@Autowired
注入XXXMapper时报红解决办法
A:在xxxMapper类上面添加注解“@Component
”
4、springboot整合mybatis时报错:
Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
解决办法:
在application.properties配置文件中的“spring.datasource.url=jdbc:mysql://localhost:3306/demo
”
后面加上“?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
”
5、Spring-boot AOP中 @Pointcut
注解中的“execution
”表示方式
//表示匹配所有方法
1)execution(* *(..))
//表示匹配com.demo.server.UserService中所有的公有方法
2)execution(public * com. demo.service.UserService.*(..))
//表示匹配com.demo.server包及其子包下的所有方法
3)execution(* com.demo.server..*.*(..))
6、spring中的IOC和AOP的核心思想和原理
IOC控制反转另外一种说法叫DI,即依赖注入,是利用反射机制,它并不是一种技术实现,而是一种设计思想。在任何一个有实际开发意义的程序项目中,我们会使用很多类来描述它们特有的功能,并且通过类与类之间的相互协作来完成特定的业务逻辑。这个时候,每个类都需要负责管理与自己有交互的类的引用和依赖,代码将会变的异常难以维护和极度的高耦合。
而IOC的出现正是用来解决这个问题,我们通过IOC将这些相互依赖对象的创建、协调工作交给spring容器去处理,每个对象只需要关注其自身的业务逻辑关系就可以了。在这样的角度上来看,获得依赖的对象的方式,进行了反转,变成了由spring容器控制对象如何获取外部资源(包括其他对象和文件资料等等)。
通俗点说许多应用都是通过彼此间的相互合作来实现业务逻辑的,如类A要调用类B的方法,以前我们都是在类A中,通过自身new一个类B,然后在调用类B的方法,现在我们把new类B的事情交给spring来做,在我们调用的时候,容器会为我们实例化。
引入IOC的目的:脱开、降低类之间的耦合;倡导面向接口编程、实施依赖倒换原则;提高系统可插入、可测试、可修改等特性。
使用IOC框架应该注意什么:使用IOC框架产品能够给我们的开发过程带来很大的好处,但是也要充分认识引入IOC框架的缺点,做到心中有数,杜绝滥用框架。第一、软件系统中由于引入了第三方IOC容器,生成对象的步骤变得有些复杂,本来是两者之间的事情,又凭空多出一道手续,所以,我们在刚开始使用IOC框架的时候,会感觉系统变得不太直观。所以,引入了一个全新的框架,就会增加团队成员学习和认识的培训成本,并且在以后的运行维护中,还得让新加入者具备同样的知识体系。第二、由于IOC容器生成对象是通过反射方式,在运行效率上有一定的损耗。如果你要追求运行效率的话,就必须对此进行权衡。第三、具体到IOC框架产品(比如:Spring)来讲,需要进行大量的配制工作,比较繁琐,对于一些小的项目而言,客观上也可能加大一些工作成本。第四、IOC框架产品本身的成熟度需要进行评估,如果引入一个不成熟的IOC框架产品,那么会影响到整个项目,所以这也是一个隐性的风险。
我们大体可以得出这样的结论:一些工作量不大的项目或者产品,不太适合使用IOC框架产品。另外,如果团队成员的知识能力欠缺,对于IOC框架产品缺乏深入的理解,也不要贸然引入。最后,特别强调运行效率的项目或者产品,也不太适合引入IOC框架产品,像WEB2.0网站就是这种情况。
AOP面向切面编程是利用代理模式,是OOP的延续和补充,意思是面向方面编程,核心思想是将业务逻辑中与类不相关的通用功能切面式的提取分离出来,让多个类共享一个行为,一旦这个行为发生改变,不必修改类,而只需要修改这个行为即可。
面向切面编程往往被定义为促使软件系统实现关注点的分离的技术。系统是由许多不同的组件所组成的,每一个组件各负责一块特定功能。除了实现自身核心功能之外,这些组件还经常承担着额外的职责。例如日志、事务管理和安全这样的核心服务经常融入到自身具有核心业务逻辑的组件中去。这些系统服务经常被称为横切关注点,因为它们会跨越系统的多个组件。
AOP的优点:利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
主要功能:日志记录、事务处理、异常处理、安全控制和性能统计方面。
主要意图:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。
核心思想:是将业务逻辑中与类不相关的通用功能切面式的提取分离出来,让多个类共享一个行为,一旦这个行为发生改变,不必修改类,而只需要修改这个行为即可。
OOP与AOP的区别: 1、面向目标不同:简单来说OOP是面向名词领域,AOP面向动词领域。2、思想结构不同:OOP是纵向结构,AOP是横向结构。3、注重方面不同:OOP注重业务逻辑单元的划分,AOP偏重业务处理过程的某个步骤或阶段。两者之间是一个相互补充和完善的关系
内容来源:https://www.cnblogs.com/ma-yuanhao/p/9879782.html
7、mysql数据库相关操作
查看数据库
show database;
使用数据库(xxx为数据库名)
use xxx;
查看当前所在数据库
select database();
创建数据库(xxx数据库名)
create database xxx;
删除数据库(xxx数据库名)
drop database xxx;
创建表(xxx表名)
create table xxx(
列名1 类型(长度) [约束],
列名2 类型(长度) [约束],
.
.
.
)
删除表(xxx表名)
drop table xxx;
查看表结构(xxx表名)
desc xxx;
修改表(xxx表名)
1、修改列名(类型后面要添加长度,例:varchar(100))
alter table xxx change 列名 新列名 类型
2、修改列类型(xxx 表名)
alter table xxx change 列名 列名 新类型;
或者(推荐这种)
alter table xxx modify 列名 新类型;
数据去重
distinct
数据拼接
select concat(列1,列2) from 表名;
条件中比较运算符
等于:= 大于:> 大于等于:>= 小于:< 小于等于:<= 不等于:!= 或 <>
ps:字符串、日期需使用单引号括起来
逻辑运算符
并且:and 或 && 或:or 非:not 或 !
范围查询
where 列 between 条件1 and 条件2; //列在这个区间的值
where 列 not between 条件1 and 条件2; //不在这个区间
where !( 列 between 条件1 and 条件2 ); //同样表示不在这个区间
NULL值查询不能用=,需要用is
where 列 is null; //查询列中值为null的数据
_:表示一个字符,可多次使用
where 列 like '%0_'; //数据结尾第二位是0
结果排序( 对查询出的结果按照一列或多列进行升序还是降序排列 升序:asc(默认) 降序:desc 注意:不能使用中文的别名排序)
where 条件 order by 列 [asc/desc]
分页查询( beginIndex:表示从第多少条数据开始 pageSize:表示每页显示的数据条数,如果只有一个参数表示从第0条数据开始显示pageSize条数据 )
where [条件] limit beginIndex,pageSize;
聚集函数( 作用于一组数据,并对一组数据返回一个值 )
COUNT:统计结果记录数,若统计的是列,列中为Null,那么count将不会计算值
MAX: 统计计算最大值
MIN: 统计计算最小值
SUM: 统计计算求和
AVG: 统计计算平均值
分组函数( 注意:如果要对分组后的数据进行筛选,那么必须使用having关键字,条件写在having后 )
select 聚集函数 from 表名 where [条件] group by 列 having 分组后的条件
Where: 先过滤已有的数据(数据是已经存在的),在进行分组,在聚集计算
Having:先分组,在对每组进行计算,根据得到结果在过滤(分组把数据算出之后,在过滤)
注意:使用having的时候,它是可以使用别名的
插入数据
insert into 表名(字段1,字段2..) values(值1,值2…);
修改数据
update 表 set 字段=值 where 条件; //带条件修改指定数据,否则修改全表
删除数据
delete from 表 where 条件; //删除数据带条件指定数据,否则删除全表数据
8、navicat premium12 连接oracle数据库报“ORA-28547”异常
原因:navicat Premium版本的OCi和本地数据库的OCI版本不一致。
解决方法:在navicat Premium工具中修改“OCI环境”的路径