下面是基于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);
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于Spring整合mybatis的mapper生成过程 - Python技术站