环境搭建顺序注意
<!ELEMENT configuration
(properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?) >
mybatis 中 #{}和 ${}的区别是什么?
1."#{}"是将传入的值按照字符串的形式进行处理
2."${}"是做简单的字符串替换,即将传入的值直接拼接到SQL语句中
#{}的执行过程:
(1)Preparing: select id, user_name from t_user where id = ?
(2)Parameters: 1(Long)
解释:
(1)MyBaits会首先对SQL进行预编译,将#{user_ids}替换成?占位符
(2)执行时替换成实际传入的user_id值,并在两边加上单引号,以字符串方式处理
注:因为"#{}"会在传入的值两端加上单引号,所以可以很大程度上防止SQL注入
${}的执行过程:
(1)Preparing: select id, user_name from t_user where id = 1
(2)Parameters:
解释:参数是直接替换的,且没有单引号处理,这样就有SQL注入的风险。
Mybatis的优点及缺点
Mybatis 半自动化
表需要手动进行设计
提供sql
依赖与数据库平台
优点:学习使用简单(基与原声jdbc封装),优化灵活,适合做互联网项目
Hibernate 自动化ORM框架
表可以通过框架自动创建
省略一些基本的sql
不依赖与数据库平台
缺点: 学生成本高,优化难度大,适合与传统框(OA|图书管理系统...),不适合做大型互联网项
目