zoukankan      html  css  js  c++  java
  • 查询的实现类的参数问题&&手动提交事务ThreadLocal

    查询的实现类的参数问题
    query(...,Object...,params)
    runner.query("select * from student where sno>? and sname like ?", new KeyedHandler<String>("sname"), 1,"%m%");
    runner.query("select * from student where sno>? and sname like ?", new KeyedHandler<String>("sname"), new Object[]{1,"%m%"});
    runner.query("select * from student where sno>? and sname like ?", new KeyedHandler<String>("sname"), 1);

    ORA-00904:标识符无效:SQL关键性 写错,ojdbc.jar问题


    apache dbutils增删改

    自动提交事务update(sql,参数);update(sql);
    手动提交事务update(connection,sql,参数);


    手动提交事务

    转账:zs-1000->ls+1000

    基础知识:
    一、如果既要保证数据安全,又要保证性能,可以考虑ThreadLocal

    ThreadLocal:可以为每个线程创建一个副本。每个线程可以访问自己的副本。别名,线程本地变量。
    set():给tl中存放一个变量
    get():从tl中获取变量(副本)
    remove():删除副
    二、对于数据库来说,一个连接对应于一个事务,一个事务可以包含多个DML操作
    service(多个原子操作)->Dao(原子操作)

    转账
    Service->Dao(a.减少 b.增加)

    Service ->(connection->psmst->update)update (connection->psmst->update)update
    如果每个dao操作都创建一个connection,则多个dao操作对应于多个事务;
    但是一般来讲,一个业务(service)中的多个dao操作应该包含在一个事务中。

    ->解决,Threadlocal,在第一个dao操作时,真正创建一个connection对象,然后在其他几次dao操作时 ,借助于tl本身特性,自动将该connection复制多个(connection只创建了一个,因此该connection中的所有操作,必然对应于同一个事务;并且tl将connection在使用层面复制了多个,因此可以同时完成多个dao操作)

    事务流程:开启事务(将自动提交->手动提交)->进行各种DML->正常,将刚才所有DML全部提交(全部成功)
    ->失败(异常 ),将刚才 所有DML全部回滚(全部失败)
    事务的操作全部和连接Connection密切相关

  • 相关阅读:
    Oracle EBS AR 收款调整取值
    Oracle EBS GL 创建会计科目
    Oracle EBS 应收事务处理取值
    Oracle EBS 应收发票取值
    Oracle EBS AR 收款核销行关联到事务处理
    art-template渲染真实数据--后台接口(难度:3颗星)
    art-template渲染简单数据(难度:1颗星)
    art-template渲染数据示例(难度:2颗星)
    使用jQuery渲染一般数据
    如何使用git,github?
  • 原文地址:https://www.cnblogs.com/mayouyou/p/13166253.html
Copyright © 2011-2022 走看看