Java MyBatis 怎么用
很多做后端开发的朋友,刚接触数据库操作时,总觉得手写SQL麻烦又容易出错——要写连接、关流,还要处理参数和结果映射,稍不注意就会出现“空指针”“参数类型不匹配”的问题。这时候,一款叫MyBatis的工具就能帮上大忙,它是Java生态里最常用的数据库交互框架之一,能帮你省掉很多重复的代码。
第一步:先搭好MyBatis的“基础架子”
用MyBatis之前,得先把它集成到Java项目里。如果是用Maven的项目,只要在pom.xml文件里加几行依赖就行,就像给电脑装个常用软件,输入指定的安装命令,不用自己从网上找安装包。除了MyBatis本身,还要加数据库驱动,比如用MySQL的话,就加MySQL的驱动依赖,这样MyBatis才能和数据库“对话”。

依赖加好后,还要写一个核心配置文件,就像给工具设使用规则:告诉MyBatis数据库的地址、用户名和密码,还有要找的SQL文件放在哪里。举个生活化的例子,这就像你租了个商铺,得先告诉物业商铺的具体位置(数据库地址)、开门密码(账号密码),还有你的货物清单(SQL文件)放在哪个仓库。
第二步:写你需要的SQL“小纸条”
MyBatis的核心优势,就是把SQL从Java代码里单独拎出来写,不用在复杂的Java类里插一堆字符串,看起来一目了然。这些SQL要放在专门的Mapper文件里,比如UserMapper.xml,里面可以写“查所有用户”“根据ID查单个用户”“新增用户”这类常用的操作。
比如要查所有用户,不用手写一堆连接关流的代码,只要在Mapper里写一段简短的SQL标签:
`xml
<select id="selectAllUsers" resultType="com.example.User">
SELECT * FROM user
</select>
`
这里的id是这个SQL的名字,resultType告诉MyBatis,把查出来的数据库行数据,自动转换成Java里的User类对象——这就像你把超市打印的购物小票(数据库结果),自动整理成自己记的清单(Java对象),不用自己一笔一笔抄。
如果是要带参数的SQL,比如查指定ID的用户,也不用拼接字符串怕出错,只要在SQL里加个占位符#{id},MyBatis会自动把Java里传过来的参数填进去,还会处理特殊字符,防止SQL注入,安全性比自己写拼接代码高很多。
第三步:用接口调用SQL,把“工具”用起来
写好了Mapper文件,还要配一个和它同名的Java接口,比如UserMapper.java,接口里的方法名要和Mapper里SQL的id对应,比如List<User> selectAllUsers();。这一步就像你在工具的说明书里,找到“查所有用户”对应的操作按钮,不用自己手动调用底层逻辑。
最后,在Java代码里,通过MyBatis提供的SqlSession工厂获取会话,用这个会话拿到Mapper接口的实例,直接调用接口方法就行。比如:
`java
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> users = mapper.selectAllUsers();
}
`
这里的try-with-resources语法,会自动帮你关会话,不用手动写session.close(),就像你用完工具自动放回工具箱,不会丢东西。
小提示:别踩这两个常见的小坑
刚用MyBatis的朋友,容易犯两个小错误。第一个是Mapper文件没注册到核心配置里,就像你给了朋友地址,但没告诉物业他是租户,朋友根本进不来;第二个是resultType写错,比如把User类写成其他类,就像你把购物小票整理成了零食清单,找衣服肯定找不到。
只要按这几步来,从搭架子到写SQL再到调用,慢慢就能摸透MyBatis的用法,不用再为数据库操作的重复代码发愁。