【笔试面试考点】PreparedStatement和Statement的区别与联系&&批量插入数据的优化

3.PreparedStatement可以防止sql注入;

4.使用PreparedStatement可以插入BLob流文件数据,而Statement无法插入Blob数据

5.使用Statement数据需要进行拼串,操作繁琐,还存在sql注入

二.批量插入数据到数据的逐步优化

================

一.使用Statement


二.使用PreparedStatement插入



    //批量插入方式二:使用PreparedStatement插入

    public void testInsertInfo() throws Exception {

        Connection conn = null;

        PreparedStatement pst = null;

        String sql = "insert into user_tab(id,name) values(?,?)";

        try {

            long start = System.currentTimeMillis();

            conn = JDBCUtils.getConnection();

            pst = conn.prepareStatement(sql);

            for (int i = 1; i <20000 ; i++) {

                pst.setObject(1,i);

                pst.setObject(2,"name");

                pst.execute();

            }

            long end = System.currentTimeMillis();

            System.out.println("采用preparedStatement方式插入20000条数据花费的时间为:"+(end - start));

        }catch (Exception e){

            e.printStackTrace();

        }finally {

            JDBCUtils.closeResource(conn,pst);

        }



    }

三.使用batch缓存插入



 //批量插入方式三:使用批处理插入

    /*

    1.使用 添加batch :addBatch()  执行batch:executeBatch()  清空Batch(): clearBatch();

    2.在连接数据的url后面配置这句话:

            ?rewriteBatchedStatements=true

    3.批量插入数据使用的jdbc.jar必须实在5.7版本以上才支持

     */

    @Test

    public void  testInsertInfo2()  {

        Connection conn = null;

        PreparedStatement pst = null;

        String sql = "insert into user_tab(id,name) values(?,?)";

        try{

            long start = System.currentTimeMillis();

            conn = JDBCUtils.getConnection();

            pst = conn.prepareStatement(sql);

            for (int i = 1; i <=20000 ; i++) {

                pst.setObject(1,i);

                pst.setObject(2,"name"+i);

                //1,添加batch

                pst.addBatch();

                //2.执行batch()

                if (i % 500 == 0){

                    pst.executeBatch();

                    //清空batch

                    pst.clearBatch();

                }

            }

            long end = System.currentTimeMillis();

            System.out.println("采用batch插入20000条数据花费时间为:"+ (end - start));

        }catch (Exception e){

            e.printStackTrace();

        }finally {



        }



    }

四.改变提交的时机控制提交次数提高效率



 public void testInsertInfo3(){

        Connection conn = null;

        PreparedStatement pst = null;

        String sql = "insert into user_tab(id ,name) values(?,?)";

        try {

            long start = System.currentTimeMillis();

            conn = JDBCUtils.getConnection();

            conn.setAutoCommit(false);

            pst = conn.prepareStatement(sql);

            for (int i = 1; i <= 200000; i++) {

                pst.setObject(1,i);

                pst.setObject(2,"name"+i);

                //添加缓存

                pst.addBatch();

                if(i % 500 == 0){


**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fimg-community.csdnimg.cn%2Fimages%2Fa92dbbe283504228b5cb01ebe38fa53b.jpeg&pos_id=img-9iAhJQYl-1712959032773)
![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fimg-community.csdnimg.cn%2Fimages%2Fe6b279a5bb3045fab2ad5d20a9f37836.png&pos_id=img-2PU8HntL-1712959032774)
![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fimg-community.csdnimg.cn%2Fimages%2F1d3b9892604f421caf8c68d5b119559a.png&pos_id=img-J4sjqnnT-1712959032774)
![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fimg-community.csdnimg.cn%2Fimages%2F65ae6aa7f2f74a489af3658e8c6a8bcb.png&pos_id=img-yRO49ije-1712959032774)
![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fimg-community.csdnimg.cn%2Fimages%2F8724f05fd5f949a4941e23bfae470aae.png&pos_id=img-DmgJESXt-1712959032775)
![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fimg-community.csdnimg.cn%2Fimages%2Fb44d960d4a7941c7a5b3975458ebb318.png&pos_id=img-tG9r20mf-1712959032775)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)**
![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fimg-community.csdnimg.cn%2Fimages%2Fea6c74037d664eb1b28b0b44ba269e0e.jpg&pos_id=img-Yiw4l0ZJ-1712959032775)



# 最后我们该如何学习?

**1、看视频进行系统学习**

这几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。

另外,我自己也珍藏了好几套视频资料躺在网盘里,有需要的我也可以分享给你:

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fupload-images.jianshu.io%2Fupload_images%2F24616006-025e2092e2a0ae83%3FimageMogr2%2Fauto-orient%2Fstrip%257CimageView2%2F2%2Fw%2F1240&pos_id=img-U2Ki2zlo-1712959032776)

**2、读源码,看实战笔记,学习大神思路**

“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。

Spring源码深度解析:

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fupload-images.jianshu.io%2Fupload_images%2F24616006-9b34b45353e3c0fc%3FimageMogr2%2Fauto-orient%2Fstrip%257CimageView2%2F2%2Fw%2F1240&pos_id=img-unVRRsQF-1712959032776)

Mybatis 3源码深度解析:

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fupload-images.jianshu.io%2Fupload_images%2F24616006-4fa0bca8db6b0ddb%3FimageMogr2%2Fauto-orient%2Fstrip%257CimageView2%2F2%2Fw%2F1240&pos_id=img-ggfoovtR-1712959032776)

Redis学习笔记:

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fupload-images.jianshu.io%2Fupload_images%2F24616006-947683266eba22fc%3FimageMogr2%2Fauto-orient%2Fstrip%257CimageView2%2F2%2Fw%2F1240&pos_id=img-cMbgO4lC-1712959032777)

Spring Boot核心技术-笔记:

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fupload-images.jianshu.io%2Fupload_images%2F24616006-00651431bb3920a4%3FimageMogr2%2Fauto-orient%2Fstrip%257CimageView2%2F2%2Fw%2F1240&pos_id=img-ug0pSALz-1712959032778)

**3、面试前夕,刷题冲刺**

面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。

关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三:

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fupload-images.jianshu.io%2Fupload_images%2F24616006-a0fd42830447c97f%3FimageMogr2%2Fauto-orient%2Fstrip%257CimageView2%2F2%2Fw%2F1240&pos_id=img-tazs175H-1712959032779)

只有技术过硬,在哪儿都不愁就业,“万般带不去,唯有业随身”学习本来就不是在课堂那几年说了算,而是在人生的旅途中不间断的事情。

人生短暂,别稀里糊涂的活一辈子,不要将就。


**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fimg-community.csdnimg.cn%2Fimages%2Fea6c74037d664eb1b28b0b44ba269e0e.jpg&pos_id=img-jsEjOE3E-1712959032779)

三:

[外链图片转存中...(img-tazs175H-1712959032779)]

只有技术过硬,在哪儿都不愁就业,“万般带不去,唯有业随身”学习本来就不是在课堂那几年说了算,而是在人生的旅途中不间断的事情。

人生短暂,别稀里糊涂的活一辈子,不要将就。


**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
[外链图片转存中...(img-jsEjOE3E-1712959032779)]

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值