把经常访问但是不经常修改的数据存储在缓存内容中,减少与数据库交互,从而达到提高效率的目的
①、一级缓存
默认存在,无法关闭
缓存的数据存储在SQLSession对象中(类似Map集合,键对应的sql语句,值就是语句对应的结果)
不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。
②、二级缓存
是把缓存的数据存储在SQLSessionFactory上面(对象内部)
二级缓存的数据,所有的session可以共用
二级缓存默认关闭,使用的需要配置
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进行分页,这是数据库自带的分页方式
在某种编程语言或框架中,已经预先定义并且可以直接使用的对象。
内置对象的特点和优势:
1、方便性:内置对象提供了许多常见的功能和操作,可以直接使用,无需自己编写复杂的代码。
2、高效性:内置对象通常经过优化,性能较好,可以提高程序的运行效率。
3、可复用性:内置对象可以被多个程序或模块复用,减少了代码的重复编写。
4、可维护性:内置对象由语言或框架提供,维护和更新由开发者社区或团队负责,可以保证其稳定性和可靠性。
因为mybatis中,dao层的方法时通过动态代理来实现的,方法名会被作为id,id具有唯一性,所以不能进行方法重载
mybatis并不完全自动进行数据访问,需要开发者自己写sql语句
insert into Teacher(tname,tsex,tbirthday,taddress,temail,tmoney)
values(#{tname},#{tsex},#{tbirthday},#{taddress},#{temail},#{tmoney})
硬编码
SQL参数固定(动态sql)
代码重复度高
底层技术
一对多可以通过
一对一查询可以通过