补充1.在实际项目开发中单一实体类往往不能满足实际需求那么就会需要其他格式来存储这样分层保住了系统的安全底线隔离了数据库、后端和前端的变化让各个模块可以独立演进。DO 对应数据库DTO 对应前后端/服务间传参VO 对应前端页面展示2.POJO类概念POJO 的全称是 Plain Old Java Object普通老式 Java 对象。它的核心意思是一个不依赖任何特殊框架、不继承特定基类、也不实现特定接口的普通 Java 类。它通常只包含私有属性以及对应的 getter/setter 方法不承载业务逻辑。3.mybatis的一级和二级缓存mybatis的一级缓存是SQLsession级别的二级缓存是sessionfactory级别的一级缓存当mybatis的同一个SQLsession在短时间内执行了两次相同的查询时mybatis不会再次连接数据库而是直接将刚才的查询结果打印但是在两次查询之间不能有插入或者添加操作。一级缓存的意义就是执行相同操作的时候不用反复连接数据库节省资源提高运行效率。二级缓存就是将一级缓存的内容拿到sessionfactory里这样用同一个sessionfactory创建的SQLsession都可以用这个缓存不用连接数据库操作了但是提交二级缓存要在mybatis配置文件里进行相关配置而且还要在相关mapper映射里添加二甲缓存的标签配置完成后要等SQLsession关闭或者提交一次后一级缓存才会进入到二级缓存中。执行顺序一级缓存默认开启且无法关闭 ----二级缓存手动配置开启 -----数据库当你执行 save、update、delete 时框架会同时清理或者使其失效一级和二级缓存中对应的数据防止读到脏数据4.MBG插件当数据库中有很多张表时逐一创建实体类相关mapper和映射效率太低这时候就可以使用代码反向生成器MBG插件来自动生成。首先要在项目的pom.xml里配置相关依赖然后在resources文件夹下创建一个新的配置文件generatorConfig.xml设置实体类、Mapper 映射文件、Dao 接口对应位置最后打开Idea 中maven 的视图 , Plugins → mybatis-generator → mybatis-generator:generator双击运行即可。3.关联查询3.1 1-1查询建立实体类public class Teacher { private int id; private String name; } public class Classes { private int id; private String name; private Teacher teacher; }相关mapper映射的配置select idgetClass parameterTypeint resultMapClassResultMap select * from class c, teacher t where c.teacher_idt.t_id and c.c_id#{id} /select resultMap type_Classes idClassResultMap id propertyid columnc_id/ result propertyname columnc_name/ association propertyteacher javaType_Teacher id propertyid columnt_id/ result propertyname columnt_name/ /association /resultMap我个人理解的流程先有一个表对应的实体类然后创建一个vo类来继承这个实体类并且添加我们所需要的相关属性完成之后要在对应的mapper映射文件里配置resultmap配置完成后再写相关功能的sql当然也要在接口中添加相关方法。3.2 1-n查询相关映射文件配置select idgetClass3 parameterTypeint resultMapClassResultMap3 select * from class c, teacher t,student s where c.teacher_idt.t_id and c.C_ids.class_id and c.c_id#{id} /select resultMap type_Classes idClassResultMap3 id propertyid columnc_id/ result propertyname columnc_name/ !-- ofType指定students集合中的对象类型 -- collection propertystudents ofTypeStudent id propertyid columns_id/ result propertyname columns_name/ /collection /resultMap4.分页插件配置相关的依赖配置:dependency groupIdcom.github.pagehelper/groupId artifactIdpagehelper/artifactId version5.0.3/version /dependency在mybatis的配置文件中也要进行相关配置但要注意这个配置在文件中的位置是有要求的不知道的可以去mybatis中文官网查询plugins plugin interceptorcom.github.pagehelper.PageInterceptor/plugin /plugins分页插件的简单使用在查询之前通过PageHelper.startPage(页码条数)设置分页信息紧跟在这条信息后面的查询语句即为分页查询。PageObject objects PageHelper.startPage(2, 5); ListProduct products mapper1.selectByExample(productExample);在查询完数据后使用PageInfo对象封装查询结果可以获取更详细的分页信息以及可以完成分页逻辑。PageObject objects PageHelper.startPage(2, 5); ListProduct products mapper1.selectByExample(productExample); PageInfo pageInfonew PageInfo(products);