2020-10-20 知识整理随笔

it2023-08-13  64

1、什么是Maven?请描述中clean、compile、test、package、install、deploy这几个命令的作用。

Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具。

clean :清楚项目的target目录

compile:编译项目

test:编译项目后,执行Junit测试方法

package:编译项目后,执行Junit测试方法,再把项目打包到target目录

install:编译项目后,执行Junit测试方法,再把项目打包到target目录,再安装到本地仓库

deploy :将maven的web项目部署到远程服务器。

2、请描述MyBatis框架的优缺点。

优点:

1.与JDBC相比,减少了50%以上的代码量。

2.简单,小巧易学 3.灵活,降低耦合度便于统一管理,方便重用

4.支持动态sql语句,支持映射标签,支持对象与数据库的ORM字段关系映射。

缺点:

1.同样需要写sql语句,对开发人员编写sql语句的功底有一定要求

2.依赖数据库,导致数据库移植性差,不能随意更换数据库。

3、MyBatis中#{}和${}的区别是什么?

#{}:

1.占位符(预编译处理),mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值。

2.mybatis在处理 时 , 就 是 把 {}时,就是把 {}替换成变量的值。

3.使用#{}可以有效的防止SQL注入,提高系统安全性。原因在于:预编译机制。

${}:

1.连接符(字符串替换),${}在动态解析的时候,会将我们传入的参数当做String字符串填充到我们的语句.

2.KaTeX parse error: Expected 'EOF', got '#' at position 21: …止Sql注入(**所以尽量使用#̲{}方式**)。{}方式一般用于传入数据库对象,例如传入表名.

4、通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?

Dao接口,就是人们常说的Mapper接口,接口的全限名,就是映射文件中的namespace的值,接口的方法名,就是映射文件中MappedStatement的id值,接口方法内的参数,就是传递给sql的参数。Mapper接口是没有实现类的,当调用接口方法时,接口全限名+方法名拼接字符串作为key值,可唯一定位一个MappedStatement,在Mybatis中,每一个、、、标签,都会被解析为一个MappedStatement对象。

Dao接口里的方法,是不能重载的,因为是全限名+方法名的保存和寻找策略。

工作原理:Dao接口的工作原理是JDK动态代理,Mybatis运行时会使用JDK动态代理为Dao接口生成代理proxy对象,代理对象proxy会拦截接口方法,转而执行MappedStatement所代表的sql,然后将sql执行结果返回。

5、什么是MyBatis的一级、二级缓存?

一级缓存:Mybatis的一级缓存是指Session缓存。一级缓存的作用域默认是一个SqlSession。Mybatis默认开启一级缓存。也就是在同一个SqlSession中,执行相同的查询SQL,第一次会去数据库进行查询,并写到缓存中; 第二次以后是直接去缓存中取。当执行SQL查询中间发生了增删改的操作,MyBatis会把SqlSession的缓存清空。

二级缓存:Mybatis的二级缓存是指mapper映射文件。二级缓存的作用域是同一个namespace下的mapper映射文件内容,多个SqlSession共享。Mybatis需要手动设置启动二级缓存。二级缓存是默认启用的(要生效需要对每个Mapper进行配置),如想取消,则可以通过Mybatis配置文件中的元素下的子元素来指定cacheEnabled为false。

最新回复(0)