文档章节

oracle 基本语句

d
 doudou___9958
发布于 2016/12/07 09:27
字数 5097
阅读 11
收藏 1

一.sql ------>结构性查询语言
分类:
1.DQL 数据查询语言 select
主要讲: 简单sql 限制排序 函数 子查询 多表查询
1.1简单sql
selcet *(匹配所以列)|column()|alias|express from <tab |view>;
查看当前用户有什么表:select table_name from user_tables;| select * from tab;
描述表结构:desc dept;
查看表内容: select * from emp;
select enmae,deptno,sal*1.15|-|/|+ tab_name;
将两个表内容显示在一起:select ename | | job from emp;或者select concat(ename,job) from emp;
select ename||'is work'||job from emp;或者:select concat(concat(ename'is work'),job from emp;
转义:select ename ||q'(is work)'|| job from emp #将“ ' ”进行转义。
别名:select ename as name from emp;
小写:select ename as "name" from emp;#别名是用双引号 字符性单引号
1.2限制排序:
语法:select * from <>;
select *select ename,sal from emp; from <> where <>;
查询部门编号=10: select ename,sal from emp where deptno=10;
日期型:select * from emp where hiredate='xxxxx';
不等于 != | <> |^=
范围比较: select * from emp where sal 【not】between 3000 and 5000;
显示查询:select * from emp where ename 【not】in ('SCOOT','KING');
显示薪水为2000,3000,5000:select * from emp where sal(2000,3000,5000);
显示大于最小一个:select * from emp where sal>any(2000,3000);
显示大于最大的一个:select * from emp where sal>all(2000,3000);
like(匹配查询):转义字符不能使用“%”
显示S开头的:select ename from emp where ename like 'S%'; %表示匹配0个或者多个,下划线表示一个
显示中有特殊字符需要使用转义: select ename from emp where like 'd\%%' escape '\';
逻辑查询:and or
select ename,sal,deptno from emp where deptno=10 and | or sal=3000;
找空值:select ename,comm from emp where comm is (not) null;
空值算数运算:select sal,comm,sal+nvl(comm,0) from emp
排序:
语法:select * from <> where <> order by <>;
降序排序:select ename,sal from emp order by sal desc;
生序:select ename,sal from emp order by sal asc;
多个排序:select * from emp order by deptno ,sal desc;
去重:distinct
select distinct deptno from emp;
select unique(deptno) from emp;
select unique deptno from emp;
1.3函数:
单行函数:用户输入一行数据 每一行返回一个结果
分类:
字符函数:
1.upper(大写): select upper('abcde') from dual;
2.lower(小写):select lower('SHJKSKLNKL') from dual;
3.initcap(首字母大写):select initcap('hjksdjkhjk') from dual;
4.concat(连接字符):select concat('hello','word') from dual;
5.length (按字符统计字符串长度):select length('jkldsklsdl') from dual;
6.lengthb(按字节统计字符串长度)
7.lengthc(按U码统计字符串长度)
8.substr(截取函数):
语法:substr(dname,m,n) m:从M开始截取可用负数 n:截取多个个字符
例:select substr(dname,1,3) from dept;
9.instr(显示某个字符在哪个位置):
语法:instr(dname,m,n) m:为查找条件字符 n:字符第几次出现
例:select ename,instr(ename,'S',1) from emp;
10.trim(截断函数(10g)):
语法:trim(leading|trailing'字符' form 字符串)
例: select trim('s' from 'ascsbs') from dual;
11.ltrim(左截断11g):select ltrim('abcdabcd','a') from dual;
12.rtrim(右截断11g): select rtrim('afabccbacab','abc') from dual;
13.replace(替换函数): replace(danme,'a','b') 将‘a’替换成‘b’
例:select ename,replace(ename,'A','B') from emp;
14.lpad(左填充函数):
lpad(deptno,m,c) m:总共多少字符 c:表示用什么字符填充,默认空格
例:select lpad(deptno,10,'#') from dept;
15.rpad(右填充函数):
数值函数:
1.abs(绝对值):select abs(1),abs(-1),abs(0) from dual;
2.mod(取余):select mod(3,5) from dual;
3.trunc(取整):select trunc(-123.1453,2) from dual;
4.round(四舍五入): select round(234.15645,1) from dual;
5.ceil(取整,大于或等于中这个的最小整数) : select ceil(234.12),ceil(-234.12) from dual;
6.floor(取整,小于或等于它的最大的整数):select floor(234.12) ,floor(-234.12) from dual;
日期函数:
1.sysdate(系统日期):select sysdate from dual;
2.months_between(距某个日期相隔几个月) :select ename,hiredate,moths_between(sysdate,hiredate) from emp;
3.next_day:(距当前时间下一个星期几是哪天):
select next_day(sysdate,'fri') from dual;
4.add_moths(x,n): x:当前时间 n:指定时间
select hiredate,add_moths(hiredate,3) from emp;
5.last_day:(一个月的最后一天)
select last_day(sysdate) from dual;
当年的第一天: select trunc(sysdate,'yyyy') from dual;
年:yyyy|yy|rr
月:mon|mm
日:dd|dy
yyyy-mm-dd hh24:mi:ss
转换函数:
1.to_char 转为字符:to_char(date,'yyyy|yy|mm|dd') select ename,hiredate from emp where to_char(hiredate,'yyyy')='1982';
二进制转换十进制:select to_char(101,'xxxx') from dual;
2.to_number转为数字:
日期转为数字:select ename,hiredate from emp where to_number(to_char(hiredate,'yyyy'))=1981;
十六进制转十进制:select to_number('af','xxxx') from dual;
3.to_date转为日期:
数字转日期:select ename,hiredate from emp where to_date(to_char(hiredate,'yyyy'),'yyyy-mm-dd'));
通用函数:
1.nvl(空值函数) :nvl (x,y)
2.nvl2 :nvl(x,y,z): x为空返回z的值,x不为空为y的值: select comm,nvl2(comm,1,2) from emp;
3.nullif:nullif(x,y):xy相等时返回空值,不一样返回x值:select nullif(1,2) from dual;
分支语句:
1.decode():语法:decode(deptno,x,y,z):如果x等于deptno返回y,如果x不等于deptno返回z; #x可为字符型
例:等值
select ename,deptno,sal,decode(deptno,10,sal*1.1,20,sal*1.2,30,sal*1.3) from emp;
2.case..when..then...end case:
例:等值
select ename,deptno,sal,
case deptno
when 10 then sal*1.1
when 20 then sal*1.2
when 30 then sal*1.3
end casefrom emp;
例:不等值
select ename,deptno,sal,
case
when sal<1000 then sal*1.1
when sal between 1000 and 2000 then sal*1.2
when sal>2000 then sal*1.3
else sal
end case from emp;

select max(ename),min(ename) from emp;
正则表达式函数
1.regexp_substr--->substr(截取):
语法: regexp_substr(原字符,匹配字符,m,n)
例:select ename,regexp_substr(ename,'*B*',1,1) from emp;
2.regexp_instr---->instr
语法:regexp-instr(原字符串,匹配字符串,m,n)
例;select ename from emp where regexp_instr(ename,'S',1,1)>0; 或 select ename,regexp_instr(ename,'S',1,1) from emp
3.regexp_like--->like:
语法:regexp_like(原字符串,'^|.|$|?|', 'i|c|') i:不区分大小写 c:区分大小写
例:select ename from emp where regexp_like(ename,'^s','i');
4.regexp_count-->count
例:select ename,sal from emp where regexp_count(ename,'A')=1; #显示一个A字符的员工的名字,薪水
多行函数(聚合函数 分组函数):输入多行数据 返回一行结果
count(计数):
select count(*) from emp; #有多少个员工
select count(comm) from emp;
avg(平均值)
max()
min()
sum()
group by(分组):
select deptno,max(sal) from emp group by deptno; #每个部门最高薪水
select ename from emp where sal in(select max(sal) from emp group by deptno);#查询大于组平均工资的人名字
having (过滤):select deptno,max(sal) from emp group by deptno having max(sal)>3000;
select deptno,max(sal) from emp where deptno <>10 group by deptno having max(sal)>3000;
rollup (滚动分组):
rollup(n): ----->rollup(n)=(group by n+1) + (group by n)
select deptno,avg(sal) from emp group by rollup(deptno);#查看部门及公司工资的平均值
cube () :----->cube(n)=group by+0 group n#分组为n的平方
grouping():检测是否参与分组,参与为显示0否则为1:
select deptno,job,avg(sal),grouping(job) from emp group by grouping sets(deptno,job);
grouping sets:(分组后合并在一起)
select deptno,job,avg(sal) from emp group by grouping sets(deptno,job);
1.4子查询:
执行顺序:从右到左
特点:1.子查询可以出现在语句的任何位置
2.通常需要放在括号里面“()”
3.先执行子查询的结果,传递给主查询
4.在子查询中不要使用order by
分类:
1.单行子查询:返回的查询结果是一行,语法:=
例:select ename,sal from emp where sal=(select sal from emp where ename='SCOTT') and ename<>'SCOTT';

2.多行子查询:返回的查询结果是多行,语法:in > < = <= >= any all
例:select ename,sal from emp where sal>(select min(sal) from emp where deptno=20);
select ename,sal,(select avg(sal) from emp where deptno=e.deptno) from emp e;
分析函数(排名):row_number() :语法: row_number() over(需要操作的列)
例:select ename,sal,row_number() over(order by sal desc) from emp;
rank() :语法:rank() over(需要操作的列)
例:select ename,sal,rank() over(order by sal desc) from emp;
dense_rank():语法:dense_rank() over(需要操作的列)
例:select ename,sal,dense_rank() over(order by sal desc) from emp;
分组:partition by 语法: row_number() over(partition by +分组内容+需要操作的列)
例:select ename,sal,row_number() over(partition by deptno order by sal desc) from emp;
3.关联子查询:语法:exists 出现in时用exists代替,出现not in 用not exists 代替
4.多表查询:数据来源不再统一张表而是多张表
步骤:
1.确定数据来源
2.找有关联的字段建立等值链接
3.书写查询语句
4.1自然连接
natural join export NLS_LANG='simplified chinse_china.al32utf8'
条件:必须列名相同,数据类型相同,等值连接的列不能跟上表的前缀
例:select ename,dname from emp natural join dept
join using()
条件:创建等值链接的列,列名相同,数据类型可以不相同

例:select ename,dname from emp join dept using(deptno);
join on()
条件:创建'等值连接的列,列名可以不相同,数据类型可以不相同
例:select ename,sal,grade from emp join salgrade on(sal between losal and hisal);
set操作:
union---将两个或者多个结果合并在一起,去重复的行,并排序
例:select deptno from emp where deptno in(10,20) union select deptno from emp where deptno in(10,30);
union all :'将两个或者多个结果合并在一起,不去除重复,不排序
例:select deptno from emp where deptno in(10,20) union all select deptno from emp where deptno in(10,30);
intersect:--->交集:将两个或者多个结果相同的部分显示出来
例:select deptno from emp where deptno in(10,20) intersect select deptno from emp where deptno in(10,30);
minus:---->差集:第一个结果减去第二个结果所得到的结果
例:select deptno from emp where deptno in(10,20) minus select deptno from emp where deptno in(10,30);
2.DML 数据操作语言 主要用来改变数据库中的数据进行操作 insert update delete
查询当前数据插入进去放在哪个数据文件:
select a.*,dbms_rowid.rowid_block_number(rowid)rb,dbms_rowid.rowid_relative_fno(rowid)rf from dept a;
insert:语法
单行插入:insert into+表明(列名,列名) values(内容)
例:insert into dept1(deptno,dname,loc) values(12,'job','sc');
多行插入:insert into 表名 select .........
例:insert into dept1 select * from dept;
update语法:更改
update 表名 set 列名=要修改后的值 where 条件()
例:update dept set deptno=20 where loc='xxxx';
update 表名 set 列名 =(select...)
例:update dept set dname=(select ename from emp where ename='SCOTT');
delete语法在进行delete删除时,实际上是没有进行磁盘回收的,需要进行alter table <> shrink space; 操作后才会真正的回收磁盘空间
delete 表名
delete 表名 where 条件
merge into:使数据库中存在的语句进行更新,不存在的数据进行插入,
语法:
merge into <表名1>
using <表名2> on 条件
when matched then
update set 列名1=列名2
when not matched then
insert values (列值)
例: 1 merge into test a
2 using emp b on(.empno=b.empn)
3 when matched then
4 update set sal=sal+1
5 when not matched then
6 insert values(b.ename,b.deptno,b.sal,b.empno)
3.DDL 数据定义语言 定义构成数据的结构 create drop alter truncate
对象:表,视图,系统,同义词,索引,过程,函数,触发器
1.表堆表,索引组织表,对象表,分区表,簇表,外部表
create table table_name(必须字母开头a-z A-Z 0-9 _ # $除这些符号意外的必须加上双引号) +列(datatype|default|constraint) tablespace <> pctused<> pctfree<>
字符类型:
固定字符char 最长2000个
可变长字符类型:varchar2() 最长4000个
大对象字符类型:clob 最长4g-1个
数字型:number 最长30个
日期型:date timestamp(时间戳)
二进制字符类型:blob 存储多媒体 长度4g-1
不长用:
rowid:存放列编号
long:
约束:
查询约束创建在哪个表的:desc user_constriants;
产寻约束创建在哪个列的:desc user_cons_columns;
静用约束:alter table <> disable constraint <列名>
启用约束:alter table <> enable constraint <>
删除约束:alter table <> drop constraint <>
1.not null:非空
例:create table test (name varchar2(20),id number not null);
建表前未加约束:alter table test modify (name varchar2(20) not null);
2.unique:唯一性
例: 列级 cetate table test (name varchar2(20) unique);
列级:给约束取名:create table test (name varchar2(20) constraint u_name unique);
表级:create table test(name varchar2(20),unique(name));
表级:给约束取名:create table test(name varchar2(20),constraint u_name unique(name));
3.primary key:主建(唯一,非空)
例:cteate table test (name varchar2(20) primary key )
4.foreign key:外建约束
例:cteate table test (name varchar2(20) foreign key )
主键和外建在同一张表:create table test (name varchar2(20) primary key,name)
增加emp1外键约束并关联到dept(deptno)上:alter table emp1 modify(deptno references dept1(deptno));
5.chcek:检查约束
例:create table test (name varchar2(20),mail varchar2(30) check(mail like '%_%@%_%.%_%'));
列级约束:跟在列的后面
表级约束:用“,”分开
pctused<>:表示使用空间的百分比:insert操作
pctfree<> :表示剩余表空间的百分比update操作
2.修改表结构及 表名:
增加列:alter table <> add(column datatype)
修改长度: alter table <> modify(column datatype);
修改列名:alter table <> rename column <old> to <new>;
修改表名:alter table <old> rename to <new>;
3.删除表结构:
alter table <> drop column <>;
4.表只读模式(read only):
alter table <> read only;主读模式
alter table <> read write;打开读写
表主读模式下可以左一下操作:
alter table <> move : 移动表
alter table <> enable row movement;打开数据行移动
alter table <> shrink space;清理表数据
alter table <> disable row movement;关闭数据行移动
5.删除表:
drop table <>;默认放在回收站里面,并给表重命名。
查看回收站是否打开: show parameter recyclebin;------>sys用户
查看回收站内内容:show recyclebin;
恢复回收站某个文件:flashback table <> to before drop ;
恢复回收站某个文件并改名:flshback table <> to bafore droop rename to <>;
删除表不经过回收站:drop table <> purge;
清除回收站内某个表:purge table <> ;
清空回收站内所有内容:purge recyclebin;
关闭回收站功能:alter session set recyclebin=off;
6.建表(ctas):
create table <> as select ........
要表结构和表内容: create table <> as select * from <>;
要表结构不要表内容: create table ,<> as select * from <> where 0=1; 0=1:给一个不成例的条件
2.试图:查询语句的别名
作用:1.隐藏数据来源,保证数据安全
2.简化语句的书写
3.只显示需要的信息
分类:1.简单试图:数据来源一张表
创建简单视图语法:create [or replace] [force] view <> as select.....[with check option|with read only]
[or replace]:表示试图存在就替换它
[force]:强制创建视图(基图不存在)
[with check option|with read only]:表示创建的视图必须遵循check,表示创建的试图只是只读的视图
注意:在创建视图时使用了group by| distinct | 算数表达式 时 视图不能进行dml操作
例:create or replace view as select ename,deptno from emp where deptno=10;
遵循的checkj规则只是需遵循where条件后的规则:create or replace vier as select ename,deptno from emp where deptno=10 with check option;
创建变量:create or replace view as select ename,deptno from emp where deptno=&abc;
查看当前有哪些视图:select * from user_ views;
删除视图:drop view <>
2.复杂试图:数据来源多张表desc user_ views;
3.物化试图
3.序列:一组自动增长的唯一值(最大值10的16次方)主要用于primary key,
查看序列的详细信息: desc user_sequences;
删除序列:drop sequence <>
语法:create sequence <>;
create sequence <> increment by <步长> 默认是1
start with <初始值> 默认1(设置完成后是不能修改的,其他可以改,但是初始值必须大于最小值,)
minvalue <最小值> 默认1
maxvalue <最大值> 10的16次方
cycle |nocycle <打开循环> (一般不用)
cache | nocache <是否打开缓存> (一般不用)
调用序列:
currval:当前值
nextval:下一个值
例:create sequence s1 increment by 2 start with 1 minvalue 1;
insert into aa values(s1,nextval,'aa','bb');
. 4.同义词:对象的别名
查询当前用户有哪些同义词:select * from user_synonyms;
查询dba用户同义词:select * from dba_synonyms;
语法:create [or replace |public ] synonym <> for <对象名>;
创建:例:create sysnonym e for emp;
删除:drop public synonym <>------->dba用户
drop synonym <> ------>当前用户
特点:可以处理应用程序
分类:1.私有同义词:只有当前的用户可以访问;允许与对象同名
私有同义词权限:creacte synonyn
2.共有同义词:所有的用户都可以访问,前提是需要用户访问权限
共有同义词权限:create public sysnonym
5.索引:提高查询语句的效率,
查看当前用户有哪些索引:select * from user_indexes;| desc user_indexes;
需要建立索引:
1.经常查询的语句或者
2.查询的时候返回的行数占用表的2%以下
不需要建立索引:
1.经常做dml操作:索引需要后台维护
2.查询量少的表
分类:
树形索引:语法 :create index <> on tablename(column);
例:创建树形索引:create index ind_dept on dept(deptno);
创建组合索引:create index ind_det_name on dept(deptno,dname);
创建函数索引:create index ind_fun_name on dept(to_number(deptno));
创建唯一型索引:create unqiue index <> on dept(column);
创建反建索引:create reverse index <> on dept(column);
创建位图索引:create bitmap index bit_emp on emp(ename);
单列索引:索引创建一个列
组合索引:(多列索引)---多个列创建一个索引
唯一性索引:创建索引的这个列值是唯一的 create [unqiue ] index <> on tablename(column);
函数索引:创建的这个列在查询语句中以函数的形式出现,需要创建一个函数索引
反建索引:避免热点块的读取,需要创建反建索引
位图索引:数据量十分大,查询的语句非常多,这样的列有or 出现,这时需要创建位图索引 create bitmap index <> on tablename(column);
分区索引:在分区表中创建的索引 分为:本地索引(在分区表中每一个分区创建一个索引)和全局索引(在分区表中只有一个索引)本地索引:create index <> on 分区表名字(column)locai; 全局索引:create index <> on tablename(column)global
索引重建:alter index <> rebuild; (空闲时候做,一般写成脚本自动执行。)
1.有人在左dml操作,事务未完成会导致索引重建不成功
2.当在重建索引时候,有用户在做dml操作时会锁表
删除索引:drop index <>;
4.DCL 数据控制语言 控制用户访问数据库或者是访问对象的某种权限 grant revoke
1.系统权限
查看当前系统具有哪些权限:select * from system_privilege_map(sys用户)
某用户具有哪些权限:select * from user_sys_privs | dba_sys_privs;
查看当前用户会话权限:select * from session_privs;
级联权限:授予级联权限:grant 系统权限,。。。 to 用户名 with admin option;注意:dba用户回收权限时级联出去的权限不会一并被回
级联权限回收权限:revoke 权限 on 方案名.对象名 to 用户名
语法: 授权:grant 系统权限,。。。 to 用户名;
例:创建用户:create user 帐号 identfied by 密码;
授权: grant session,create view to 帐号;
revoke:回收权限:
语法: revoke 权限 from 用户;
例:revoke create table from test;
2.对象权限:
查看当前系统具有哪些对象权限:select * from table_privilege_map;
查看当前用户对某个对象下的哪个列有什么权限:select * from user_col_privs;
查看dba用户具有哪些对象权限:select * from dba_tab_privs;
查看当前用户具有哪些对象权限:select * from user_tab_privs;
grant 对象权限 on 方案名.对象名 to 用户名;
例:grant select on test.t1 to scott;
给某个用户一个更新表列的权限:grant update(ename) on scott.emp to teset;
级联权限:grant 对象权限 on 方案名.对象名 to 用户名; 注意:对象权限在dba用户回收时 会一并回收级联出去的权限
例:授权:grant select on scott.emp to test;
回收:revoke select on scott.emp from test;
3.角色权限:是系统权限或者select * from user_sys_privs;对象权限的打包
查看当前系统具有哪些角色:select * from role_sys_privs;
查看当前用户具有哪些角色:select * from user_role_privs;
语法:cerate role 角色名 identified by 密码;
grant 系统权限..... to 角色名;
grant 对象权限,.. on 方案名.对象名 to 用户名;
例:create role r1; #创建用户
grant session to r1#授系统权限
grant select on scott.emp to r1;#授对象权限;
角色授权给角色:
角色给角色授权:grant 角色名1 to 角色2# 角色名1的权限给角色名2
查看角色给角色的权限:select * from role_role_privs;
回收角色给角色的权限:revoke 角色名 from 用户名
5.TCL 事务处理语言 事物的完成和事物回馈 commit rollback savepoint
事务是如何产生? 当执行dml(需要人为结束事物,ddl,dcl时就产生了事务
事务的结束:commit
事务的操作主要针对dml
commit----->事物完成
rollback----->回滚到最后一次执行commit后
savepoint--->设置保存点 ----回滚:-> rollback to xx;
 

© 著作权归作者所有

共有 人打赏支持
d
粉丝 4
博文 44
码字总数 54288
作品 0
成都
私信 提问
Oracle和MySQL数据库的比较

本次使用Oracle11g和MySQL5.0作比较,目的是为了整理和巩固所学的数据库知识,也为了加深印象.(本人菜鸟,请大神们多多指教) 不同点 所占内存不同 Oracle11g在官网上下载的时候显示大约2g大小的...

青椒炒盖饭
2018/12/19
0
0
PLSQL 之类型、变量和结构

1、类型 在《.Net程序员学用Oracle系列(5):三大数据类型》一文中详细地讲述了 Oracle 的基本数据类型,文中还提到,除基本数据类型之外,Oracle 还在语法上支持一些非固有数值类型。 事实上...

技术小阿哥
2017/11/05
0
0
Timestamp 与 Date 变量绑定与Oracle的自动分区

好久没有更新博客了,其实是工作中遇到的很多问题在Google上都能找到答案,也就没有记录下来的必要了。今天主要想聊一下在实际的系统中遇到的Oracle数据库的问题,希望对大家有一点点帮助就好...

Pharosa
2014/07/25
0
0
Oracle的sql (一 )

Oracle体系结构: 数据库 ----> 实例(orcl) ---> 表空间(逻辑单位)(用户) ---> 数据文件(物理单位) 地球 ----> 国家 ---> 省份(省长,公民) ---> 中粮,山川河流 Oracle和mysql区别: 收费, 不开...

勤劳的开发者px
2017/10/23
0
0
如何获取Oracle数据库中某个用户下的所有表、索引、约束、触发器

在Oracle数据库中,如何快速获取某个用户下的所有表、索引、约束及触发器的创建SQL语句呢?本文给出一个简单的示例脚本,经过测试,除位于回收站下的对象及只读视图的约束语句不能获取,其它...

SANSOM
2013/11/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周四乱弹 —— Im fine

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @LuckyXu:分享戴荃的单曲《小荃拳之歌》: 手机党少年们想听歌,请使劲儿戳(这里) 今天遇到倒霉事了, @ FalconChen :电梯宕机了我靠 但是...

小小编辑
59分钟前
129
9
【转载】uclibc和glibc的差别

转载自:http://blog.163.com/huangnan0727@126/blog/static/30626184201042022011225/ CC的标准库,就是glibc这个库,里面有GCC各种标准函数的实现,还有各种unix系的函数在里面。 当初创建...

shzwork
今天
3
0
关于360插件化Replugin Activity动态修改父类的字节码操作

近期在接入360插件化方案Replugin时,发现出现崩溃情况。 大概崩溃内容如下: aused by: java.lang.ClassNotFoundException: Didn't find class "x.x.x.xActivity" on path: 我自己在插件代码......

Gemini-Lin
今天
2
0
mybatis缓存的装饰器模式

一般在开发生产中,对于新需求的实现,我们一般会有两种方式来处理,一种是直接修改已有组件的代码,另一种是使用继承方式。第一种显然会破坏已有组件的稳定性。第二种,会导致大量子类的出现...

算法之名
昨天
22
0
单元测试

右键方法 Go To --> Test,简便快速生成测试方法。 相关注解 @RunWith(SpringRunner.class) 表示要在测试环境中跑,底层实现是 jUnit测试工具。 @SpringBootTest 表示启动整个 Spring工程 @A...

imbiao
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部