`

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[]参数
无聊的query过程都可以进行数据类型自动转换,而且不仅仅按标准命名,还可以支持下划线分隔后拼接成驼峰式字符
完全轻量级,优雅的代码,jdbc级的控制力度,丰富的文档,可靠的测试保障,活跃的社区......

BeanPropertyRowMapper/ParameterizedBeanPropertyRowMapper ,如果PO和数据库模型的字段完全对应(字段名字一样或者驼峰式与下划线式对应),如果使用JdbcTemplate则可以使用这个RowMapper作为PO和数据库的映射。
分享到:
评论

相关推荐

    spring-orm源码

    对于SQL数据库操作,Spring提供了JdbcTemplate和SimpleJdbcTemplate,它们是不依赖于ORM的数据库访问工具。通过源码,我们可以学习到如何编写SQL语句,如何执行查询、更新等操作,以及如何处理结果集。 9. **异常...

    Spring-Reference_zh_CN(Spring中文参考手册)

    3.2. 容器和bean的基本原理 3.2.1. 容器 3.2.1.1. 配置元数据 3.2.2. 实例化容器 3.2.2.1. 组成基于XML配置元数据 3.2.3. 多种bean 3.2.3.1. 命名bean 3.2.3.2. 实例化bean 3.2.4. 使用容器 3.3. 依赖 3.3.1. 注入...

    最新spring2.5帮助文档

    3. **Spring表达式语言(Spring Expression Language, SpEL)**:Spring 2.5引入了SpEL,这是一种强大的表达式语言,用于在运行时查询和操作对象图。它支持在配置中进行复杂逻辑判断,提高了灵活性。 4. **基于注解...

    spring-framework-3.0源码地址

    6. **SpEL(Spring Expression Language)**:Spring表达式语言允许在运行时动态访问和操作对象属性,提供了强大的查询和操纵对象图的能力。在Spring 3.0中,SpEL功能更加强大,支持更多的运算符和方法调用。 7. **...

    SpringJDBC.rar_SpringJDBC_jdbctemplate_jdbctemplate spring

    Spring JDBC通过提供JdbcTemplate和SimpleJdbcTemplate等工具类,帮助开发者以更安全、更易于管理的方式与数据库进行交互,降低了传统JDBC代码的复杂性。下面我们将详细探讨Spring JDBC的核心概念、工作原理以及如何...

    spring2.0技术手册_林信良(完整版)

    尽管技术在不断更新迭代,但Spring的基本理念和设计模式在各个版本中仍然保持一致,因此,这本书中的许多知识点对于理解Spring框架的核心原理依然具有很高的价值。 一、Spring概述 Spring是一个开源的企业级Java...

    spring源代码

    通过深入研究Spring 5.0.6的源代码,开发者不仅可以了解Spring的内部工作原理,还能学习到优秀的设计模式和最佳实践,从而提高自己的编程水平和解决问题的能力。这是一次深入理解Java生态系统和软件设计艺术的宝贵...

    Spring_JdbcTemplete代码包.zip

    Spring JDBC Template是Spring框架中的一个核心组件...这个代码包对于学习和理解Spring JDBC Template的工作原理和用法非常有帮助,通过查看和运行其中的示例,我们可以更好地掌握如何在实际项目中使用这一强大的工具。

    spring-framework-4.0.3.RELEASE-dist.zip

    文件名“spring-framework-4.0.3.RELEASE”包含了Spring框架的完整源代码、文档和示例,开发者可以通过分析源码学习Spring的工作原理,或者参考文档了解如何在实际项目中应用这些新特性。源码目录结构通常包括以下...

    Spring 2.0 开发参考手册

    3.2. 容器和bean的基本原理 3.2.1. 容器 3.2.2. 实例化容器 3.2.3. 多种bean 3.2.4. 使用容器 3.3. 依赖 3.3.1. 注入依赖 3.3.2. 构造器参数的解析 3.3.3. bean属性及构造器参数详解 3.3.4. 使用depends-on...

    Spring中文帮助文档

    3.2. 基本原理 - 容器和bean 3.2.1. 容器 3.2.2. 实例化容器 3.2.3. 多种bean 3.2.4. 使用容器 3.3. 依赖 3.3.1. 注入依赖 3.3.2. 依赖配置详解 3.3.3. 使用depends-on 3.3.4. 延迟初始化bean 3.3.5. 自动...

    跟我学spring3(1-7)

    SpEL是Spring强大的表达式语言,用于在运行时查询和操作对象图。它支持基础类型运算、条件表达式、方法调用等功能。 12. **SpEL基础和语法** SpEL的语法包括字段和方法访问、算术运算、比较和逻辑运算、路径...

    Spring API

    3.2. 基本原理 - 容器和bean 3.2.1. 容器 3.2.2. 实例化容器 3.2.3. 多种bean 3.2.4. 使用容器 3.3. 依赖 3.3.1. 注入依赖 3.3.2. 依赖配置详解 3.3.3. 使用depends-on 3.3.4. 延迟初始化bean 3.3.5. 自动...

    Spring.3.x企业应用开发实战(完整版).part2

    经过历时一年的重大调整改版而成的,本书延续了上一版本追求深度,注重原理,不停留在技术表面的写作风格,力求使读者在熟练使用Spring的各项功能的同时,还能透彻理解Spring的内部实现,真正做到知其然知其所以然。...

    Spring3.0资源包+中文文档

    在学习过程中,建议首先了解Spring的基本原理和核心机制,然后深入到各个模块,如IoC容器、AOP、MVC、数据访问等,最后结合实际项目进行实践,巩固理论知识并提升实际操作能力。通过这样的学习路径,你将能够熟练地...

    spring-jdbc.rar_goldenw65_map25w_sellwof_spring-jdbc

    本资源“spring-jdbc.rar”包含的资料旨在帮助开发者理解并掌握Spring JDBC的基本原理和核心功能,从而在实际开发中更加高效地运用这一强大的工具。 一、Spring JDBC的概述 Spring JDBC通过一系列的抽象和模板类,...

    spring chm文档

    3.2. 容器和bean的基本原理 3.2.1. 容器 3.2.2. 实例化容器 3.2.3. 多种bean 3.2.4. 使用容器 3.3. 依赖 3.3.1. 注入依赖 3.3.2. 构造器参数的解析 3.3.3. bean属性及构造器参数详解 3.3.4. 使用depends-on...

    spring源代码2.5

    5. **SpEL(Spring Expression Language)**:Spring 2.5引入了SpEL,这是一种强大的表达式语言,可以用来在运行时查询和操作对象图,以及执行基本的操作和逻辑控制。 6. **OSGi支持**:虽然描述中提到OSGi实际应用...

    spring源代码解析

    在Spring源代码解析的第一部分,主要涉及的是IOC容器的基础概念和工作原理。BeanFactory是Spring中最基础的IoC容器实现,它负责加载配置元数据,实例化、配置和管理对象,也就是所谓的"bean"。Spring提供了多种类型...

    spring2.5 api以及源代码

    5. **Spring Expression Language (SpEL)**:Spring 2.5引入了一种强大的表达式语言,用于在运行时查询和操作对象图。SpEL可用于属性绑定、方法调用、条件语句等。 6. **JDBC抽象层**:Spring提供了JdbcTemplate和...

Global site tag (gtag.js) - Google Analytics