开源框架mybatis-enhance-actable.1.1.0.RELEASE新版本迭代

五年前作为一名工作一年的程序渣的我,开始了思考,为了降低重复性及含金量低的技术工作,我准备结合自己的痛点写一个小插件,因为当时对mybatis和hibernate都有接触,总结分析后,觉得mybatis的灵活性更大未来前景广泛,而且入门难度最低,但同时在当时他的缺陷也很明显。

首先他不具备跟hibernate一样的自动建表能力,表结构稍有变化需要,准备sql脚本,然后去改自己的实体类,这种过程是很无聊的,而且万一上生产忘记执行某个sql脚本,或用了错误的脚本就尴尬了,毕竟人做的事情不如机器做的靠谱。

其次他不具备通用的CUDR的能力,当时大家都用一款小工具,小工具可以根据实体类生成出通用的CUDR的xml然后再拷贝到项目中,显然这个也不让人满意,现在想想都有点恶心,我们希望的是拥有像hibernate一样提供的通用标准的CUDR方法直接调用就可以。

目标设定好之后,就开始了我的开源生涯,当时觉得这是一件很酷的事情 ,经过一番调查设计,很快1.0.0版本诞生了(过程还是蛮复杂的,毕竟对于当时的渣渣我来说,任何东西都停留在会用的程度,要去深挖各个工具的巧妙结合和使用,包括mysql数据的建表逻辑等等都需要查阅大量的资料,进行详细的设计,以及各种尝试),东西出来觉得挺开心的,也确实有再之后的一些小项目中用到过,用过的同事也都觉得很提升工作效率,也提了一些改进,才有了后续的各个版本迭代。

源码放到gitee上之后,本来希望借助这个平台会有更多感兴趣的小伙伴大家一起来维护这个,但…哈哈,显然想的太简单了,不过也确实有小伙伴在使用,也提出了一些问题和想法,偶尔也有提交代码,总之还是有一点点活力的,逐渐的几年过去了,感叹时间过得真快… 说实话怪我,确实工作越来越忙,很少拿出时间来搞这个,就偶尔隔几个月汇总一下问题,然后结合自己的想法做 一些优化改进,现在诸如此类的开源框架我已经见过几个了,而且都挺流行的,这里不说名字了,第一次听同事说起时还觉得很诧异,也有点失落遗憾,不过拥抱新事物是好的,更何况它还那么香…

不过大多框架做的事CUDR这种能力的体现,而我的这款框架同时支持建表更新表的能力,当然由于当初设计的时候自己还是个菜鸟,也挖了不少的坑,现在也在不断的重构填坑,后续还会有一次针对CUDR的大版本迭代,总之只要还有人在用,那就证明它还是有些价值的,我就会坚持维护它,下面介绍下本次迭代的内容,包括该框架的简介,和gitee连接地址。

简介:该框架是对Mybatis做的增强功能,为了能够使习惯了hibernate框架的开发者能够快速的入手Mybatis,A.CTable是一个基于Spring和Mybatis的Maven项目,增强了Mybatis的功能,过配置model注解的方式来创建表,修改表结构,并且实现了共通的CUDR功能提升开发效率,目前仅支持Mysql,后续可能会扩展针对其他数据库的支持。

开源框架mybatis-enhance-actable新版本点击查看1.1.0.RELEASE发布功能清单:

  1. 修复issues/I160LP:drop拼写的问题(版本1.0.9.RELEASE)

  2. 优化issues/I1IENW:@Index,@Unique创建索引和唯一约束的实现逻辑,默认会给索引名和约束名增加前缀actable_idx_和actable_uni_方便更新删除时只针对这两个前缀的进行删除更新,避免删掉手动创建的字段的索引约束 (版本1.0.9.RELEASE)

  3. 修复issues/I16OZQ:@Index,@Unique在只设置了索引名称没有设置索引字段时,报错的bug,并且原有name改为value,原有value改为columns(版本1.0.9.RELEASE)

  4. 迭代issues/I1IF5E:增加对tinyint/smallint/mediumint/year/blob/longblob/mediumblob/tinytext/tinyblob/binary字段类型的支持 (版本1.0.9.RELEASE)

  5. 迭代issues/I1IF5Q:框架模式新增add模式,本模式下只具备,新增表/新增字段/新增索引/新增唯一约束的功能,不会做修改和删除 (版本1.0.9.RELEASE)

  6. 迭代issues/I193FC:@Column的name属性改为非必填,不填默认使用属性名作为表字段名 (版本1.0.9.RELEASE)

  7. 迭代issues/I193FC:@Column的type属性改为非必填,不填默认使用属性的数据类型进行转换,转换失败的字段不会添加 (版本1.0.9.RELEASE)

    支持java类型转mysql类型如下:

     java.lang.String
     java.lang.Long
     java.lang.Integer
     java.lang.Boolean
     java.math.BigInteger
     java.lang.Float
     java.lang.Double
     java.math.BigDecimal
     java.sql.Date
     java.util.Date
     java.sql.Timestamp
     java.sql.Time
    

    本次迭代至1.0.9.RELEASE,极大的简化了注解的使用复杂度,在保留原有复杂的自定义配置能力的同时,增加了更多的默认适配能力
    也就是对于@Column标签如果对字段命名等没有任何要求的情况下,直接使用标签即可,无需配置类型等参数,会默认根据上面支持的类型去进行匹配转换

  8. 迭代issues/I1ILS6:@IsKey/@IsAutoIncrement/@IsNotNull用来代替 @Column中的isKey/isAutoIncrement/isNull三个属性,当然旧的配置方式仍然是支持的 (版本1.0.9.RELEASE)

  9. 紧急修复1.0.9.RELEASE版本CUDR的bug,请不要使用1.0.9.RELEASE版本(版本1.0.9.1.RELEASE)

  10. 迭代issues/I1IVXK:BaseMysqlCRUDManager该工具类废弃,请勿使用,新增工具类BaseCRUDManager,新的insert接口取消了对主键的integer类型的限定,主键可以自由使用类型(版本1.1.0.RELEASE)

    新增工具类BaseCRUDManager的方法列表如下,详细接口文档见文档结尾部分:

     List select(T t);
     T selectByPrimaryKey(T t);
     List selectAll(Class clasz);
     int selectCount(T t);
     T selectOne(T t);
     int delete(T t);
     int deleteByPrimaryKey(T t);
     boolean existsByPrimaryKey(T t);
     T insert(T t);
     T insertSelective(T t);
     boolean updateByPrimaryKey(T t);
     boolean updateByPrimaryKeySelective(T t);
     List query(String sql, Class beanClass);
    List> query(String sql);
    

你可能感兴趣的:(Java,mybatis,mybatis,java)