MyBatis 是一个优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的工作,使得开发者可以更专注于 SQL 本身。增删查改(CRUD)是数据库操作中最常见的四种操作,下面简要介绍 MyBatis 如何实现这些功能:
-
增加(Create) - 插入数据到数据库中:
xml
<insert id="insertUser" parameterType="User">INSERT INTO users (id, name, email) VALUES (#{id}, #{name}, #{email}) </insert>
对应的 Mapper 接口方法:
java
void insertUser(User user);
-
删除(Delete) - 从数据库中删除数据:
xml
<delete id="deleteUser" parameterType="int">DELETE FROM users WHERE id = #{id} </delete>
对应的 Mapper 接口方法:
java
void deleteUser(int id);
-
查询(Read/Query) - 从数据库中查询数据:
- 查询单条记录:
xm
对应的 Mapper 接口方法:<select id="selectUserById" parameterType="int" resultType="User">SELECT * FROM users WHERE id = #{id} </select>
java
User selectUserById(int id);
- 查询多条记录:
xml
对应的 Mapper 接口方法:<select id="selectAllUsers" resultType="User">SELECT * FROM users </select>
java
List<User> selectAllUsers();
- 查询单条记录:
-
修改(Update) - 更新数据库中的数据:
xml
<update id="updateUser" parameterType="User">UPDATE users SET name = #{name}, email = #{email} WHERE id = #{id} </update>
对应的 Mapper 接口方法:
java
void updateUser(User user);
在 MyBatis 中,这些操作通常在 XML 映射文件中定义,然后通过对应的 Mapper 接口来调用。Mapper 接口是一个 Java 接口,它的方法与 XML 文件中定义的 SQL 语句相对应。MyBatis 通过动态代理技术在运行时实现这些接口,并将方法调用转发到 SQL 执行。
使用 MyBatis 时,你还需要配置 SqlSessionFactory
和 SqlSession
。SqlSessionFactory
是创建 SqlSession
的工厂,而 SqlSession
提供了执行命令和获取映射器的方法。
简单示例代码如下:
java
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(reader);
try (SqlSession session = sqlSessionFactory.openSession()) {UserMapper userMapper = session.getMapper(UserMapper.class);User user = new User();user.setId(1);user.setName("Kimi");user.setEmail("kimi@moonshot.cn");userMapper.insertUser(user);session.commit();
}
以上代码展示了如何使用 MyBatis 进行增删查改操作。实际使用时,你需要根据具体的数据库表结构和业务需求来编写相应的 SQL 语句和 Mapper 接口。
输出结果映射:
输出结果类型可以是 Map、 List 等集合类型,也可以是基本数据类型和 POJO 类型。输出结果映射过程类似于 JDBC 对结果集的解析过程。