欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mysql第四天

程序员文章站 2022-05-29 16:41:56
...

JDBC事物

1.事物的概念:
事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作。
这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行。
2.事务: mysql 数据库中的1.自动提交
2.手动提交 手动提交 失败的流程: (1.设置mysql 数据库为手动提交 set autocommit =0
2.开事务 start transaction
3.执行操作
4.rollback 回滚 rollback to kk 回滚到具体某一步 savepoint kk; 设置回滚点
5.commit 提交 )

事务的原理图:如果开启事务:给用户来创建一个临时的文件来保存数据,需要commit的时候才会进行提交(同步到数据库里) rollback 清空临时文件的所有数据
事务的四大原则: ACID 原子性: 每一个事务都是最小的原子单位,不能进行再分割==>要么两条sql语句同时执行成功要么同时执行失败
一致性: 数据要么执行前的数据,要么是执行后的数据
隔离性 每一个事务都是相互隔离的,互不影响
持久性 只要commit以后,数据就保存到数据库了

3.三层架构 :View层 =>视图 (控制台)
Service==>业务逻辑层
Dao层 ==>数据库层
实体类的包 com.offcn.gjp.entity
数据库的包 com.offcn.gjp.dao
逻辑的包: com.offcn.gjp.service
工具包:com.offcn.gjp.utils
视图包 com.offcn.gjp.view

JDBC连接池

1.连接池: 没有连接池时候: 每次都要创建jdbc连接资源,关闭资源 ==>反复创建与销毁会影响性能

2.连接池: 管理连接, 避免反复来创建于销毁连接 连接池 是连接池的厂商来进行创建 ==> 用于对接连接池的类 DataSource(数据源)

3.市面上常用的连接 :1.dbcp 2.c3p0 3.druip
1.dbcp 1.连接池的效率最高
2.是tomcat的内置连接池
3.一秒钟最多可以创建于管理1000个连接
4.安全性比较差==> 丢失数据 socket 的udp协议
2.使用的步骤:1.导入其jar包 数据库jar也需要 添加依赖
2.获取DataSource 对象 BasicDataSourceFactory.createDataSource(pro);
3详解: dbcpconfig.properties 1.数据库的配置文件 1.一般不建议写中文 2. 以 properties进行结尾xxx.properties
2.把数据配置文件的信息加载到Properties
第一种 通过流进行读取 FileInputStream fis = new FileInputStream(new File(“dbcpconfig.properties”));
文件是需要方法与src平级
第二种通过反射来进行操作: InputStream is = Test.class.getResourceAsStream(“dbcpconfig.properties”); 与使用的类平级

try {
            InputStream is =  Test.class.getResourceAsStream("dbcpconfig.properties");
            Properties pro  = new Properties();
            pro.load(is);
            DataSource ds = BasicDataSourceFactory.createDataSource(pro);
            System.out.println(ds.getConnection());
        } catch (Exception e) {
            e.printStackTrace();
        }

4.dbcp工具类的封装:
1.只实例化一个对象 2.配置文件值加载一次 ==>单例设置模式 :1.私有的属性 2.私有的构造 3.公有的对外方法

5.配置文件的地址: http://commons.apache.org/proper/commons-dbcp/configuration.html
c3p0:特点 数据不会丢失,安全性比较高,但是效率慢一点,所有spring框架的连接池都使用的c3p0 spring全家桶 :spring springMVC springData springBoot springcould
使用c3p0的基本步骤:1.导入jar
2.导入数据库的配置信息 (数据库的配置信息放在src下) 1.文件的名称必须是c3p0-config 前缀 2. 可以是xml 文件 也可以是properties文件
3. 获取DataSource 对象 DataSource ds = new ComboPooledDataSource(); >c3p0.xml 默认的配置

 DataSource ds = new ComboPooledDataSource();
        QueryRunner qr = new QueryRunner(ds);
       
        String sql = "insert into user(uname,upwd)values(?,?)";
        Object[] objects = {"jj", "www"};
        int num = qr.update(sql, objects);
        System.out.println(num);
6.dbutils>其实就是对jdbc的一个封装,简化代码 一般是与c3p0进行搭配 

使用步骤:1.导入相关的jar包
2.使用其核心的类 QueryRunner QueryRunner qr = new QueryRunner();
3.常规的方法 update(“sql语句”,“具体的值”)
4.查询的接口类: ResultSetHandler >1.new BeanHandler<>() 查询的是单条对象 >new BeanHandler(User.class),3
2==>new BeanListHandler(User.class) 查询出所有对象
3.,new MapHandler() 查询出第一行数据,把第一行数据封装成了一个map对象
4. new MapListHandler() 查询出的表中的数据,都封装成一个map对象 ==>也是一个集合,只是泛型是Map
.new ScalarHandler()查询总记录数 ==>必须用Long 类型来接收
5. 实体类的要求: 1.必须序列化 implements Serializable
2必须是私有的属性 set get 方法
3.必须给一个无参构造