Skip to content

Latest commit

 

History

History
83 lines (66 loc) · 2.58 KB

README.md

File metadata and controls

83 lines (66 loc) · 2.58 KB

mybatis-abu

MIT maven central jdk mybatis

mybatis扩展插件,可以在insertupdate时对公共字段统一修改,减少不必要的重复代码。

  • 功能纯粹,非大而全
  • 零注解
  • 易操作易上手,源码简单易于理解和二次改造
  • 基于mybatis 3插件机制,可与其他插件混用,只需规划执行顺序即可

局限性

  1. 只支持具有BaseModel等类似基类的实体类使用
  2. 只支持单一实体类参数或者单一实现Collection<?>接口的集合参数

使用

  1. 引入 Jar

    <!-- https://mvnrepository.com/artifact/com.github.zonev/abu -->
    <dependency>
        <groupId>com.github.zonev</groupId>
        <artifactId>abu</artifactId>
        <version>1.1</version>
    </dependency>
  2. 配置需要自动绑定的字段以及实体类基类

    FieldBindConfig.builder()
           .bind("id", CommonFieldUtils::nextId, Long.class, SqlCommandType.INSERT)
           .bind("createTime", CommonFieldUtils::time, Long.class, SqlCommandType.INSERT)
           .bind("updateTime", CommonFieldUtils::time, Long.class, SqlCommandType.INSERT, SqlCommandType.UPDATE)
           .bind("delete", false, Boolean.class, SqlCommandType.INSERT, SqlCommandType.UPDATE)
           .baseModel(BaseDTO.class);
  3. 注册 mybatis-abu 插件(以 SpringBoot 为例)

    /**
     * 注入 Mybatis 自定义插件
     *
     * @return 自定义插件实例
     */
    @Bean
    public AbuInterceptor interceptor() {
         return new AbuInterceptor();
    }
  4. 业务代码示例

    @Autowired
    private AreaDao areaDao;
    
    @Override
    public void save() {
         // service 层在做新增或更新操作时,只需关注业务逻辑字段
         Area area = new Area();
         area.setAreaName("杭州");
         area.setAreaNum("330100");
         area.setAreaDes("浙江省会城市");
         areaDao.insert(area);
    }
    <insert id="insert" parameterType="Area">
        insert into t_area 
        (id, area_name, area_num, area_des, create_by, is_delete)
        values 
        (#{id}, #{areaName}, #{areaNum}, #{areaDes}, #{createBy}, #{delete})
    </insert>