java databasetool_JDBC的ORM封装——Hutool db

开篇

端午没事儿干扩充了下Hutool的DB部分,原来只是一个简单的SQL运行器,现在加入了方言支持,封装了增删改查,引入Session从而支持事务,可以说工程量巨大,在封装过程总我还是参考了Jodd的DbOom、Jfinal的ActiveRecord、Apache Commons-DbUtils,吸取优点,剔除我觉得没用的,再加入些自己的想法,尽量做到简单和灵活。

版本支持

由于上次已经将1.0.0版的Hutool提交到了Maven中央库,且这次也是一个重大的改进,所以把这次的更新全部放到1.1.0版本中,考虑到未完全测试,所以你可以在Github上clone下来使用,或者看下我的代码,体会下我的思想以及设计哲学(哲学这个词好有逼格……)。

由来

考虑到Hibernate做ORM的复杂性,它想把一个对象映射到数据库,再加上各种外键的复杂对应关系,当时学习的时候整的我焦头烂额,而且其数据库连接配置全部放在xml里,需要连接池插件去为它开发对应的插件,显然这样做太霸道了,总之这种灵活性的缺失,导致在使用Hibernate的时候必须按照它指定的思路和方式走,痛苦万分啊,例如你执行一条SQL语句,查询的结果是个让人百思不得其解的列表,难用的要死。后来我便倾向于Apache Commons-DbUtils,谁让业务简单呢,没几张表,简简的看了其源码,做了些简单的改进放到我的Hutool里来了,然后就看了Jfinal的ActiveRecord,那段时间正在看Python的一个框架Django,发现其异曲同工之妙的ORM方式:将数据库表映射为一个Map,而不是一个对象。这样的灵活性大大的增加,字段也更加灵活。于是按照这个思想开始动工,封装增删改查的常用方法。

对象解释

1. Entity

在ORM中,我把一张表中的一条数据映射成为一个叫做Entity的类,继承自HashMap,key是字段名,value是Object类型,字段值,这样一个Entity对象就是数据库表中的一条记录,当然这个对象中还有个字段是表的名字,方便之后的操作。之后对数据库增删改查操作的对象大多是这个。

这个对象充当着两种角色,一个是数据的载体,表示一条数据,另一个就是where语句的条件,当然,Entity对象只支持 = 操作,更复杂的操作我以后再想别的办法。充当where条件时,key依旧是字段名,value是字段条件值。例如:

Entity where = Entity.create(TABLE_NAME).set("条件1", "条件值");

表示的where语句是:

WHERE `条件1` = 条件值

当然到时候会用PreparedStatement,不会出现SQL注入。

2. Table Column

这两个对象主要是描述数据库表结构的,暂时和ORM本身没啥关系,只是当你想获得一些字段信息的时候,这样来获得表结构信息:

/**

* 获得表的元数据

*

* @param ds 数据源

*/

private static void g

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值