jdbctemplate

spring_事物

浪尽此生 提交于 2019-12-03 13:17:39
spring_事物 1.事务   1.1 什么是事务:    事务(TRANSACTION) 是作为单个逻辑工作单元执行的一系列操作。 多个操作作为一个整体向系统提交,要么都执行,要么都不执行。 事务是一个不可分割的逻辑单元。    1.2 事务的特性:      事务具备以下四个特性,简称 ACID 属性。 原子性(Atomicity):   事务是一个完整的操作,事务的各步操作都是不可再分的,要么都执行,要么都不执行。 一致性(Consistency):   当事务完成时,数据必须处于一致的状态。 隔离性(Isolation):   并发事务之间相互独立、隔离,它不应以任何方式依赖于或影响其他事务。 持久性(Durability):   事务完成后,它对数据库的修改被永久保持。    1.3 mysql 事务操作---简单 ABCD 一个事务 Connection conn = null; try{ //1 获得连接 conn = ...; //2 开启事务 conn.setAutoCommit(false); A B C D //3 提交事务 conn.commit(); } catche(){ //4 回滚事务 conn.rollback(); }    1.4 mysql 事务操作---Savepoint 需求:AB(必须),CD(可选) Connection conn

How to use PostgreSQL hstore/json with JdbcTemplate

非 Y 不嫁゛ 提交于 2019-12-03 12:49:15
问题 Is there a way to use PostgreSQL json/hstore with JdbcTemplate ? esp query support. for eg: hstore: INSERT INTO hstore_test (data) VALUES ('"key1"=>"value1", "key2"=>"value2", "key3"=>"value3"') SELECT data -> 'key4' FROM hstore_test SELECT item_id, (each(data)).* FROM hstore_test WHERE item_id = 2 for Json insert into jtest (data) values ('{"k1": 1, "k2": "two"}'); select * from jtest where data ->> 'k2' = 'two'; 回答1: Although quite late for an answer (for the insert part), I hope it might

What is proper way to use PreparedStatementCreator of Spring JDBC?

我的未来我决定 提交于 2019-12-03 12:13:34
As per my understanding the use of PreparedStatement in Java is we can use it multiple times. But I have some confusion using PreparedStatementCreator of Spring JDBC. For example consider following code, public class SpringTest { JdbcTemplate jdbcTemplate; PreparedStatementCreator preparedStatementCreator; ResultSetExtractor<String> resultSetExtractor; public SpringTest() throws SQLException { jdbcTemplate = new JdbcTemplate(OracleUtil.getDataSource()); preparedStatementCreator = new PreparedStatementCreator() { String query = "select NAME from TABLE1 where ID=?"; public PreparedStatement

项目启动时操作数据库

依然范特西╮ 提交于 2019-12-03 12:05:07
对于springboot项目而言,框架提供了多种接口,在项目启动时执行自定义操作。本篇记录项目启动时操作数据库的场景,利用了spring框架帮我们封装好的JdbcDaoSupport接口,操作起来还是很简单的。 application.properties spring.datasource.driver-class-name = com.mysql.jdbc.Driver spring.datasource.url= jdbc:mysql://120.79.xx.yy:3306/security?useUnicode=yes&characterEncoding=UTF-8&useSSL=false spring.datasource.username = root spring.datasource.password = 132123 import org.springframework.jdbc.core.support.JdbcDaoSupport; public class DefaultDaoSupport extends JdbcDaoSupport{ public static final String CREATE_TABLE_SQL = "create table if not exists tb_student (id bigint(20) NOT NULL

Spring-事务

倾然丶 夕夏残阳落幕 提交于 2019-12-03 11:29:23
Spring 的事务管理是基于 AOP 实现的,而 AOP 是以方法为单位的。Spring 的事务属性分别为传播行为、隔离级别、只读和超时属性,这些属性提供了事务应用的方法和描述策略。 在 Java EE 开发经常采用的分层模式中,Spring 的事务处理位于业务逻辑层,它提供了针对事务的解决方案。 在 Spring 解压包的 libs 目录中,包含一个名称为 spring-tx-3.2.13.RELEASE.jar 的文件,该文件是 Spring 提供的用于事务管理的 JAR 包,其中包括事务管理的三个核心接口:PlatformTransactionManager、TransactionDefinition 和 TransactionStatus。 将该 JAR 包的后缀名 jar 改成 zip 的形式后,解压压缩包,进入解压文件夹中的 \org\springframework\transaction 目录后,该目录中的文件如图 1 所示。 图 1 事务管理核心接口 在图 1 中,方框所标注的三个文件就是本节将要讲解的核心接口。这三个核心接口的作用及其提供的方法如下。 1. PlatformTransactionManager PlatformTransactionManager 接口是 Spring 提供的平台事务管理器,用于管理事务。该接口中提供了三个事务操作方法,具体如下。

Spring事务终极版...

回眸只為那壹抹淺笑 提交于 2019-12-03 11:19:35
1.什么是事务   事务(TRANSACTION) 是作为单个逻辑工作单元执行的一系列操作。   多个操作作为一个整体向系统提交,要么都执行,要么都不执行   事务是一个无可再分的逻辑单元 2.事务的特性   四个属性,简称 ACDI属性   原子性( Atomicity )     事务是一个完整的操作,事务的各个操作都是不可再分的,要么都执行,要么都不执行   一致性( Consistency )     当事务完成后,数据必须处于一致性   隔离性( Isolation )     并发事务之间相互隔离,独立,他不应以任何形式依赖于或影响其他事务    持久性( Durability )     事务完成后,他对数据的修改是永久性的; 3.隔离问题    脏读     一个事务读到另一个事务没有提交的数据    不可重复读     一个事务读到另一个事务已经提交的数据(正常现象,主要发生在update)    幻读(虚读)     一个事务读到另一个事务已经提交的数据(正常现象,主要发生在insert) 4.隔离级别    read uncommitted:     读未提交。存在3个问题(脏读,可重复读,虚读)    read committed:     读已提交。解决脏读,存在2个问题(可重复读,虚读)    repeatable read:     可重复读。解决

transaction事务案例--银行转账

跟風遠走 提交于 2019-12-03 10:55:18
1 ) dao 层 package cn.spring.transaction.dao; public interface MoneyDao { //加钱的方法 void addMoney(double money); //减钱的方法 void subMoney(double money); } 代码实现 ( 2 ) daoImpl 层 package cn.spring.transaction.dao.impl; import cn.spring.transaction.dao.MoneyDao; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.support.JdbcDaoSupport; public class MoneyDaoImpl extends JdbcDaoSupport implements MoneyDao { JdbcTemplate jdbcTemplate=this.getJdbcTemplate(); @Override public void addMoney(double money) { String sql="update accounts set balance=balance+? where accountname

事务经典案例

拥有回忆 提交于 2019-12-03 10:50:01
1. 使用事务工厂实现 1.1 创建 Dao 层接口 public interface TransationDao { //加钱方法 public void addMoney(Double dou); //减钱方法 public void subMoney(Double dou); } 1.2 创建 Dao 层接口实现类 @Repository public class TransationDaoImpl implements TransationDao { @Resource private JdbcTemplate jdbcTemplate; @Override public void addMoney(Double dou) { String sql="update accounts set balance=balance+? where accountid=1"; /*this.getJdbcTemplate().update(sql, dou);*/ jdbcTemplate.update(sql,dou); } @Override public void subMoney(Double dou) { String sql="update accounts set balance=balance-? where accountid=6"; /*this

Does Spring JDBC provide any protection from SQL injection attacks?

拟墨画扇 提交于 2019-12-03 10:45:28
问题 Spring's JdbcTemplate abstraction provides a lot of functionality, but can it be used in such a way that provides protection from SQL injection attacks? For example, like the kind of protection you would get using PreparedStatement with properly defined parameterization. 回答1: It most certainly does. This example is straight from the Spring 3.0 docs (but is the same in 2.*): String lastName = this.jdbcTemplate.queryForObject( "select last_name from t_actor where id = ?", String.class, 1212L);

jdbcTemplate

戏子无情 提交于 2019-12-03 10:24:30
Jdbc Template JdbcTemplate简介    Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中。    JdbcTemplate位于 中。其全限定命名为 org.springframework.jdbc.core.JdbcTemplate。要使用JdbcTemlate还需一个这个包包含了一下事务和异常控制 JdbcTemplate主要提供以下五类方法: execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句; update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句; query方法及queryForXXX方法:用于执行查询相关语句; call方法:用于执行存储过程、函数相关语句。 示列 : 增删改查 1. 实体类 2.dao 层接口 3.daoimpl 实现类 ( 1. 查询) (2. 增删改) 4.service 接口 5.serviceimpl 实现类 6.applicationContext.xml 大配置文件 7. 配置 jdbc 8. 测试 结果 : 示列 : 注解 来源: https://www.cnblogs.com/mayuan01/p