jdbctemplate

spring 整合JDBC

大城市里の小女人 提交于 2020-03-15 11:34:39
使用Spring提供的三个JDBC模板类(JdbcTemplate、NamedParameterJdbcTemplate、SimpleJdbcTemplate)操作数据库 一、JdbcTemplate是Spring中最主要的JDBC模板, 利用JDBC和简单的索引參数查询对数据库进行简单訪问 二、NamedParameterJdbcTemplate可以在查询的时候把值绑定到SQL里的命名參数,而不是索引參数 NamedParameterJdbcTemplate内部包括了一个JdbcTemplate,所以JdbcTemplate能做的事情NamedParameterJdbcTemplate都能干; NamedParameterJdbcTemplate相对于JdbcTemplate主要添加�了參数能够命名的功能。 三、SimpleJdbcTemplate利用Java5的特性,比方自己主动装箱、通用和可变參数列表来简化JDBC模板的使用 SimpleJdbcTemplate内部包括了一个NamedParameterJdbcTemplate;所以NamedParameterJdbcTemplate能做的事情SimpleJdbcTemplate都能干, SimpleJdbcTemplate相对于NamedParameterJdbcTemplate主要添加�了JDK5

spring 之7种重要设计模式

ぃ、小莉子 提交于 2020-03-09 08:52:44
Spring中涉及的设计模式总结 1.简单工厂(非23种设计模式中的一种) 实现方式: BeanFactory。Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。 实质: 由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。 实现原理: bean容器的启动阶段: 读取bean的xml配置文件,将bean元素分别转换成一个BeanDefinition对象。 然后通过BeanDefinitionRegistry将这些bean注册到beanFactory中,保存在它的一个ConcurrentHashMap中。 将BeanDefinition注册到了beanFactory之后,在这里Spring为我们提供了一个扩展的切口,允许我们通过实现接口BeanFactoryPostProcessor 在此处来插入我们定义的代码。典型的例子就是:PropertyPlaceholderConfigurer,我们一般在配置数据库的dataSource时使用到的占位符的值,就是它注入进去的。 容器中bean的实例化阶段: 实例化阶段主要是通过反射或者CGLIB对bean进行实例化,在这个阶段Spring又给我们暴露了很多的扩展点: 各种的Aware接口 ,比如

spring框架总结(04)----介绍的是Spring中的JDBC模板

别来无恙 提交于 2020-03-05 08:03:49
1.1 Jdbc模板概述 它是spring框架中提供的一个对象, 是对原始 Jdbc API 对象的简单封装 。spring框架为我们提供了很多的操作模板类,入下图所示: 我们今天的主角在 spring-jdbc-4.24.RELEASE.jar 中,我们在导包的时候,除了要导入这个jar包外,还需要导入一个 spring-tx-4.2.4.RELEASE.jar (它是和事务相关的)。 1、Spring中的jdbc模板入门 1.1.1. 创建工程、引入jar包 1.1.2. 创建测试表 CREATE TABLE account( id BIGINT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(40), money DOUBLE )CHARACTER SET utf8 COLLATE utf8_general_ci; 1.1.3. 创建测试类 注意:需要导入c3p0的jar包 public class TestJdbcTemplate { @Test public void test1(){ //创建 jdbc 模板对象 JdbcTemplate jdbcTemplate = new JdbcTemplate(); //创建c3p0数据源 ComboPooledDataSource dataSource = new

Spring的JDBC

纵饮孤独 提交于 2020-03-03 06:27:38
为什么使用JDBCTemplate:当我们执行完查询结果后,需要将结果集中的结果封装到对象中去。这是个体力活,很麻烦,我们就引入了JDBCTemplate。 也就是Spring框架对JDBC的简单封装,提供了一个JDBCTemplate对象简化JDBC的开发 步骤: 1. 导入jar包 2. 创建JdbcTemplate对象。依赖于数据源DataSource * JdbcTemplate template = new JdbcTemplate(ds); 3. 调用JdbcTemplate的方法来完成CRUD的操作 * update():执行DML语句。增、删、改语句 * queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value 将这条记录封装为一个map集合 * 注意:这个方法查询的结果集长度只能是1 * queryForList():查询结果将结果集封装为list集合 * 注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中 * query():查询结果,将结果封装为JavaBean对象 * query的参数:RowMapper * 一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装 * new BeanPropertyRowMapper<类型>(类型.class)

【SSM框架系列】Spring - JdbcTemplate&声明式事务

你离开我真会死。 提交于 2020-02-28 01:23:14
JdbcTemplate概述 以往使用jdbc时,每次都需要自己获取PreparedStatement,执行sql语句,关闭连接等操作。操作麻烦冗余,影响编码的效率。 Spring把对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate(jdbc模板)之中,这样我们只需要做一些简单的操作(eg:编写SQL语句、传递参数)就可以了。 spring框架根据不同持久层方案为我们提供了不同的JdbcTemplate(jdbc模板类)。例如:操作关系型数据的JdbcTemplate和HibernateTemplate,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等 QuickStart 导入spring-jdbc和spring-tx坐标 < dependencies > <!-- Spring上下文坐标,如果使用到了Spring的上下文容器,需要导入--> < dependency > < groupId > org.springframework </ groupId > < artifactId > spring-context </ artifactId > < version > 5.0.5.RELEASE </ version > </ dependency >

Spring5学习(五)Spring DAO

非 Y 不嫁゛ 提交于 2020-02-27 08:41:31
Spring DAO Spring对数据访问对象(DAO)的支持旨在使以一致的方式轻松使用数据访问技术(例如JDBC,Hibernate或JPA)。这使您可以轻松地在上述持久性技术之间进行切换,还使您无需担心捕获每种技术特有的异常即可进行编码。 1. 使用JDBC访问数据库 使用 JdbcTemplate 模板类操作数据 JdbcTemplate 主要提供以下五类方法: execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句; update方法:update方法用于执行新增、修改、删除等语句; batchUpdate方法:batchUpdate方法用于执行批处理相关语句; query方法及queryForXXX方法:用于执行查询相关语句; call方法:用于执行存储过程、函数相关语句。 @RunWith ( SpringRunner . class ) @SpringJUnitConfig ( locations = "file:src/main/resources/applicationContext.xml" ) public class JdbcTemplateTest { @Autowired private JdbcTemplate jdbcTemplate ; @Test public void test1 ( ) { String sql =

Spring5.X JdbcTemplate

百般思念 提交于 2020-02-26 16:49:25
1、JdbcTemplate类图 2、JdbcAccessor {@link org.springframework.jdbc.core.JdbcTemplate}和其他JDBC访问DAO帮助器的基类,定义了诸如DataSource和异常转换器之类的通用属性 3、JdbcOperations 指定一组基本JDBC操作的接口。 由{@link JdbcTemplate}实现。并不经常直接使用,而是一个有用的选项,可增强可测试性,因为它很容易被mocked or stubbed。 4、JdbcTemplate 4.1 执行流程 (1) 根据DataSource获取当前线程数据源绑定的Connection (2) 创建Statement/PreparedStatement/CallableStatement (3) 执行回调StatementCallback/PreparedStatementCallback/CallableStatementCallback (4) 使用ResultSetExtractor提取执行结果 (5) 处理可能的SQL告警是否抛出SQLWarningException (6) 释放资源 JDBC操作数据库流程大体如上,找出其中可变部分:Statement的创建、返回结果的处理,找出其中通用操作:参数的设置。 面向对象适合于解决软件的“可扩展性”问题

How to create a mySQL stored procedure in a JdbcTemplate

依然范特西╮ 提交于 2020-02-24 12:25:22
问题 Background To work around the issue in MySql that certain statements are only permitted within a stored procedure I'm trying to create, run, then drop a stored procedure within sql submitted by a JdbcTemplate. A simplied example would be (this happens to be within spring boot): @Service public class StartupDatabaseCheck { private JdbcTemplate template; @Autowired public StartupDatabaseCheck(JdbcTemplate template){ this.template = template; } @PostConstruct public void init() { log.info(

insert varbinary value from hex literal in Microsoft SQL Server

六眼飞鱼酱① 提交于 2020-02-24 12:23:05
问题 I have a SpringBoot app, where I use jdbcTemplate to insert a row to a mssql int numOfRowsAffected = remoteJdbcTemplate.update("insert into dbo.[ELCOR Resource Time Registr_] " + "( [Entry No_], [Record ID], [Posting Date], [Resource No_], [Job No_], [Work Type], [Quantity], [Unit of Measure], [Description], [Company Name], [Created Date-Time], [Status] ) " + " VALUES (?,CONVERT(varbinary,?),?,?,?,?,?,?,?,?,?,?);", ELCORResourceTimeRegistr.getEntryNo(), ELCORResourceTimeRegistr.getEntryNo()),

SpringBoot整合持久层技术--(一)JdbcTemplate

拜拜、爱过 提交于 2020-02-20 18:00:31
简介;   JdbcTemplate是Spring提供的一套JDBC模板框架,利用AOP技术解决直接使用JDBC带来的重复代码问题。它没有MyBatis使用那么灵活,但是却比直接使用JDBC方便得多。SpringBoot中对JdbcTemplate的使用提供了自动化配置类 JdbcTemplateAutoConfiguration 。   部分源码: @Configuration @ConditionalOnClass({DataSource.class, JdbcTemplate.class}) @ConditionalOnSingleCandidate(DataSource.class) @AutoConfigureAfter({DataSourceAutoConfiguration.class}) @EnableConfigurationProperties({JdbcProperties.class}) public class JdbcTemplateAutoConfiguration { public JdbcTemplateAutoConfiguration() { } @Configuration static class JdbcTemplateConfiguration { private final DataSource dataSource; private