-
什么是MyBatis?
mybatis是一款基于java的持久层框架,
可以避免jdbc代码手动设置参数以及获取结果集
支持动态sql和高级映射
相比于JDBC没有侵入性可以达到很好的解耦效果
-
#{}和${}的区别是什么?
#{}是预编译处理,mybatis处理#{}时将其当做?调用perpareStatement的set方法赋值
是字符串替换 , m y b a t i s 处理 {}是字符串替换,mybatis处理 是字符串替换,mybatis处理{}时,把${}替换成变量的值,应用场景:模糊查询,排序
区别:
$符号是占位符,用来替换
预编译机制:提前对SQL语句进行编译,其后注入的参数不会再被SQL编译,因为SQL注入发生在编译器,不安全,预编译机制就可以防止在编译过程SQL的注入
-
在mapper中如何传递多个参数,都有哪几种
param注解:参数不多时,可以使用,比较直观
Map传参:参数易变,灵活
java Bean传参:将参数封装在实体类中,但是需要建一个实体类,不易扩展,需要加属性
-
说出MyBatis动态标签(至少5个)
if:
标签属性:test------表示条件,条件成立拼接到sql语句中
应用场景:通常用于where,update,insert语句中,
choose/when/otherwise:
-
when标签属性:test 判断when中条件是否成立,成立则拼接到sql中
-
choose标签属性:choose中的when成立时,就结束choose,所有when都不满足就执行otherwise
-
otherwise标签属性:如果when都都不满足,就将otherwise中的sql拼接到sql中
-
应用场景:对条件进行筛选过滤
-
where:应用场景:自动去除开头的and和or,
-
foreach:遍历集合数据
-
-
parameterType和resultType的区别
parameterType:传入的参数类型
resultType:返回值结果类型,对于查询出来的字段,pojo中必须有相同的对应字段,多用于单表查询
-
在用MyBatis插入时,如何得到数据库自增的主键值?
useGeneratedKeys=true,keyProperty="id"配置即可,使用方法id会直接将映射到参数的实体上使用时直接使用参数的实体get获取值
-
MyBatis批量删除时,请问如何实现?
通过foreach遍历删除,指定每次循环的分隔符separator=“,”
-
MyBatis批量添加时,请问如何实现?
通过foreach遍历添加,指定每次循环后对象的别名和分隔符
-
JDBC为什么比Mybatis效率快?
JDBC是直接操作数据库的,而mybatis是封装了JDBC进行封装,通过映射关系操作数据库,所以比较慢
-
MyBatis框架中用到了哪些设计模式?(3个)
- 工厂模式:sqlSessionFactory
- 单例模式:
- 代理模式:
- Builder模式:sqlSessionBuilder
-
描述Linux的命令(至少10个)并说明其作用。
ls –l:该ls命令选项可以列出文件的详细信息
cd:用来切换当前目录
pwd:查看当前路径
mkdir:用来创建目录
rm –r 目录名称:删除一个目录中的一个或多个文件或目录
find 目录名 –name 文件名/目录名 :查找文件或目录
cp -r 需要复制的文件 目标位置:用来将一个或多个源文件或者目录复制到指定的目的文件或目录
cat 文件名:浏览正文文件内容
:wq :保存并退出命令
:q! :不保存并退出:
grep 需要搜索的字符串 搜索文件:常用于字符串搜索工作/所有的信息
-
Linux中,如何查看日志命令后10行
tail -n 10 文件名