MyBatis是一款基于Java语言的ORM框架,能够帮助开发者轻松完成SQL语句的映射配置,提高开发效率。在使用MyBatis框架时,最常用的就是映射器mapper,本篇文章就来详细讲解一下MyBatis映射器mapper的快速入门教程,包括如何创建映射器mapper、配置映射关系及映射器的使用。
创建MyBatis映射器mapper
创建MyBatis映射器mapper可以通过两种方式实现,一种是使用XML配置文件,另一种是使用注解方式。本文将以XML方式创建映射器为例。
步骤一:创建Java Bean
在开始创建映射器mapper之前,需要先准备好所需要用到的Java Bean,Java Bean应该与数据库表所对应。
例如,以下示例代码中有一个User类,用于模拟数据库中的用户表:
public class User {
private Integer id;
private String username;
private Integer age;
// getter/setter省略
}
步骤二:创建映射器XML配置文件
在MyBatis中,映射器XML配置文件通常保存在/src/main/resources
目录下。
例如,在本地硬盘中C:\MyProject\src\main\resources\mappers\UserMapper.xml
路径下,是一个简单的示例映射器mapper的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.example.mapper.UserMapper">
<resultMap id="BaseResultMap" type="org.example.entity.User">
<id column="id" property="id" jdbcType="INTEGER" />
<result column="username" property="username" jdbcType="VARCHAR" />
<result column="age" property="age" jdbcType="INTEGER" />
</resultMap>
<select id="getUserById" resultMap="BaseResultMap">
SELECT * FROM users WHERE id = #{id}
</select>
<insert id="addUser" parameterType="org.example.entity.User">
INSERT INTO users(username, age) VALUES(#{username}, #{age})
</insert>
<update id="updateUser" parameterType="org.example.entity.User">
UPDATE users SET username = #{username}, age = #{age} WHERE id = #{id}
</update>
<delete id="deleteUserById" parameterType="java.lang.Integer">
DELETE FROM users WHERE id = #{id}
</delete>
</mapper>
步骤三:配置MyBatis映射器mapper
在MyBatis的主配置文件/src/main/resources/mybatis-config.xml
中,配置mapper:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 导入映射器XML配置文件 -->
<mappers>
<mapper resource="mappers/UserMapper.xml" />
</mappers>
</configuration>
这样,MyBatis就已经完成了对映射器mapper的配置。
使用MyBatis映射器mapper
在完成了映射器mapper的创建和配置后,就可以开始使用映射器mapper了。以UserMapper为例,以下示例展示了如何在Java程序中使用MyBatis映射器mapper:
public class Test {
public static void main(String[] args) {
SqlSession sqlSession = null;
try {
// 初始化SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
sqlSession = sqlSessionFactory.openSession();
// 获取映射器mapper
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 查询数据
User user = userMapper.getUserById(1);
System.out.println(user);
// 插入数据
User newUser = new User();
newUser.setUsername("Jack");
newUser.setAge(20);
userMapper.addUser(newUser);
// 更新数据
user.setUsername("Tom");
userMapper.updateUser(user);
// 删除数据
userMapper.deleteUserById(1);
// 提交事务
sqlSession.commit();
} catch (Exception e) {
// 回滚事务
sqlSession.rollback();
} finally {
// 关闭SqlSession
if (sqlSession != null) {
sqlSession.close();
}
}
}
}
以上示例中,首先初始化SqlSessionFactory
,然后创建SqlSession
并获取映射器UserMapper
,即可对数据库进行增删改查等操作。
另一个示例,以下是一个更加复杂的映射器mapper示例代码:
public interface OrderMapper {
// 查询订单及所关联的用户信息
Order queryOrderWithUser(Integer id);
// 嵌套查询,查询订单及订单下的所有订单项及订单项对应的商品信息和价格
Order queryOrderWithOrderItems(Integer id);
// 嵌套查询,查询订单及订单下的所有订单项及订单项对应的商品信息和价格,一次性加载
Order queryOrderWithOrderItemsOneStep(Integer id);
// 查询订单及订单对应的所有地址信息
Order queryOrderWithAddresses(Integer id);
}
在以上示例中,除了普通的SQL语句之外,还使用了多个嵌套查询来实现对多个表的查询。在使用MyBatis映射器mapper时,使用嵌套查询可以有效避免代码冗长和效率低下等问题。
总之,MyBatis映射器mapper是MyBatis框架最常用的组件之一,开发者只要掌握了如何创建映射器mapper、配置映射关系及映射器的使用方法,就能够轻松地完成Java程序与数据库之间的交互。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MyBatis映射器mapper快速入门教程 - Python技术站