Mybatis-Flex

优雅的 Mybatis 增强框架
授权协议 Apache
开发语言 Java
所属分类 程序开发、 ORM/持久层框架
软件类型 开源软件
地区 国产
投 递 者 端木承业
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Mybatis-Flex 是一个优雅的 Mybatis 增强框架。

特征

  • 很轻量,整个框架只依赖 Mybatis 再无其他第三方依赖
  • Entity 类的基本增删改查、以及分页查询
  • Row 通用映射支持,可以无需实体类对数据库进行增删改查
  • 支持多种数据库类型,自由通过方言持续扩展
  • 支持联合主键,以及不同的主键内容生成策略
  • 极其友好的 SQL 联动查询,IDE 自动提示不再担心出错
  • 更多小惊喜

hello world

第一步:编写 Entity 实体类

@Table("tb_account")
public class Account {

    @Id()
    private Long id;
    private String userName;
    private Date birthday;
    private int sex;

    //getter setter
}

第二步,编写 Mapper 类,并继承 BaseMapper

public interface AccountMapper extends BaseMapper<Account> {
    //只需定义 Mapper 接口即可,可以无任何内容。
}

第三步:开始查询数据

示例 1:查询 1 条数据

class HelloWorld {
    public static void main(String... args) {

        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/mybatis-flex");
        dataSource.setUsername("username");
        dataSource.setPassword("password");

        MybatisFlexBootstrap.getInstance()
                .setDatasource(dataSource)
                .addMapper(AccountMapper.class)
                .start();


        //示例1:查询 id=100 条数据
        Account account = MybatisFlexBootstrap.getInstance()
                .execute(AccountMapper.class, mapper ->
                        mapper.selectOneById(100)
                );
    }
}

示例2:查询列表

class HelloWorld {
    public static void main(String... args) {

        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/mybatis-flex");
        dataSource.setUsername("username");
        dataSource.setPassword("password");

        MybatisFlexBootstrap.getInstance()
                .setDatasource(dataSource)
                .addMapper(AccountMapper.class)
                .start();
        
        //示例2:通过 QueryWrapper 构建条件查询数据列表
        QueryWrapper query = QueryWrapper.create()
                .select()
                .from(ACCOUNT)
                .where(ACCOUNT.ID.ge(100))
                .and(ACCOUNT.USER_NAME.like("张").or(ACCOUNT.USER_NAME.like("李")));

        // 执行 SQL:
        // ELECT * FROM `tb_account`
        // WHERE `tb_account`.`id` >=  100
        // AND (`tb_account`.`user_name` LIKE '%张%' OR `tb_account`.`user_name` LIKE '%李%' )
        List<Account> accounts = MybatisFlexBootstrap.getInstance()
                .execute(AccountMapper.class, mapper ->
                        mapper.selectListByQuery(query)
                );
        
    }
}

示例3:分页查询

class HelloWorld {
    public static void main(String... args) {

        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/mybatis-flex");
        dataSource.setUsername("username");
        dataSource.setPassword("password");

        MybatisFlexBootstrap.getInstance()
                .setDatasource(dataSource)
                .addMapper(AccountMapper.class)
                .start();

        // 示例3:分页查询
        // 查询第 5 页,每页 10 条数据,通过 QueryWrapper 构建条件查询
        QueryWrapper query = QueryWrapper.create()
                .select()
                .from(ACCOUNT)
                .where(ACCOUNT.ID.ge(100))
                .and(ACCOUNT.USER_NAME.like("张").or(ACCOUNT.USER_NAME.like("李")))
                .orderBy(ACCOUNT.ID.desc());

        // 执行 SQL:
        // ELECT * FROM `tb_account`
        // WHERE `tb_account`.`id` >=  100
        // AND (`tb_account`.`user_name` LIKE '%张%' OR `tb_account`.`user_name` LIKE '%李%' )
        // ORDER BY `tb_account`.`id` DESC
        // LIMIT 40,10
        Page<Account> accounts = MybatisFlexBootstrap.getInstance()
                .execute(AccountMapper.class, mapper ->
                        mapper.paginate(5, 10, query)
                );

    }
}
  • Mybatis-Flex 是什么 Mybatis-Flex 是一个优雅的 Mybatis 增强框架,它非常轻量、同时拥有极高的性能与灵活性。我们可以轻松的使用 Mybaits-Flex 链接任何数据库,其内置的 QueryWrapper^亮点 帮助我们极大的减少了 SQL 编写的工作的同时,减少出错的可能性。 总而言之,Mybatis-Flex 能够极大地提高我们的开发效率和开发体验,让我们有更多

  • MyBatis和Mybatis-Plus概念总结 1.Mybatis: MyBatis是一个用Java语言编写的持久层框架,其封装了JDBC的操作细节,使得开发者只需关注SQL语句本身,而无需关注注册驱动,创建连接等繁琐重复的过程。MyBatis框架使用了ORM(Object Relational Mapping)的思想来实现结果集的封装。(ORM简单说就是将数据库表与实体类及类的属性对应起来,通

  • MP特性 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需

  • MyBatis 是持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。 Mybatis的功能架构分为三层: (1)A

  • application.yml 配置 mybatis-plus: configuration: #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global

  • Mybatis程序,测试中可能遇到的问题以及解决方案: 错误一:找不到mybatis配置文件java.io.IOException: Could not find resource org/mybatis/example/mybatis-config.xml 解决方案: 在pom.xml中增加build <build> <resources> <resource>

  • 1.下载spring roo,设置环境变量ROO_HOME,和path,classpath. 使用CMD命令行找到工作区间,新建工程目录转到工程目录;mkdir ten-minutes $ cdten-minutes 2.      project--topLevelPackage com.tenminutes 3.      roo>jpa setup --provider HIBERNATE-

  • 第一次使用springboot整合mybatis-flex,想配置一下常规配置比如不打印banner,修改数据库的方言(默认是mysql),开启或关闭二级缓存(默认开启),不打印sql日志等等,然后在application.yaml中配置都不起作用,最后看了一下源码 ,可以在使用@Configuration配置,现在记录一下: package com.chhuang.web.config; im

  • 报错信息 此Demo是基于Spring boot 2.3.5.RELEASE Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required 报的错是 没有找到sqlSessionFactory或者sqlSessionTemplate 没有那就自己创建一个 @Configuration public class Myconfig

  • 由于我比较懒,所以对于mybatis-generator工具有着很大的喜欢,我感觉它既可以偷懒,又可以提高写代码的效率,对于比较简单的sql查询语句,使用它就足够了,但是我今天遇到了一个问题,就是为什么我们生成的mapper代码不用写@Mapper注解在接口上,也可以注册到spring的IOC容器中。 这是因为我们使用了@MapperScan注解 那么@Mapper注解与@MapperScan注解

 相关资料
  • 本文向大家介绍MyBatis 的优点?相关面试题,主要包含被问及MyBatis 的优点?时的应答技巧和注意事项,需要的朋友参考一下 基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任 何影响,SQL 写在 XML 里,解除 sql 与程序代码的耦合,便于统一管理;提供 XML 标签,支持编写动态 SQL 语句,并可重用。 与 JDBC 相比,减少了 50%以上的代码量,消除

  • 本文向大家介绍MyBatis中如何优雅的使用枚举详解,包括了MyBatis中如何优雅的使用枚举详解的使用技巧和注意事项,需要的朋友参考一下 问题 本文主要给大家介绍的是关于MyBatis使用枚举的相关内容,我们在编码过程中,经常会遇到用某个数值来表示某种状态、类型或者阶段的情况,比如有这样一个枚举: 通常我们希望将表示状态的数值存入数据库,即ComputerState.OPEN存入数据库取值为10

  • 你可能听过优雅降级(graceful degradation)和渐进增强(progressive enhancement)这两个词,它们是构建Web应用时,处理多浏览器支持的两种方法论,并在Web社区中引发过激烈的辩论。 持优雅降级观点者认为,应该针对最高级、最完善的浏览器来设计网站。然后,再为那些被认为过时或有功能缺失的浏览器提供候选方案,使之基本可用,但不至于完全失效。这样一来,新特性在老浏览

  • 本文向大家介绍MyBatis 框架的缺点相关面试题,主要包含被问及MyBatis 框架的缺点时的应答技巧和注意事项,需要的朋友参考一下 SQL 语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写 SQL 语句的功底有一定要求。 SQL 语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

  • 本文向大家介绍MyBatis学习教程(三)-MyBatis配置优化,包括了MyBatis学习教程(三)-MyBatis配置优化的使用技巧和注意事项,需要的朋友参考一下 一、连接数据库的配置单独放在一个properties文件中   之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下:   其实我们完全可以将数据库的连接配置信息写在一个properties文件中

  • 本文向大家介绍Spring集成MyBatis框架,包括了Spring集成MyBatis框架的使用技巧和注意事项,需要的朋友参考一下 Java在写数据库查询时,我接触过四种方式: 1、纯Java代码,引用对应的数据库驱动包,自己写连接与释放逻辑(可以用连接池) 这种模式实际上性能是非常不错的,但是使用起来并不是非常方便:一是要手工为Connection做获取与释放,大量的冗余代码也容易出错;另一个是