nimble-orm 基于 Spring jdbcTemplate 的 ORM

我要开发同款
匿名用户2017年04月22日
25阅读
开发技术Java
所属分类程序开发、ORM/持久层框架
授权协议GPL

作品详情

这是一个基于SpringJdbcTemplate的小工具,帮助开发者简单地完成Mysql的增删改查。

使用nimble-orm的优势

为互联网频繁的表变动而生。 表名、字段名,仅在代码中出现一次。修改表名只需要改一处地方,修改字段名,仅需改字段注解一次及where子句中涉及的字段名。增加字段只需增加一个表成员。修改量相比MyBatis大大减少。

实用主义者,注重简单实用的接口。 分页接口、软删除标记位全面支持、数据库乐观锁CAS写法、事务手动回滚、支持SOA远程方式的跨数据库关联查询等。定义完DO之后,无需增加额外配置,调用接口即可。

贫血模型,纯粹的POJO。 不需要继承指定类或实现接口,纯粹的POJO,适合于各种序列化场景。喜欢Spring就会喜欢nimble-orm。

没有潜规则约定,一切注解配置,老项目迁移成本极低。 不会约定类成员变量和表字段名的关系,全部需要通过配置指定,老项目不规则的表名字段名,不会影响新代码的命名。强制指定配置,这种“麻烦”会收获到后续代码运维上的很多便利。欠下的技术债总是要还的,何不一开始就描述清楚点?而xml或其它文件格式写sql,导致几个文件来回切换的编码,一个修改另外一个忘记修改就出错的情况,不再出现了,代码内聚,让阅读和维护更简单。

GetStarted示例

   第一步,为每个数据库表建立一个字段一一对应的DO,纯粹的POJO,无需继承类或实现接口。

   第二步,用上注解标明对应的表和字段。看起来像这样,有挺多ORM是这样的形式,但相信我,nimble-orm的接口很简单很不同。

// 这个一个标准的POJO,除了注解,没有引入任何nimble-orm的东西,不要求继承或实现任何东西。@Table("t_student")public class StudentDO extends IdableSoftDeleteBaseDO { // 这里用不用继承都是等价的,IdableSoftDeleteBaseDO也不需要继承或实现任何nimble-orm的东西。// 用继承可以框定一些规范(在业务系统中,有些每个表都有的公共字段可以放在父类中)// 例如业务项目中,很多都有id 软删除标记 新增时间 修改时间 等共同字段,可以放在POJO基类中,不需要每个DO都写// 即约定了规范,又降低代码量和阅读时间/** IdableSoftDeleteBaseDO也是单纯的POJO,无需继承或实现任何东西。其内容是:  @Column(value = "id", isKey = true, isAutoIncrement = true)  private Long id;    // 软删除标记为,0 未删除,1已删除  @Column(value = "deleted", softDelete = {"0", "1"})  private Boolean deleted;    @Column(value = "create_time", setTimeWhenInsert = true)  private Date createTime;    @Column(value = "update_time", setTimeWhenUpdate = true, setTimeWhenInsert = true)  private Date updateTime;*/@Column("name")private String name;@Column("age")private Integer age;// 标准的 getters / setters,如果提供,nimble-orm就会用;如果没提供,就会直接反射设置字段值}

   第三步,使用nimble-orm提供的接口,进行各种增删改查吧。例如我要分页查询t_student表中名字姓李的同学或年龄大于20岁的同学,按年龄排序,再按id排序,查第一页,每页10条,来吧:

PageData<StudentDO> pageData = dbHelper.getPage(StudentDO.class, 1, 10,     "where name like ? or age>? order by age,id", "李%", 20);// 如果你不需要总数,例如手机端页面只要一直往下翻,直到没有数据为止,那么可以用dbHelper.getPageWithoutCount方法// 不计算总数,更省资源System.out.println("total:" + pageData.getTotal());for(StudentDO studentDO : pageData.getData()) {    Systemo.out.println(studentDO);}

   nimble-orm提供了很多实用的接口,相信可以绝大多数匹配你的项目。如果你需要更多,也可以告诉我。

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论