面试题(三)mybatis

1、动态sql标签

  • if标签(逻辑判断)
  • where标签(SQL判断)
  • choose,when,otherwise(Java中的switch)
  • set (sql修改)
  • trim(截断 添加)
  • bind(模糊查询)
  • foreach(循环)
  • sql (复用)

2、mybatis是如何实现缓存的?什么是一级缓存,什么是二级缓存?

把经常访问但是不经常修改的数据存储在缓存内容中,减少与数据库交互,从而达到提高效率的目的

①、一级缓存

默认存在,无法关闭

缓存的数据存储在SQLSession对象中(类似Map集合,键对应的sql语句,值就是语句对应的结果)

不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。

②、二级缓存

是把缓存的数据存储在SQLSessionFactory上面(对象内部)

二级缓存的数据,所有的session可以共用

二级缓存默认关闭,使用的需要配置

3、mybatis是如何做分页的?

1、数组分页

先查询出所有数据,再使用subList()方法进行数据分页,不实用,还是会占用大量内存

2、SQL分页

SELECT * FROM table_name LIMIT #{startIndex}, #{pageSize};

3、RowRounds分页

RowBounds 是 MyBatis 提供的一个分页辅助类,它允许你直接在 SQL 映射文件中实现分页

RowBounds rowBounds = new RowBounds((currPage - 1) * pageSize, pageSize);
List list = sqlSession.selectList("com.eric.entity.UserMapper.getAll", null, rowBounds);

4、分页插件

MyBatis 分页插件是另一种实现分页的方式,它通过拦截器拦截 SQL 语句,然后动态地添加 limit 子句来实现分页。

PageHelper.startPage(pageNo, pageSize);
List page = userMapper.selectAll();
PageInfo pageInfo = new PageInfo<>(page);

5、可以使用limit进行分页,这是数据库自带的分页方式

4、什么是内置对象

在某种编程语言或框架中,已经预先定义并且可以直接使用的对象。

内置对象的特点和优势:

1、方便性:内置对象提供了许多常见的功能和操作,可以直接使用,无需自己编写复杂的代码。

2、高效性:内置对象通常经过优化,性能较好,可以提高程序的运行效率。

3、可复用性:内置对象可以被多个程序或模块复用,减少了代码的重复编写。

4、可维护性:内置对象由语言或框架提供,维护和更新由开发者社区或团队负责,可以保证其稳定性和可靠性。

5、为什么dao层接口不能方法重载

因为mybatis中,dao层的方法时通过动态代理来实现的,方法名会被作为id,id具有唯一性,所以不能进行方法重载

6、为什么mybatis是个半自动化的框架

mybatis并不完全自动进行数据访问,需要开发者自己写sql语句

7、mybatis如何做模糊查询(5种方法在代码里)


8、mybatis是如何获取自动生成的主键的


	
		insert into Teacher(tname,tsex,tbirthday,taddress,temail,tmoney)
		values(#{tname},#{tsex},#{tbirthday},#{taddress},#{temail},#{tmoney})
	

9、mybatis出传递多参的方式


	


	
	

10、mybatis解决了JDBC什么问题(4)

硬编码

SQL参数固定(动态sql)

代码重复度高

底层技术

11、mybatis怎么实现一对一,一对多查询

一对多可以通过 标签中的 子标签来完成


  
  
  
  
  





一对一查询可以通过 标签中的 子标签来完成。


  
  
  
  
  





你可能感兴趣的:(java,mybatis,开发语言)