嗨,Java 开发者们!有没有被复杂的数据库操作搞得焦头烂额?今天我们来聊聊 MyBatis,一个能帮你摆脱繁琐 SQL 手写痛苦的神器!
MyBatis,简称"小麦",是 Java 世界里处理数据库的老大哥。它不像 Hibernate 那样“全自动”,但它的“半自动”风格让人倍感舒适,既能享受 SQL 的自由,又能避免繁琐的 JDBC 操作。
那么,话不多说,让我们开启 MyBatis 的奇妙之旅吧!
首先,在你的项目中引入 MyBatis 依赖,如果你是 Maven 党,直接在 pom.xml
中添加:
<dependencies>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
<version>3.5.13version>
dependency>
dependencies>
如果你是 Gradle 党,那就来一发:
dependencies {
implementation 'org.mybatis:mybatis:3.5.13'
}
MyBatis 需要一个核心配置文件 mybatis-config.xml
,类似于程序的"说明书",简单示例如下:
DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
dataSource>
environment>
environments>
configuration>
看起来有点复杂?别担心,配置一次,吃遍天下!
MyBatis 最酷的一点是它的 XML 映射文件,让你轻松管理 SQL。新建一个 UserMapper.xml
,定义你的 SQL:
<mapper namespace="com.example.mapper.UserMapper">
<select id="getUserById" resultType="com.example.model.User">
SELECT * FROM users WHERE id = #{id}
select>
mapper>
这里的 #{id}
是 MyBatis 的动态参数,自动防 SQL 注入,让你代码更安全!
接着,咱们用 Java 接口映射 SQL,省心省力!
public interface UserMapper {
User getUserById(int id);
}
完美映射,调用就像调用普通方法一样简单!
来吧,真正的武功要靠实战,写个示例试试看。
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.getUserById(1);
System.out.println(user);
}
案例:批量查询用户
<select id="getUsersByIds" resultType="User">
SELECT * FROM users WHERE id IN
<foreach item="id" collection="list" open="(" separator="," close=")">
#{id}
foreach>
select>
List<Integer> ids = Arrays.asList(1, 2, 3);
List<User> users = mapper.getUsersByIds(ids);
要查询条件随心所欲?MyBatis 动态 SQL 轻松帮你搞定!
<select id="findUsers" resultType="User">
SELECT * FROM users WHERE 1=1
<if test="name != null">
AND name = #{name}
if>
select>
案例:根据多个条件筛选用户
Map<String, Object> params = new HashMap<>();
params.put("name", "张三");
List<User> users = mapper.findUsers(params);
想插入数据?一行代码搞定!
<insert id="insertUser">
INSERT INTO users (name, age) VALUES (#{name}, #{age})
insert>
调用方式:
User user = new User("小明", 25);
mapper.insertUser(user);
session.commit();
记得 session.commit()
,否则你的数据只是白日梦!
join
。恭喜你!现在你已经掌握 MyBatis 的基本用法,数据库操作不再是噩梦,而是愉快的旅程。无论是简单查询,还是复杂映射,MyBatis 都能游刃有余!
还等什么?赶紧去试试吧,玩转你的数据库世界!
希望这篇教程对你有帮助,如果看完觉得有收获,不妨来点个赞哦!