关键词

基于Spring整合mybatis的mapper生成过程

下面是基于Spring整合MyBatis的Mapper生成过程的完整攻略。

1. 准备工作

在开始整合MyBatis和Spring之前,确保已经完成以下工作:

  • 已经拥有一个Spring项目并且能够正常运行;
  • 已经添加了MyBatis和MyBatis-Spring的依赖;
  • 已经配置了MyBatis的数据源、事务管理和SqlSessionFactory等内容。

2. 添加Mapper依赖

在配置完MyBatis的基础内容之后,我们需要添加Mapper的依赖。在maven项目中,可以添加以下依赖:

<dependencies>
    <!-- mybatis-spring整合包 -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>1.3.2</version>
    </dependency>

    <!-- MyBatis Generator反向生成Mapper所需依赖,非必须 -->
    <dependency>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-core</artifactId>
        <version>1.3.5</version>
    </dependency>

</dependencies>

3. 添加Mapper配置文件

在添加完依赖之后,需要在Mybatis的配置文件中添加Mapper的配置信息。

<!-- mybatis-config.xml中添加mappers配置信息 -->

<configuration>
  <mappers>
    <!-- 扫描com.demo.mapper包中的所有Mapper -->
    <package name="com.demo.mapper" />

    <!-- 或者手动指定每个Mapper的位置 -->
    <mapper resource="com/demo/mapper/xxxMapper.xml" />
    <mapper resource="com/demo/mapper/yyyMapper.xml" />
  </mappers>
</configuration>

4. 创建Mapper接口

Mapper接口是用来定义Mybatis中SQL语句的接口,需要遵循以下规则:

  • Mapper接口必须和对应的Mapper.xml文件位于同一个目录下;
  • Mapper接口必须继承org.apache.ibatis.annotations.Mapper;
  • Mapper接口中的方法必须与对应的Mapper.xml文件中定义的SQL语句相同。

例如,在创建用户User的Mapper时,需要创建一个名为UserMapper的Java接口,如下所示:

@Mapper
public interface UserMapper {

    /**
     * 根据用户ID获取用户信息
     * @param userId 用户ID
     * @return User对象
     */
    User getUserById(Integer userId);

    /**
     * 根据用户名获取用户信息
     * @param userName 用户名
     * @return User对象
     */
    User getUserByName(String userName);

}

5. 声明Mapper接口和对应的Mapper.xml文件

在以上步骤完成之后,需要在Mapper.xml文件中声明Mapper接口和对应的SQL语句。

例如,在创建用户User的Mapper时,需要创建一个名为UserMapper.xml的Mapper文件,并在其中添加以下内容:

<!-- UserMapper.xml -->
<mapper namespace="com.demo.mapper.UserMapper">

    <!-- 根据用户ID获取用户信息 -->
    <select id="getUserById" parameterType="java.lang.Integer" resultType="com.demo.entity.User">
        select * from user where id = #{id}
    </select>

    <!-- 根据用户名获取用户信息 -->
    <select id="getUserByName" parameterType="java.lang.String" resultType="com.demo.entity.User">
        select * from user where username = #{name}
    </select>

</mapper>

6. 使用Mapper接口

在以上步骤完成之后,就可以在Spring项目中使用Mapper接口了。

首先,在Service或Controller中引入Mapper接口:

@Autowired
private UserMapper userMapper;

然后,在需要调用SQL语句的方法中调用Mapper接口方法即可:

User user = userMapper.getUserById(1);

示例1

以下是一个完整的示例,以创建User用户的Mapper为例。

1)首先,在pom.xml文件中添加以下依赖:

<!-- mybatis-spring整合包 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.3.2</version>
</dependency>

2)然后,创建一个名为UserMapper的Java接口,如下所示:

@Mapper
public interface UserMapper {

    /**
     * 根据用户ID获取用户信息
     * @param userId 用户ID
     * @return User对象
     */
    User getUserById(Integer userId);

    /**
     * 根据用户名获取用户信息
     * @param userName 用户名
     * @return User对象
     */
    User getUserByName(String userName);

}

3)创建一个名为UserMapper.xml的Mapper文件,并在其中添加以下内容:

<!-- UserMapper.xml -->
<mapper namespace="com.demo.mapper.UserMapper">

    <!-- 根据用户ID获取用户信息 -->
    <select id="getUserById" parameterType="java.lang.Integer" resultType="com.demo.entity.User">
        select * from user where id = #{id}
    </select>

    <!-- 根据用户名获取用户信息 -->
    <select id="getUserByName" parameterType="java.lang.String" resultType="com.demo.entity.User">
        select * from user where username = #{name}
    </select>

</mapper>

4)在Mybatis的配置文件(一般是mybatis-config.xml)中添加Mapper的配置信息。

<!-- mybatis-config.xml中添加mappers配置信息 -->

<configuration>
  <mappers>
    <!-- 扫描com.demo.mapper包中的所有Mapper -->
    <package name="com.demo.mapper" />
  </mappers>
</configuration>

5)在Spring项目中使用Mapper接口。

@Autowired
private UserMapper userMapper;

User user = userMapper.getUserById(1);

示例2

以下是另外一个完整的示例,以创建Article文章的Mapper为例。

1)首先,在pom.xml文件中添加以下依赖:

<!-- mybatis-spring整合包 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.3.2</version>
</dependency>

2)然后,创建一个名为ArticleMapper的Java接口,如下所示:

@Mapper
public interface ArticleMapper {

    /**
     * 根据文章ID获取文章内容
     * @param articleId 文章ID
     * @return Article对象
     */
    Article getArticleById(Integer articleId);

    /**
     * 新增文章
     * @param article Article对象
     */
    void addArticle(Article article);

}

3)创建一个名为ArticleMapper.xml的Mapper文件,并在其中添加以下内容:

<!-- ArticleMapper.xml -->
<mapper namespace="com.demo.mapper.ArticleMapper">

    <!-- 根据文章ID获取文章内容 -->
    <select id="getArticleById" parameterType="java.lang.Integer" resultType="com.demo.entity.Article">
        select * from article where id = #{id}
    </select>

    <!-- 新增文章 -->
    <insert id="addArticle" parameterType="com.demo.entity.Article">
        insert into article(title, content) values(#{title}, #{content})
    </insert>

</mapper>

4)在Mybatis的配置文件(一般是mybatis-config.xml)中添加Mapper的配置信息。

<!-- mybatis-config.xml中添加mappers配置信息 -->

<configuration>
  <mappers>
    <!-- 扫描com.demo.mapper包中的所有Mapper -->
    <package name="com.demo.mapper" />
  </mappers>
</configuration>

5)在Spring项目中使用Mapper接口。

@Autowired
private ArticleMapper articleMapper;

Article article = new Article();
article.setTitle("test");
article.setContent("test content");
articleMapper.addArticle(article);

本文链接:http://task.lmcjl.com/news/13223.html

展开阅读全文