03-Mapper代理开发

在MyBatis中,Mapper代理开发是一种常用的方式,它可以让我们使用Java接口来声明SQL语句,从而避免手写XML文件的繁琐和出错。

一、使用mapper代理开发的要求

  1. Mapper接口必须使用Java接口来声明,并且方法名和参数列表应该与对应的SQL语句相同。

  2. Mapper XML文件应该保存在与Mapper接口相同的包路径下,并且文件名应该与Mapper接口的名称相同。

  3. 在Mapper XML文件中,可以使用MyBatis的标签来编写SQL语句,并且可以通过${}语法来引用Mapper接口中声明的方法参数。

  4. 创建SqlSessionFactory对象时需要指定MyBatis的配置文件,并将其放置在类路径下。

  5. 使用SqlSession.getMapper()方法获取Mapper代理对象,并调用对应的方法来执行SQL语句。

  6. 记得在使用完毕后关闭SqlSession对象以释放资源。

二、步骤

1.编写Mapper接口

Mapper接口是用于声明SQL语句的Java接口,它应该包含一个或多个方法,每个方法对应一条SQL语句。方法名和参数列表应该与要执行的SQL语句对应。例如,如果要查询用户信息,可以编写如下的Mapper接口:

public interface UserMapper {
    User selectById(int id);
}

2.编写Mapper XML文件

Mapper XML文件是用于实现Mapper接口中声明的SQL语句的XML文件。这个文件应该保存在与Mapper接口相同的包路径下,并且文件名应该与Mapper接口的名称相同。例如,在上面的例子中,我们应该编写一个名为 UserMapper.xml 的文件。

在这个XML文件中,我们可以使用MyBatis的标签来编写SQL语句,并且可以通过${}语法来引用Mapper接口中声明的方法参数。例如,如果要查询用户信息,可以编写如下的XML片段:

<!-- 文件名:UserMapper.xml -->
<mapper namespace="com.example.mapper.UserMapper">
    <select id="selectById" resultMap="userResultMap">
        SELECT id, name, age
        FROM user
        WHERE id = #{id}
    </select>
</mapper>

其中,id属性对应于Mapper接口中声明的方法名,resultMap属性指定了查询结果映射的Java对象。

3.创建SqlSessionFactory对象

SqlSessionFactory是Mybatis中最重要的对象之一,它用于创建SqlSession对象。SqlSession是执行SQL语句的主要入口,它提供了一系列执行SQL语句的方法。可以通过如下代码来创建SqlSessionFactory对象:

String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

这里假设配置文件名为mybatis-config.xml,并且放置在类路径(classpath)下。Resources.getResourceAsStream()方法可以获取配置文件的输入流。

4.获取Mapper代理对象

在Java代码中使用Mapper代理来执行SQL语句。这可以通过SqlSession.getMapper()方法来实现。例如,在上面的例子中,可以编写如下代码片段:

SqlSession sqlSession = sqlSessionFactory.openSession();
try {
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    User user = userMapper.selectById(1);
    System.out.println(user);
} finally {
    sqlSession.close();
}

在这个例子中,我们首先通过SqlSessionFactory.openSession()方法创建一个SqlSession对象。然后,通过SqlSession.getMapper()方法创建一个Mapper代理对象,从而可以调用Mapper接口中声明的方法来执行SQL语句。最后,记得要关闭SqlSession对象以释放资源。

三、包扫描自动注册Mapper接口和XML文件

MyBatis提供了一种方便的方式来简化Mapper接口和Mapper XML文件的配置,即使用包扫描来自动注册Mapper接口和XML文件。这样可以减少手动配置的工作量,并使代码更加简洁和易于维护。

具体实现步骤如下:

1.在mybatis-config.xml配置文件中添加<mappers>标签。

2. 在<package>标签中指定Mapper接口和XML文件所在的包路径,这里假设Mapper接口和XML文件位于com.example.mapper包下。

3.然后就可以直接在Java代码中使用对应的Mapper接口了,无需再手动注册。

<mappers>
    <package name="com.example.mapper"/>
</mappers>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值