【Java面试】2022年10月最新面试题系列 之 MyBatis

1、mybatis如何实现操作数据库

1、导入mybatis的依赖包
2、添加日志的配置文件log4j.properties,放在src/main/resourses下
3、配置sqlmapconfig.xml文件
		1、添加约束信息
		2、数据库连接信息、数据库连接池
		3、加载mapper.xml配置文件
4、配置mapper.xml文件
5、定义实体类对象
6、测试
		1、加载核心配置文件
    2、创建sqlSessionFactory对象
    3、创建sqlSession
    4、执行sql语句,传递参数、获取结果
    5、关闭sqlSession

2、mybatis#和$的区别

1、#使用的是?的形式,在sql语句中做占位符使用;$不使用占位符,是字符串的连接;
2、#使用的是 PreparedStatement 执行sql,效率较高;$使用的是 Statement 执行sql,效率较低;
3、#能够防止sql注入,$不能防止sql注入

3、mybatis如何实现分页

使用limit关键字,limit 5,10;代表检索第6-15行数据

4、mybatis的底层运行原理

5、为什么要使用mybatis

6、mybatis中的SQL语句用到的标签有哪些?

1、where…if… 标签 :用于管理where的语句
  a) 如果没有条件, 不会生成 where 关键字
	b) 如果有条件, 会自动添加 where 关键字
	c) 如果第一个条件中有 and, 自动去除之
2、choose…when…otherwise… 标签 :类似switch语句
3、script 标签 :要在带注解的映射器接口类中使用动态sql,可以使用script
4、bind 标签 :对传出来的语句进行再加工
5、foreach 标签 :拼接参数,用于in语句中
6、include 标签 :可引用部分sql语句,便于调用

7、mybatis怎么进行数值的校验

方法1、创建自定义注解,然后再写一个Mybatis拦截器,拦截 查询相关方法,如果发现 输入参数有自定义注解,并且参数为Null,则直接返回空;
方法2、在Service层 对参数做判断,如果参数为空,直接返回,不需要调用DAO层查询

8、如何开启mybatis二级缓存

方式1、在mapper接口上添加@CacheNamespace注解;
方式2、在mapper.xml文件中添加<cache />
		添加<cache />标签后, 默认整个mapper中的select方法都会被缓存

A、MybatisPLUS

1、mybatisplus支持创建时间和更新时间吗?

mybatis-plus会自动帮我们更新创建时间和更新时间,但是每张表的字段名必须都得一致。就是每张表的创建时间都叫create_time ,更新时间叫update_time

2、mybatisplus分页查询如何实现?

在后端代码中的controller层中,实现一个IPage对象的实例引用,然后设置总记录数及每页显示条数
持续更新中。。。
经验分享 程序员 微信小程序 职场和发展