网站做锚点wordpress企业站被黑
网站做锚点,wordpress企业站被黑,汕头服饰网站建设,怎么做自己的代刷网站MyBatis多表联合查询笔记
一.ResultMap
多表查询不能用resultType#xff08;只能映射单表#xff09;#xff0c;必须用resultMap自定义映射规则#xff1b;解决核心问题#xff1a;多表字段重名#xff08;如id#xff09;、关联对象/集合映射。
二、两大核心标签关联…MyBatis多表联合查询笔记一.ResultMap多表查询不能用resultType只能映射单表必须用resultMap自定义映射规则解决核心问题多表字段重名如id、关联对象/集合映射。二、两大核心标签关联关系标签关键属性适用场景一对一associationjavaType关联类订单→用户一个订单属一个用户一对多collectionofType集合元素类用户→订单一个用户有多个订单三、SQL避坑2个要点联表用LEFT JOIN保证主表数据不丢比如查用户即使无订单也能返回重名字段加别名如o.id AS oid、u.id AS uid避免MyBatis映射混淆。四、必避3个坑命名一致Mapper.xml的namespace接口全类名id接口方法名标签别搞反一对一用association一对多用collection开启驼峰mapUnderscoreToCamelCasetrue自动映射create_time→createTime。五、简单示例一对一订单查用户resultMapidOrderUserMaptypeOrderidcolumnoidpropertyid/associationpropertyuserjavaTypeUseridcolumnuidpropertyid/resultcolumnusernamepropertyusername//association/resultMap一对多用户查订单resultMapidUserOrderMaptypeUseridcolumnuidpropertyid/collectionpropertyordersofTypeOrderidcolumnoidpropertyid/resultcolumnnumberpropertynumber//collection/resultMap多对多1. 核心关系标签关联关系核心逻辑标签/关键属性示例场景多对多拆成两个「一对多」 中间表collectionofType用户-角色中间表user_role2. 多对多要点核心必须有中间表如user_role关联两个主表的主键user_id、role_id映射主实体用collection嵌套关联实体比如User里加ListRole rolesSQL联查3张表主表1 中间表 主表2例SELECTu.id uid,r.id rid,r.role_nameFROMuseruLEFTJOINuser_role urONu.idur.user_idLEFTJOINrole rONur.role_idr.idWHEREu.id#{id}ResultMap关键结构resultMapidUserRoleMaptypeUseridcolumnuidpropertyid/collectionpropertyrolesofTypeRoleidcolumnridpropertyid/resultcolumnrole_namepropertyroleName//collection/resultMap六、MyBatis缓存一级二级1. 一级缓存本地缓存✅ 特性默认开启SqlSession级别同一个会话内有效✅ 效果同SqlSession、同SQL、同参数只查1次数据库后续读缓存❌ 失效场景增删改操作、关闭/切换SqlSession、手动清空缓存sqlSession.clearCache()。2. 二级缓存全局缓存✅ 开启条件三步必做核心配置开启setting namecacheEnabled valuetrue/默认true可省略Mapper.xml加cache/标签开启当前Mapper的二级缓存实体类实现Serializable接口缓存需序列化✅ 特性SqlSessionFactory级别跨SqlSession复用缓存❌ 注意增删改会清空当前Mapper的二级缓存避免数据脏读。3. 缓存核心记忆点缓存级别作用域开启方式核心特点一级SqlSession默认开启同会话复用关闭即失效二级SqlSessionFactory手动配置序列化跨会话复用增删改清空七、核心避坑补充多对多别忘中间表标签仍用collection不是新标签二级缓存只缓存查询结果实体类必须序列化缓存优先级二级缓存 → 一级缓存 → 数据库。