使用mybatis generator 生成annotation形式的mapper

本文详细记录了如何使用mybatisgenerator配置生成annotation的mapper,包括配置文件的具体内容和实现步骤。

        最近使用mybatisgenerator时,希望生成annotation的mapper,在网上基本桑没有相关配置,记录,做以下记录:


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration ><classPathEntry
		location="jar包位置" />
  <context id="context1" >
    <jdbcConnection driverClass="driver" connectionURL="jdbc" userId="**" password="**" />
    <javaModelGenerator targetPackage="package" targetProject="project" />
    <sqlMapGenerator targetPackage="package" targetProject="project" /></span>
    <javaClientGenerator targetPackage="package" targetProject="project" type="<span style="color:#ff0000;">ANNOTATEDMAPPER/XMLMAPPER</span>" />

    <table schema="schema" tableName="table"  domainObjectName="javaBean" >
    </table>
    
  </context>
</generatorConfiguration>

使用 MyBatisX 生成代码时,可能会发现生成Mapper 接口中缺少 `@Mapper` 注解。这种情况通常与代码生成工具的配置和 Spring Boot 应用程序中 MyBatis 的集成方式有关。 ### 原因分析 1. **MyBatis 的自动代理机制** MyBatis 在与 Spring 集成时,会通过动态代理的方式为接口生成实现类。为了识别哪些接口需要生成代理类,可以通过两种方式进行标记: - 使用 `@Mapper` 注解标注每一个 Mapper 接口。 - 使用 `@MapperScan` 注解在配置类或启动类上指定扫描包路径,自动将这些包下的所有接口注册为 Mapper。 2. **MyBatisX 默认不添加 `@Mapper` 注解** MyBatisX 是一个增强版的代码生成工具,它默认不会在生成Mapper 接口上添加 `@Mapper` 注解。这是因为大多数项目倾向于使用 `@MapperScan` 来集中管理 Mapper 扫描路径,而不是手动在每个接口上添加注解[^1]。 3. **Spring Boot 中的默认扫描行为** 如果未显式配置 `@MapperScan`,Spring Boot 默认会在 `classpath` 下查找资源文件(如 XML 文件),而生成Mapper 接口通常位于 `src/main/java` 路径下,不在默认扫描范围内。因此,若未正确配置扫描路径,可能导致 Mapper 接口未被注册到 Spring 容器中[^2]。 --- ### 解决方法 #### 方法一:使用 `@MapperScan` 注解 可以在 Spring Boot 启动类或配置类上添加 `@MapperScan` 注解,并指定包含生成Mapper 接口的包路径。例如: ```java @SpringBootApplication @MapperScan("com.example.mapper") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 此方法适用于大多数项目,尤其是那些依赖自动扫描机制的项目。 #### 方法二:手动添加 `@Mapper` 注解 如果希望某个特定的 Mapper 接口被识别,可以手动在该接口上添加 `@Mapper` 注解。这种方式适用于小型项目或对某些关键接口进行特殊处理的情况。 ```java @Mapper public interface UserMapper { User selectById(Long id); } ``` #### 方法三:自定义 MyBatisX 生成模板 MyBatisX 支持自定义代码生成模板,可以通过修改生成模板,在生成Mapper 接口中自动插入 `@Mapper` 注解。这需要调整 `generatorConfig.xml` 或相关插件配置,确保生成的代码符合项目规范。 示例配置片段如下: ```xml <plugin type="org.mybatis.generator.plugins.MapperAnnotationPlugin"> <property name="annotation" value="org.apache.ibatis.annotations.Mapper"/> </plugin> ``` 启用该插件后,生成Mapper 接口将会自动带有 `@Mapper` 注解。 --- ### 总结 MyBatisX 生成Mapper 接口中缺少 `@Mapper` 注解的原因主要是由于其默认行为更倾向于配合 `@MapperScan` 使用。为了确保生成的接口能够被 Spring 正确注册,推荐使用 `@MapperScan` 显式配置扫描路径,或者根据项目需求选择性地添加 `@Mapper` 注解。对于有定制化需求的项目,还可以通过修改代码生成模板来满足特定要求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值