java学习第三十八天内容

1.前一天重点内容复习

        使用JDBC操作DQL语句的操作步骤

                导入jar包

                注册驱动

                        Class.forName("Driver类全限定名称");

                获取数据库连接对象

                        DriverManager.getConnection("jdbc:数据库名称://域名:端口号/库名","用户名","密码");

                准备sql语句

                        String sql = "sql语句";

                获取执行对象

                        数据库连接对象.createStatement();

                执行查询语句获得结果集

                        数据库执行对象.executeQuery(sql);

                结果集遍历

                        next():获取到某行数据

                        get数据类型(列数):获得当前行列数对应的值

                        get数据类型(列名):获得当前行列名对应的值

                释放资源:

                        结果集对象.close();

                        数据库执行对象.close();

                        数据库连接对象.close();

        单列模式:内存中始终只有一个类对象存在

                实现方式

                        饿汉式:永远不会出现问题的单例模式

                                1.在类成员位置,创建一个静态实例变量

                                2.构造方法私有化,外界不能够创建对象,保证安全性

                                3.提供静态的公共访问方法,返回值就是当前类本身

                        懒汉式:可能会出现安全问题的单例模式

                                1.在类的成员位置,声明当前类的静态变量

                                2.构造方法私有化,外界类不能创建对象,保证安全性

                                3.判断当前静态变量是否为空,用的时候才去创建对象

        线程的状态有几种

                6种

                新建,运行,阻塞,死死等待,超时等待,死亡

        线程的创建方式有几种

                继承实现:

                        自定义一个类,继承Thread类

                        在main方法中,创建自定义类对象

                        启动线程,start()

                接口实现:使用到了静态代理,静态代理最大特点就是代理角色和真实角色必须实现同一个接口

                        自定义一个类,实现Runnable接口,这个类为资源共享类

                        创建资源共享类对象

                        创建Thread类对象,将资源共享类对象作为参数传递进去

                        启动线程

                线程池:ExecutorService 接口,具体子实现类

                        工厂类

                                Executors的静态功能

                                        public static ExecutorService newFixedThreadPool(int nThread):创建一个具有固定数量线程的线程池

                                ExecutorService:

                                        Future<V> submit(Callable<V> call):提交异步任务

                                                Future:线程异步计算的结果

                                                        自定义类实现callable方法,重写call方法,进行计算

                                       void shutdown():关闭线程池  

        封装jbdcUtils工具类的步骤

                1.提供静态代码块,随着类的加载一起加载,静态代码块负责读取src目录下的properties文件,并获得文件key对应的值,注册驱动工作

                2.提供静态方法,将静态代码块获取到的值代入获得数据库连接对象方法中,返回一个数据库连接对象

                3.释放资源

2.PreparedStatement对象

        java.sql.PreparedStatement:预编译的SQL语句对象

        PreparedStatement preparedStatement(String sql) throws SQLException:通过连接对象获取预编译对象的时候,同时将参数化sql发送到数据并保存到编译对象中

                参数化sql:insert into 表名(字段名称1,字段名称2,、、、)values(?,?,、、);

                        ?:为占位符

                给占位符赋值:void set参数类型(占位符序号,实际参数);

        执行功能:

                ResultSet executeQuery() throws SQLException:执行查询语句的方法

                int executeUpdate() throws SQLException:执行增删改查语句的方法

3.Statement和PreparedStatement区别

        1.Statement执行的是静态sql语句,会有字符串拼接现象存在,执行的时候会出现sql注入,但是PreparedStatement能够有效防止SQL注入攻击

        2.Statement一次只能发送一条sql语句,效率低,PreparedStatement创建对象时已经将参数化sql语句发送给数据库,只需要给参数化sql中的占位符赋值实际参数即可执行,效率高

4.单元测试

        注解:能够被java应用程序解析出来

                jdk内置注解:

                        @Override:标记这个方式是否重写父类方法

                        @FunctionalInterface:标记这个接口是否是函数式接口,接口中有且仅有一个抽象方法

                Junit提供的注解:

                        @Test:标记这是一个单元测试

                         @Before:标记这个方法是在@Test标记的单元测试方法之前执行

                         @After:标记这个方法是在@Test标记的单元测试方法之后执行

                注解本质:所有注解都会继承一个接口Annotation,本质就是接口,是一个特殊接口

        单元测试实现步骤:

                导包:junit包和hamcrest包(依赖包)

                定义一个类专门针对不同功能进行测试

                在类中的成员方法上加入@Test,此方法不需要返回值

                使用断言,如果预期结果和真实结果进行比对,一致通过,不一致失败

                        junit提供的断言类:Assert

                                assertEquals(预期值,实际值);

5.jdbc管理事务

        Connection连接对象中管理事物

        void setAutoCommit(boolean autoCommit) throws SQLException:开启事物,参数flase手动提交,true自动提交

        void rollback throws SQLException:回滚事物

        void commit() throws SQLException:使所有更改都成为永久性的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值