---
url: /guide/extensions/cosid-mybatis.md
---
# CosId-MyBatis Module

[cosid-mybatis](https://github.com/Ahoo-Wang/CosId/tree/main/cosid-mybatis) intercepts **MyBatis** insert requests and parses `@CosId` to inject **distributed IDs**.

## Installation

::: code-group

```kotlin [Gradle(Kotlin)]
    val cosidVersion = "latestVersion"
    implementation("me.ahoo.cosid:cosid-mybatis:${cosidVersion}")
```

```xml [Maven]
    <dependencies>
        <dependency>
            <groupId>me.ahoo.cosid</groupId>
            <artifactId>cosid-mybatis</artifactId>
            <version>${cosid.version}</version>
        </dependency>
    </dependencies>
```

:::

## Usage

```java
public class Order {

    @CosId(value = "order")
    private Long orderId;
    private Long userId;

    public Long getOrderId() {
        return orderId;
    }

    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }
}
```

```java
@Mapper
public interface OrderRepository {
    @Insert("insert into t_table (id) value (#{id});")
    void insert(LongIdEntity order);

    @Insert({
            "<script>",
            "insert into t_friendly_table (id)",
            "VALUES" +
                    "<foreach item='item' collection='list' open='' separator=',' close=''>" +
                    "(#{item.id})" +
                    "</foreach>",
            "</script>"})
    void insertList(List<FriendlyIdEntity> list);
}
```

```java
        LongIdEntity entity=new LongIdEntity();
        entityRepository.insert(entity);
        /**
          * {
          *   "id": 208796080181248
          * }
          */
        return entity;
```
