您当前的位置: 首页 >  mybatis

蔚1

暂无认证

  • 1浏览

    0关注

    4753博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

一款开源的轻量级MyBatis通用Mapper

蔚1 发布时间:2020-06-02 23:31:08 ,浏览量:1

这是一款轻量级的 MyBatis 插件,在 GitHub上发布的有打好的 Jar 包,25.2Kb,导入项目中即可使用,支持创建数据表、自定义查询、分页查询等常用的数据库操作。项目将 Java 的反射机制与泛型机制使用得淋漓尽致,是工作和学习过程中不可多得的一款利器。

“ 这是一款轻量级的 MyBatis 插件,在 GitHub 上发布的有打好的 jar 包,25.2Kb,导入项目中即可使用,支持创建数据表、自定义查询、分页查询等常用的数据库操作。”

工欲善其事必先利其器,在项目开发过程中一款顺手的 MyBatis 插件是必要的。对比当下不同的插件,最终选择了这一款轻量级的开源项目。代码简洁易懂,可高度定制化开发,将 Java 的反射机制与泛型机制使用得淋漓尽致,是工作和学习过程中不可多得的一款利器。

1.项目简介 项目地址

https://github.com/tianlanlandelan/mapper

特点
  • 体积小、代码简洁、使用简单
  • 支持创建数据表、索引
  • 支持主键、自增主键
  • 支持字段描述、非空约束、唯一约束、设置长度
  • 支持分页查询、自定义条件查询、统计查询
  • 支持常用的增删改查操作
依赖包

只依赖基本的 MyBatis 框架与 MySql 连接,没有其他的依赖文件:

                  org.mybatis.spring.boot           mybatis-spring-boot-starter           1.3.2                         mysql           mysql-connector-java           runtime          
代码结构
  • provider:Sql 语句生成相关
    • BaseCreateProvider.java:数据表创建语句的生成器,支持生成索引
    • BaseDeleteProvider.java:delete 语句生成器,支持根据 ID、主键、自定义条件删除
    • BaseInsertProvider.java:insert 语句生成器,支持自增主键的 insert 操作
    • BaseSelectProvider.java:select 语句生成器,支持分页查询、统计查询、自定义条件查询等
    • BaseUpdateProvider.java:update 语句生成器,支持根据 ID、主键修改数据
  • annotation:注解相关
    • FieldAttribute.java:字段注解,标示成员变量为数据库字段,并设置相应的约束信息,如:长度、非空、查询字段、索引字段等
    • KeyAttribute.java:主键注解,标示成员变量为主键,支持标注为自增主键
    • SortAttribute.java:排序注解,标示成员变量为排序字段
    • TableAttribute.java:数据表注解,标示实体类对应的表名称、说明信息
  • BaseEntity.java:所有实体类的父类,提供了自定义查询条件、分页查询、排序的扩展
  • BaseException.java:自定义异常,在通用 Mapper 运行过程中抛出的异常
  • BaseMapper.java:所有 Mapper 的父类,提供了通用 Mapper 功能
  • SqlFieldReader.java:Sql 字段解析类,用于解析实体类中的自定义注解,为生成 Sql 语句服务
  • ypeCaster.java:类型转换,用于将 Java 中的数据类型转换成相应的 MySql 数据类型
  • util:工具类相关
    • Console.java:日志输出工具类,用于在控制台、日志文件中输出相关信息
    • ObjectUtils.java:Object 工具类,用于对象的空值判断
    • StringUtils.java:字符串工具类,用于生成指定格式的字符串及对字符串进行各种处理
2.使用方式 实体类继承 BaseEntity 并使用注解
@TableAttribute(name = "user_info",comment = "用户信息表")public class UserInfo   extends BaseEntity {    // 标注是自增主键    @KeyAttribute(autoIncr = true)    // 标注是数据库字段    @FieldAttribute    private int id;    // 设置字段注释、非空约束、作为查询条件    @FieldAttribute(value = "用户类型",notNull = true,isCondition = true)    private Integer type;    @FieldAttribute(value = "密码",length = 200, isDetailed = true)    private String password;    // 设置字段注释、非空约束、字段长度、是索引字段    @FieldAttribute(value = "邮箱",notNull = true,length = 200,isIndex = true)    private String email;    @FieldAttribute    @SortAttrtibute    private Date createTime = new Date();    @FieldAttribute(value = "用户账号状态",isCondition = true)    private Integer status ;    @FieldAttribute(value = "是否删除,1 表示删除",isCondition = true)    private Integer isDelete;  ... ...}
Dao 层继承 BaseMapper
@Mapperpublic interface UserMapper extends BaseMapper {}
条件查询举例:
/**     * 根据类型和邮箱查询用户     * @param type     * @param email     * @return     */    private UserInfo getByEmailAndType(int type,String email){        UserInfo userInfo = new UserInfo();        // 设置查询条件 1 Email        userInfo.setEmail(email);        // 设置查询条件 2 Type        userInfo.setType(type);        // 设置使用 And 连接多个查询条件        userInfo.setBaseKyleUseAnd(true);        // 执行查询并返回结果        List list = userMapper.baseSelectList(userInfo);        if(list != null && list.size() > 0){            return list.get(0);        }        return null;    }
3.小结

这款插件比较符合我的预期,主要特点有:

  • 轻量,没有冗余的功能
  • 提供了平时项目中常用的数据库操作
  • 提供了清晰明了的代码结构与设计思想,很快就能上手使用,没有学习成本
  • 提供了多种自定义扩展方式,可以在此基础上进行定制化开发
  • 开源、免费、一直在维护

阅读全文: http://gitbook.cn/gitchat/activity/5ed5f08d1f5e204b8ebad798

您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。

FtooAtPSkEJwnW-9xkCLqSTRpBKX

关注
打赏
1560489824
查看更多评论
立即登录/注册

微信扫码登录

0.0526s