spring的SimpleJdbcTemplate查询原理

讨论一个业务的持久化实现
考虑到性能问题,就不orm了
公司兄弟决定回到裸jdbc(连ibatis都不用了)
虽然此人很牛,但最后的结论还是:我又一次体会了裸jdbc的不靠谱程度

在此再次推荐Spring,上次我记得谁问起过spring除了ioc和aop还有啥
其实还有很多小东西做的挺好的
比如jdbcTemplate,以及2.5里面增加的BeanPropertyRowMapper
jdbcTemplate查询出resultset,帮忙开关connection
然后BeanPropertyRowMapper将resultset利用反射映射到bean property上面
类似于Jakarta的那个common beanutil的功能
(其实这个功能我很早就想扩展了……)


举个例子吧
jdbcTemplate.execute("create table student(id DECIMAL,first_name VARCHAR(10),last_name VARCHAR(10), age DECIMAL , createTime TIMESTAMP)");

jdbcTemplate.execute("insert into student(id,first_name,last_name,age,createTime) values(1,'A','B',10,2008-01-01)");

Student a = (Student) jdbcTemplate.queryForObject("SELECT id, first_name, last_name, age, createTime FROM student WHERE id=1", ParameterizedBeanPropertyRowMapper.newInstance(Student.class));

Assert.assertEquals(a.lastName,"B");


很简单吧,很好理解吧
只需要给jdbcTemplate注入个DataSource
Connection/Statement/ResultSet冗繁的两段式try finally close可以不用管了
ddl/dml操作接口统一化,当然还有避免sql注入的Object[]参数
[color=red][b]无聊的query过程都可以进行数据类型自动转换,而且不仅仅按标准命名,还可以支持下划线分隔后拼接成驼峰式字符
完全轻量级,优雅的代码,jdbc级的控制力度,丰富的文档,可靠的测试保障,活跃的社区......

BeanPropertyRowMapper/ParameterizedBeanPropertyRowMapper ,如果PO和数据库模型的字段完全对应(字段名字一样或者驼峰式与下划线式对应),如果使用JdbcTemplate则可以使用这个RowMapper作为PO和数据库的映射。[/b] [/color]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值