当前位置:首页 > 知识 > mybatis菜鸟教程 正文

mybatis菜鸟教程

来源:烟消火灭网   作者:探索   时间:2026-10-17 05:53:20

MyBatis菜鸟教程

我第一次用MyBatis的菜程时候,差点被它的鸟教XML配置搞疯。明明SQL就写在那,菜程可就是鸟教查不出数据,后来才发现是菜程resultType写错了,把User写成了user。鸟教大小写这玩意儿,菜程在MyBatis里真能要命。鸟教

其实MyBatis就是菜程个帮你管数据库连接的中间层。你写SQL,鸟教它帮你执行;你写接口,菜程它帮你映射。鸟教核心就俩文件:一个mapper XML(或者注解),菜程一个配置文件。鸟教配置文件管数据源和连接池,菜程mapper管SQL语句。

打个比方,MyBatis就像个外卖小哥。你(业务代码)不用自己跑去餐厅(数据库)做饭(执行SQL),只要在菜单(mapper)上点菜(调用接口方法),小哥就会把菜送到你手上(返回结果对象)。但前提是——你得把菜单写好。

新手最容易栽的坑,第一个就是#{ } 和 ${ }的区别。#{ } 是预编译,会生成问号占位符,安全防注入;${ }是字符串拼接,直接把值塞进SQL里,有注入风险。我见过有同事图省事用${ }排序字段,结果被DBA骂了半小时。排序字段这种动态列名,确实没法用#{ } ,但至少要做白名单校验。

第二个坑是N+1查询。你以为关联查询就是或标签一写就完事?天真。如果没配懒加载,MyBatis会先查主表,再逐条查关联表,100条数据就是101次查询,数据库直接卡死。解决办法要么用join查询一次性取完,要么配lazyLoadingEnabled=true,但懒加载也有坑——在事务外访问懒加载属性会报LazyInitializationException。

说个我自己的糗事。刚开始用MyBatis时,我总觉得XML里写SQL很丑,非要全用注解。结果写了个动态查询,