AgileFramework系列组件——agile-mybatis Mybatis扩展

9 篇文章 0 订阅
1 篇文章 0 订阅

agile-mybatis : Mybatis扩展


源码地址:https://gitee.com/agile-framework/agile-mybatis

它有什么作用

  • 结果POJO映射
    查询返回结果可以直接声明为POJO或POJO集合,其映射过程是依赖于cloud.agileframework:common-util对象深度转换器实现,所以支持
    识别驼峰与下划线等风格属性的互转。只需声明,无需额外调用,以最低的代码入侵实现类似ORM映射效果。

  • 分页拦截器
    分页方式是通过扩展Mybatis拦截器,当入参中包含接口MybatisPage类(及其实现类)且返回参数为Page形式时触发分页拦截器,解析总条数
    total及页内容content。只需声明,无需额外调用,以最低的代码入侵实现Mybatis分页。

  • 低代码入侵
    不改变任何Mybatis原生编码方式及能力


快速入门

开始你的第一个项目是非常容易的。

步骤 1: 下载包

您可以从[最新稳定版本]下载包(https://github.com/mydeathtrial/agile-mybatis/releases).
该包已上传至maven中央仓库,可在pom中直接声明引用

以版本agile-mybatis-2.0.0.jar为例。

步骤 2: 添加maven依赖
<!--声明中央仓库-->
<repositories>
    <repository>
        <id>cent</id>
        <url>https://repo1.maven.org/maven2/</url>
    </repository>
</repositories>
<!--声明依赖-->
<dependency>
    <groupId>cloud.agileframework</groupId>
    <artifactId>agile-mybatis</artifactId>
    <version>2.0.0</version>
</dependency>
步骤 3: 开箱即用
接口定义,支持Mybatis原生方式,要注意接口上需要使用@Mapper注解,且声明为spring bean,这里使用@Component声明
@Component
@Mapper
public interface MyRepository {
    //结果直接映射为POJO集合
    @Select("<script> select * from sys_api </script>")
    List<SysApiEntity> queryAll();

    //分页
    @Select("<script> select * from sys_api </script>")
    Page<SysApiEntity> page(MybatisPage pageInfo);

    //自定义分页实现,并扩展参数
    @Select("<script> select * from sys_api where sys_api_id = #{param}</script>")
    Page<SysApiEntity> page2(TestService.CustomPage pageInfo);

    //结果映射为单一POJO对象
    @Select("<script> select * from sys_api where sys_api_id = #{param}</script>")
    SysApiEntity findOne(@Param("param") String id);
}
API调用,调用过程与调用普通spring bean形式相同,写操作需添加事务注解,此处不做过多描述,可参照spring与mybatis官方文档
@Service
public class TestService {
    private final Logger logger = LoggerFactory.getLogger(TestService.class);

    @Autowired
    private MyRepository repository;

    /**
     * 查询分页
     */
    @Test
    public void testPage() {
        List<SysApiEntity> list = repository.page(new MybatisPage() {
            @Override
            public int getPageNum() {
                return 1;
            }

            @Override
            public int getPageSize() {
                return 2;
            }
        });
        logger.info(JSON.toJSONString(list, true));
    }

    /**
     * 查询自定义分页
     */
    @Test
    public void testPage2() {
        CustomPage customPage = new CustomPage("428477999713751040", 1, 2);
        List<SysApiEntity> list = repository.page2(customPage);
        logger.info(JSON.toJSONString(list, true));
    }

    /**
     * 查询单个结果映射
     */
    @Test
    public void findOne() {
        SysApiEntity entity = repository.findOne("428477999713751040");
        logger.info(JSON.toJSONString(entity, true));
    }

    /**
     * 自定义分页,并扩展参数,实现MybatisPage接口
     */
    public static class CustomPage implements MybatisPage {
        private final String param;
        private final int page;
        private final int size;

        public CustomPage(String param, int page, int size) {
            this.param = param;
            this.page = page;
            this.size = size;
        }

        public String getParam() {
            return param;
        }

        @Override
        public int getPageNum() {
            return page;
        }

        @Override
        public int getPageSize() {
            return size;
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值