深入理解PreparedStatement

news2025/1/16 3:50:30

预处理

@Override
    public boolean login(String username, String userpwd) {

        Connection  con = DBUtils.getConnection();
        try {
            if(con != null)
            {
               PreparedStatement pstmt = con.prepareStatement("select username,userpwd from " +
                        " users where username=? and userpwd=?");
               pstmt.setString(1,username);
               pstmt.setString(2,userpwd);
               ResultSet rs = pstmt.executeQuery();
               if(rs.next())
               {
                   return  true;
               }
               else
               {
                   return  false;
               }
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        return  false;
    }

分层

utils 工具类
entity/pojo 实体类/标准封装类
dao 数据库对象操作层
service 服务层
controller 业务控制层
在这里插入图片描述

JavaSE 项目

项目要求:

1、优化人事管理系统,要有完整的业务关系。
2、人事管理系统中要包含网络编程。
3、人事管理系统中要包含多线程。

连接池

数据库连接池负责分配、管理和释放数据库链接,它允许应用程序重复使用一个现有的数据库链接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库链接来避免因为没有释放数据库链接而引起的数据库链接遗漏。这项技术能明显提高对数据库操作的性能。

最小连接数:

是连接池一直保持的数据库链接数,所以如果应用程序对数据库链接的使用量不大,将会有大量的数据库链接资源被浪费,合理设置最小连接数,能够有效提高数据库链接性能。

最大连接数:

是连接池能申请的最大数据库连接数,如果数据库链接请求超过此数,后面的数据库链接请求将被加入到等待队列中,这会影响之后的数据库链接操作,因此合理设置最大连接数,也能够有效提高数据库链接性能。

最小连接数与最大连接数差距:

最小连接数与最大连接数相差太大,那么最先的链接请求将会获利,之后超过最小连接数量的链接请求等价于建立一个新的数据库链接,不过,这些大于最小连接数的数据库链接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。

DBCP Apache 连接池
在这里插入图片描述

连接池配置文件内容如下:

driverClassName = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost:3306/wlx
username = root
password = 123456
#初始连接数
initialSize = 10
#最大链接数
maxActive = 100
#最小空闲数
minldle = 100
#最大空闲数
maxldle = 200
package com.wlx.day15.utils;

import org.apache.commons.dbcp.BasicDataSourceFactory;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

public class DBPoolUtils
{
    //链接数据库的数据源对象
    private  static DataSource  dataSource;

    //将链接存储在多线程中,一个链接一个线程
    private static  ThreadLocal<Connection>  threadLocal = new ThreadLocal<>();

    //数据库链接对象
    private  static  Connection con;


    static
    {
        try {
            Properties  source = new Properties();
            source.load(DBPoolUtils.class.getClassLoader().getResourceAsStream("db.properties"));
            //初始化数据源对象
            dataSource = BasicDataSourceFactory.createDataSource(source);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 一个链接一个线程
     * 一个线程一个事务
     * 一个事务一个业务
     * @return
     */
    public static  Connection getConnection()
    {
        try {
            //获取ThreadLocal中的数据库链接对象
            con = threadLocal.get();
            if(con == null)
            {
                con = dataSource.getConnection();
                threadLocal.set(con);
                return con;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return con;
    }

}

泛型

1.1、定义
就是允许在定义类/接口时指定类型形参,这个类型形参将在声明变量创建对象时传入实际的参数。
分为:泛型类、泛型接口、泛型变量、泛型方法。

1.2、泛型通配符

?表示任意类型
通配符后可以直接跟 extends/super,表示有限制的通配符。

<? extends Parent> 设置泛型的上限 <? super Child> 设置泛型的下限

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1968186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【靶场实操】sql-labs通关详解----第一节:基础注入方式(Less-1~Less-10)

目录 一、注入方式简要概括 1.1 SQL常见注入方式 1.2 爆破函数 二、靶场实操 2.1 Less-1 2.1.1 判断类型 2.1.2 联合注入查询 2.2 Less-2 2.2.1 判断类型 2.2.2 注入攻击 2.2.3 字符型与数字型漏洞对比 2.3 Less-3 2.3.1 判断 2.3.2 注入 2.4 Less-4 2.4.1 判断…

论文阅读-《Cross-Sentence N-ary Relation Extraction with Graph LSTMs》

这篇论文提出了一种基于图LSTM的跨句子n元关系提取框架&#xff0c;具有很好的创新性。图LSTM能够有效地处理长距离依赖和跨句信息&#xff0c;并且能够方便地整合丰富的语言分析。此外&#xff0c;论文还探索了多任务学习&#xff0c;将n元关系与其子关系进行联合学习&#xf…

WebFlux集成MongoDB

目录 前言 1.简单集成MongoDB 2. yml配置 3.创建用户实体类 4.创建用户CRUD数据访问接口类 5.Controller层 6.postman测试访问 7.代码附在本博文绑定资源 前言 MongoDB广泛应用于非关系型数据库的存储&#xff0c;其主要存储的数据类型有字符串&#xff0c;整数、浮点数…

NAS 软件大盘点:瞧瞧哪个被你遗漏了

很多人都听说过NAS&#xff0c;也有很多人正在使用NAS&#xff0c;而NAS用户通常需要安装一些软件来扩展其功能&#xff0c;毕竟NAS的功能实在是太多了&#xff0c;光是部署与调试就要耗费大量的时间&#xff0c; 小宝集合了NAS相关实用工具&#xff0c;无论是群晖、威联通还是…

3、从0搭建企业门户网站——JDK下载、安装与环境变量配置

目录 ​编辑 正文 1、JDK下载 2、JDK安装 2.1 建立存放目录 2.2 上传文件 2.3 解压 3、JDK环境变量配置 4、检查JDK版本 正文 在CentOs7.5上,安装JDK是必要的,因为我们的网站软件是Java语言开发。下面我们以安装JDK 17为例,介绍整个JDK安装过程。 1、JDK下载 JDK…

Vitis通过TCF远程调试ZYNQ Linux

昨天已经在矿渣板上把petalinux跑起来了&#xff0c;今天准备尝试一下vitis通过TCF远程调试ZYNQ Linux代码&#xff0c;官方和第三方的各种教程满天飞&#xff0c;但还是有几个坑的&#xff0c;教程没说清楚。 1.打开vitis&#xff0c;用vivado导出的xsa文件新建一个platform工…

ChinaJoy 2024,VERYCLOUD睿鸿股份与你相聚

&#x1f3ae;2024 ChinaJoy于26日正式开幕 &#x1f557;7月26-28日 &#x1f310;VERYCLOUD睿鸿股份在BTOB商务洽谈馆 &#x1f31f;W4-B785展位 &#x1f387;展台交流好礼相送 与多行业好友现场相聚、畅谈&#x1f9d0; 现场游戏企业云集 专业观众、玩家纷至沓来 与游戏/短…

新一代分割一切大模型SAM2(Segment Anything Model 2)介绍,可轻松分割图片与视频

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

KylinOS V10系统上安装yashan数据库单机版

一、服务器准备 这里安装的KylinOS V10桌面版本。 二、依赖项准备 安装桌面版的依赖包都安装好了。 https://doc.yashandb.com/yashandb/23.2/zh/%E5%AE%89%E8%A3%85%E5%92%8C%E5%8D%87%E7%BA%A7/%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2/%E5%AE%89%E8%A3%85%E5%89%8D%E5%87%86…

net start mysql; 服务名无效。 请键入 NET HELPMSG 2185 以获得更多的帮助。 也许你只是写错了名字!!!!!

看样子不知道问题出在哪里,看了别人的文章也不行。 打开服务&#xff08;命令行输入services.msc&#xff09;&#xff01;&#xff01; 人家叫mysql80 成了~ 就很无语

创邻科技Galaxybase银河图数据库赋能供应链高效协同

随着全球环境从乌卡时代走向巴尼时代&#xff0c;供应链管理能力与水平决定了企业的存生与盈利水平。数据是体现供应链运营状态与价值的核心要素&#xff0c;借助最新的数据处理技术最大限度挖掘数据价值&#xff0c;实现供应链可预测、可追溯、可实时响应&#xff0c;提升供应…

外卖项目day11---用户下单

OrderController代码 RestController("userOrderController") RequestMapping("/user/order") Api(tags "用户端订单相关接口") Slf4j public class OrderController {Autowiredprivate OrderService orderService;/*** 用户下单* param orders…

华硕电脑怎么录屏?3个高效实用的方法

华硕电脑作为一款备受青睐的电脑品牌&#xff0c;拥有丰富的功能和工具&#xff0c;其中包括强大的录屏功能。然而&#xff0c;对于许多华硕电脑用户来说&#xff0c;如何利用这一功能可能会感到困惑。 本文将带您探索华硕电脑的录屏功能&#xff0c;为您揭示华硕电脑怎么录屏…

算法小白的进阶之路(力扣1~5)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

Vue3-Vite-TypeScript:屏幕适配rem

① 基于rem 适配&#xff08;推荐&#xff0c;也是本篇要实现的方案&#xff09; 适用场景&#xff1a;不固定宽高比的Web应用&#xff0c;适用于绝大部分业务场景 ② 基于 scale 适配 适用场景&#xff1a;固定宽高比的Web应用&#xff0c;如大屏或者固定窗口业务应用 个人…

使用 openai 和 langchain 调用自定义工具完成提问需求

我们提供了一个函数&#xff0c;接受传入运算的字符串&#xff0c;返回运算的结果。 现在的需求是&#xff0c;我们问 gpt 模型&#xff0c;由于模型计算能力并不好&#xff0c;他要调用计算函数&#xff0c;根据计算结果&#xff0c;回答我们的问题。 使用 openai 实现&#…

资源|Python入门必看书籍,适合零基础小白,附PDF

小编为初学Python的朋友们汇总了7本零基础入门书籍&#xff0c;包括Python三剑客等&#xff0c;都是在编程届多年畅销的书籍&#xff0c;也是众多从业者的选择&#xff0c;全文详细介绍了书籍主要内容&#xff0c;有需要的宝子根据自身情况自取 需要书籍PDF的宝子评论区留言哦 …

Java每日一练_模拟面试题1(死锁)

一、死锁的条件 死锁通常发生在两个或者更多的线程相互等待对方释放资源&#xff0c;从而导致它们都无法继续执行。死锁的条件通常被描述为四个必要条件&#xff0c;也就是互斥条件、不可剥夺条件、占有并等待条件和循环等待条件。 互斥条件&#xff1a;资源不能被共享&#x…

MindMaster的学习(一)建立项目生成思维导图

MindMaster主要是用来做思维导图&#xff0c;当然也能直接生成PPT和甘特图&#xff0c;使用起来非常方便&#xff0c;简单分享下。 1.安装软件&#xff0c;这个随便搜一个破解版&#xff0c;有的就免安装&#xff0c;直接打开就能用。 2.我们新建一个导图&#xff0c;有空白模版…

认证!云起无垠成为人工智能产业发展联盟AIIA成员单位

近日&#xff0c;经人工智能产业发展联盟(AIIA)严格审核&#xff0c;云起无垠正式成为联盟成员单位。这一荣誉不仅肯定了云起无垠在技术方面的实力&#xff0c;更显示了对其未来发展的高度期待。 AIIA在国家发改委、科技部、工信部和网信办的指导下&#xff0c;由中国信息通信…