简介

似曾相识

Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中,配置非常的简单。spring 的好处就是提供了很多非常方便的功能,这个和resttemplate 类似的,对于http请求的封装也是非常的好用,我也是经常的使用的。具体使用随便百度一下即可:

@Bean
JdbcTemplate jdbcTemplate(DataSource dataSource) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
return jdbcTemplate;
}

提供方法

JdbcTemplate主要提供以下五类方法:


  • execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
  • update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
  • query方法及queryForXXX方法:用于执行查询相关语句;
  • call方法:用于执行存储过程、函数相关语句。

问题

JdbcTemplate 使用场景是什么呢?如何要使用它,什么场景使用比较ok?

现实生产环境中很多的小伙伴一定是使用mybaits ?(mybaits-plus or mybaits-generator) spring data\hibernate 等等ORM 框架?



对于spring data、Hibernate、mybaits 的优缺点网上有很多的,我这里就不说了,对于这两种我都使用过。简单的谈一下我的感受。

简单聊聊

对于简单的表结构的查询,很明显 Hibernate、spring data 这种JPA类型的比较的方便,基本上都不用写代码纯天然的支持对象的查询,对于数据底层封装的很好,即使是数据库迁移的影响也不是很大;对于mybaits 来说在现有的框架比如mybaits generator、mybaits plus的支持下基本上也是不用写代码的,感觉挺好的,对于底层子查询想优化比较方便 关联想优化比较的简单,相对于Hibernate的关联查询就是鸡肋了…虽然我也不主张用多表的关联查询. 在实际项目中,看到过由于Hibernate进行了封装,封装了一层 基本的操作,然后很多的查询都走的Hibernate exesql 转换为对象的操作,手动编写sql的拼接的逻辑,整个项目中填充了不少…难受想哭,被无理由的封装腐化了Hibernate,这个对于mybatis 来说就比较的友好了,sql的动态组装的逻辑放在xml中实现,支持sql的逻辑处理和对象的映射,然后通过代理透给具体的java类,对于开发比较的友好,然后想优化sql 也比较的简单,代码和sql 分离,使用free mybatis idea 插件+mybaits 扩展库(mybatis-plus,mybatis generator) 基本上的xml 动态是不需要编写的,动态生成的默认代码。编写java 类就行了…

场景

说了这么多还是mybaits 香香的~ 阿?今天的主脚是JdbcTemplate啊,虽然很香啊,but 编写xml的配置文件特别是逻辑条件比较复杂 多表关联,然后编写映射你就会发现不是很简单啊,得相当的熟悉,调试走通这个代码需要一定的time…

数据迁移

项目上线…历史数据处理,数据迁移、跑跑数据,这种内容就是数据更新,数据查询进行处理,需要极度的灵活,编写简单方便,那么JdbcTemplate 可能比较适合做这样的事情,可能有事情这个代码编写之后估计后续就不会使用了仅仅用了一次,那么这种场景真香,简单的拼接sql 即可实现复杂的逻辑查询,xml 不用配置,java 类不用写,是不是很简单。手工编写sql,条件不是十分的复杂,这种场景用起来十分的方便哦。


总结

工具工具…看你怎么用,都香香的。