MyBatis与JPA在ORM映射、可移植性、日志系统及SQL优化方面存在显著差异:MyBatis为半自动ORM,需手写SQL,耦合性较高但优化灵活,日志功能较弱;JPA为全自动ORM,支持HQL,对象与数据库解耦好,日志系统健全但复杂SQL处理能力有限。MyBatis支持简单类型、集合及JavaBean作为输入输出参数,通过属性名映射。实现一对多关联查询可使用嵌套查询(通过collection标签调用子查询)或嵌套结果(联表查询后映射子集合)。$与#的区别在于#使用预编译防注入且高效,$直接拼接参数用于动态列名等特殊场景,虽不安全但必要。MyBatis XML与Mapper接口通过namespace属性绑定。自定义分页效率高于插件分页,因可针对大数据偏移优化。MyBatis缓存分两级:一级为SqlSession级默认启用,二级为SqlSessionFactory级需手动开启,基于LRU策略,缓存SELECT结果并在增删改时刷新。cookie与session在存储位置、容量、安全性、生命周期等方面不同,session依赖cookie传递SESSIONID实现状态跟踪。GET请求幂等、参数暴露于URL且长度受限,适用于非敏感数据获取;POST非幂等、参数在请求体无长度限制,适合创建资源或传输敏感数据。400错误表示请求参数语义错误。乱码问题可通过统一客户端与服务端编码解决,GET需配置