常见的情况

MySQL和DB2数据库的对比和区别

1.账号管理模式不同:

mysql:数据库用户名+IP地址
DB2:操作系统用户

2.权限管理

mysql:可以批量grant与revoke
DB2:只能单独授权包括最小单元

3.日志管理

mysql:归档日志与失误日志没有关系
DB2:归档日志由事务日志产生

4.锁的管理

mysql:MVCC实现锁的并发控制
DB2:内存魔性实现锁的并发控制

5.schema的管理

mysql:每个schema为一个独立的DB
DB2:一个DB内可以存在多个schema

6.数据备份

mysql:开源在线的备份工具少,传统的备份只支持温备份
DB2:备份方式严谨、功能强大

7.事务行为

mysql:回滚到上一个保存点,不会回滚整个事务
DB2:整个事务进行回滚

8.数据恢复

mysql:支持在回复时打开数据库、灵活
DB2:不支持在恢复或者前滚时打开数据库

9.表空间管理

mysql:无法条带化、可管理、维护性较弱
DB2:管理方便、功能强大

10.SQL支持

mysql:对复杂SQL支持较弱,在运行时可能会存在性能问题
DB2:支持各种复杂SQL,多种jion方式

11.Package支持

mysql:不支持
DB2:支持

12.语法差异

mysql:遵守SQL92标准,但细节上有差异、默认大小写敏感
DB2:遵守SQL92标准,大小写不敏感

13.容灾与高可用

mysql:可选择方案较多、灵活、可二次开发
DB2:只有HADR

14.可扩展性

mysql:可选择方案较多、灵活、可定制、可开发
DB2:只有PureScale

15.DDL功能

mysql:支持指定位置加列、在线DDL
DB2:不支持

MyBatis为什么能防止SQL注入

1.#和$的区别

两个都是占位符的形式,#{}会把传入的值转化成带 “” 的格式,格式的形势是
where username = #{username} ⇒ where username =“111”
而${}会直接替换掉原来的值,格式的形势是
where username = u s e r n a m e ⇒ w h e r e u s e r n a m e = 111 如果在是用 {username} ⇒ where username = 111 如果在是用 usernamewhereusername=111如果在是用{}号的时候传入的参数中带有111;drop table user;会直接执行drop table的操作,删除的库
#的方式能很大的程度防止sql注入,$的方式无法防止sql注入
KaTeX parse error: Expected 'EOF', got '#' at position 22: …传入数据库对象,例如表名 能用#̲就别用,若不得不使用${}这样的参数,要手工的做好过滤的工作,来防止sql注入攻击

分页查询的效率保证

1、通过子查询查出查询目标数据集合的第一个数据所在的行,然后用>=的操作
然后通过给这个主键ID增加索引的方式增加查询的速度。
或者给需要查询的结果级加上一个自增主键。
2、mysql有个limit的参数叫offset可以用来限制记录的最大行数,db2有个fetch参数可以记录最大数目。
3、可以给where条件加上联合索引,加快查询的速度。
4、可以分成两部分,前半部分用正序,后半部分用倒序进行拼接

SpringBoot数据格式判断注解

@NotBlank(message = “”)被该注解修饰的类属性不能为空,message可以定义提示内容。
@NotNull(message = “”)被该注解修饰的类属性不能为null。
@Length(min = 6, max = 10, message = “”)被该注解修饰的类属性长度6<= 长度<= 10。
@Email 被该注解修饰的类属性为email格式,通过正则表达式校验。
以上是用来修饰属性的,只有在controller相应的方法接口中的参数类加上
@Validated 注解才能成功的开启数据校验功能。
如果校验不通过会抛出一个MethodArgumentNotValidException异常。

如果只是简单的基本类型进行校验的话,可以酱@Validated放在控制器的类注解上
之后可以给属性加上自定义的注解比如
@PathVariable(“id”) @Min(10) int id 这个是来校验是否是相对路径变量的长度的,最短是10
@RequestParam(“name”) @NotBlank String name
@RequestParam(“email”) @Email String email
与以上的用法类似

@AssertFalse

可以为null,如果不为null的话必须为false

@AssertTrue

可以为null,如果不为null的话必须为true

@DecimalMax

设置不能超过最大值

@DecimalMin

设置不能超过最小值

@Digits

设置必须是数字且数字整数的位数和小数的位数必须在指定范围内

@Future

日期必须在当前日期的未来

@Past

日期必须在当前日期的过去

@Max

最大不得超过此最大值

@Min

最大不得小于此最小值

@NotNull

不能为null,可以是空

@Null

必须为null

@Pattern

必须满足指定的正则表达式

@Size

集合、数组、map等的size()值必须在指定范围内

@Email

必须是email格式

@Length

长度必须在指定范围内

@NotBlank

字符串不能为null,字符串trim()后也不能等于“”

@NotEmpty

不能为null,集合、数组、map等size()不能为0;字符串trim()后可以等于“”

@Range

值必须在指定范围内

@URL

线程池

详解看这里:https://blog.csdn.net/fanrenxiang/article/details/79855992

MyBatis常用的标签


prefix表示前缀,suffix表示后缀,suffixOverrides表示通过,分隔符

test表示判断的方式

item表示对象,index表示序号,collection表示传入的集合,open表示最开始前缀
,separator表示分隔的符号,close表示最后结束的后缀


AND name LIKE CONCAT(CONCAT(‘%’, #{student}),‘%’)


AND hobby = #{hobby}


AND AGE = 15


是用来进行条件的判断的,而且是只能选择一项的意思

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值