java JDBCUtils 使用静态代码块连接数据库 全程值保持一次连接

\src\com\data\entity\JDBCUtils.java

使用静态代码块连接数据库  全程值保持一次连接

package com.data.entity;import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;import javax.sql.DataSource;public class JDBCUtils {
//public static DataSource dataSource=null;
public static JdbcTemplate jdbcTemplate=null;
static {  //静态代码块//方法1
//    String url = "jdbc:mysql://localhost:3306/xx?useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";
//    String username = "root";
//    String password = "1234567";
//    DataSource dataSource = new DriverManagerDataSource(url,username,password);
//    jdbcTemplate = new JdbcTemplate(dataSource);//方法2Mysql_Template_conn conn=new Mysql_Template_conn("localhost","root","123456","data","3306","UTF-8");conn.getConnection();  // 建立连接jdbcTemplate = new JdbcTemplate(conn.conn);}public static JdbcTemplate newJdbcTemplate(){return jdbcTemplate;}public static JdbcTemplate newJdbcTemplate2(){return jdbcTemplate;}}

\src\com\data\entity\Mysql_conn.java

package com.data.entity;import java.sql.*;
/*
JDBC封装增删改查
*QQ 7650371
* */
public class Mysql_conn {private Connection con; // 声明Connection对象private Statement ps;  //PreparedStatementprivate ResultSet rs;public boolean link=false;  // staticpublic String HOSTNAME=""; //服务器public String USERNAME=""; //数据库登录名public  String PASSWORD=""; //密码public String DATABASE=""; //数据库名public String HOSTPORT=""; //端口public String CHARSET=""; //编码public Mysql_conn(String HOSTNAME, String USERNAME, String PASSWORD, String DATABASE) {this.HOSTNAME = HOSTNAME;this.USERNAME = USERNAME;this.PASSWORD = PASSWORD;this.DATABASE = DATABASE;}public Mysql_conn(String HOSTNAME, String USERNAME, String PASSWORD, String DATABASE, String HOSTPORT) {this.HOSTNAME = HOSTNAME;this.USERNAME = USERNAME;this.PASSWORD = PASSWORD;this.DATABASE = DATABASE;this.HOSTPORT = HOSTPORT;}public Mysql_conn(String HOSTNAME, String USERNAME, String PASSWORD, String DATABASE, String HOSTPORT, String CHARSET) {this.HOSTNAME = HOSTNAME;this.USERNAME = USERNAME;this.PASSWORD = PASSWORD;this.DATABASE = DATABASE;this.HOSTPORT = HOSTPORT;this.CHARSET = CHARSET;}public Connection getConnection() { // 建立返回值为Connection的方法
//        HOSTNAME = "localhost";  //服务器
//        USERNAME = "root";//数据库登录名
//        PASSWORD = "218484";//密码
//        DATABASE = "data";//数据库名if(HOSTPORT==""){HOSTPORT = "3306";} //端口if(CHARSET==""){CHARSET = "UTF-8";} //编码try { // 加载数据库驱动类Class.forName("com.mysql.cj.jdbc.Driver");System.out.println("数据库驱动加载成功");try { // 通过访问数据库的URL获取数据库连接对象
//                jdbc:mysql	协议
//                localhost:3306	localhost是本机地址127.0.0.1 , 3306 端口名,是mysql开启的服务,如果上述(配置一)的mysql服务未开启,会报 com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure 的异常
//                databaseName	数据库的名字,如果没有此数据库会报SQLSyntaxErrorException: Unknown database 'xxx',的异常
//                useSSL=false	在web领域要用到,指是否开启ssl安全连接,但MySQL 8.0 以上版本不需要建立 SSL 连接,需要关闭。
//                serverTimezone=UTC	设置时区
//                characterEncoding=UTF-8	设置编码格式,不设置很可能造成乱码。//"jdbc:mysql://localhost:3306/xx2304?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai"String jdbc="jdbc:mysql://"+HOSTNAME+":"+HOSTPORT+"/"+DATABASE+"?useSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding="+CHARSET;this.con = DriverManager.getConnection(jdbc, USERNAME, PASSWORD);this.ps = this.con.createStatement();System.out.println("数据库连接成功");this.link=true;} catch (SQLException e) {e.printStackTrace();this.link=false;}} catch (ClassNotFoundException e) {e.printStackTrace();this.link=false;}return con; // 按方法要求返回一个Connection对象}public  void close(){try {if(this.con != null) {this.con.close();}} catch (Exception e) {System.out.println(e.toString());}try {if(this.ps != null) {this.ps.close();}} catch (Exception e) {System.out.println(e.toString());}try {if(this.rs != null) {this.rs.close();}} catch (Exception e) {System.out.println(e.toString());}}//    execute	可以增删改查
//    executeUpdate	可以增删改,但是不能查询
//    executeQuery	只可以查询public void executeQuery(String sql){  //只可以查询try {this.rs = this.ps.executeQuery("SELECT *FROM jobs");while(this.rs.next()) {String title=this.rs.getString("job_title");System.out.println("====="+title);//Integer XX=this.rs.getInt();// long xx=this.rs.getLong();
//                double xx=this.rs.getDouble();
//                String xx=this.rs.getString();
//                Date xx=this.rs.getDate();}//Statement statement = this.con.createStatement();
//        ResultSet resultSet = statement.executeQuery("SELECT *FROM jobs");
//        while(resultSet.next()){
//            System.out.println("====="+resultSet.getString("job_title"));
//        }
//        resultSet.close();
//        //statement.close();} catch (Exception e) {System.out.println(e.toString());}}public int executeUpdate(String sql){   //可以增删改,但是不能查询try {
//    String insertData = "INSERT into jobs(job_id,job_title) values('xccxxx','ffccfffffff')";//Statement statement = this.con.createStatement();//statement.close();return this.ps.executeUpdate(sql);  //添加} catch (Exception e) {System.out.println(e.toString());return 0;}}public boolean execute(String sql) {   //可以增删改查try {return this.ps.execute(sql);  //添加} catch (Exception e) {System.out.println(e.toString());return false;}}}

\src\com\user\dao\UserDao.java

package com.user.dao;import com.data.entity.User;import java.util.List;public interface UserDao {/*** 添加用户* @param user 用户类* @return 影响行*/public int insertUser(User user);/*** 删除数据* @param id 删除ID* @return 影响行*/public int deleteUser(int id);/*** 修改数据* @param user 用户类* @return 影响行*/public int updateUserId(User user);/*** 查询用户* @param id ID* @return 用户数组*/public List<User> selectUserId(int id);/*** 查询所有* @return*/public List<User> selectUser();
}

\src\com\user\dao\impl\Userimpl.java

package com.user.dao.impl;import com.data.entity.JDBCUtils;
import com.data.entity.Mysql_Template_conn;
import com.data.entity.User;
import com.user.dao.UserDao;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;import java.util.List;public class Userimpl implements UserDao {@Overridepublic int insertUser(User user) {String  insertDataxx = "INSERT into user(user_name,password) values(?,?)";return JDBCUtils.newJdbcTemplate().update(insertDataxx,user.getUserName(),user.getPassword());    //动态参数}@Overridepublic int deleteUser(int id) {String  insertDataxx = "DELETE FROM user WHERE user_id=?";return JDBCUtils.newJdbcTemplate().update(insertDataxx,id);    //动态参数}@Overridepublic int updateUserId(User user) {String  insertDataxx = "update user set user_name=?,password=?  where user_id=?";return JDBCUtils.newJdbcTemplate().update(insertDataxx,user.getUserName(),user.getPassword(),user.getUserId());    //动态参数}@Overridepublic List<User> selectUserId(int id) {return JDBCUtils.newJdbcTemplate().query("SELECT * FROM user where user_id=?", new BeanPropertyRowMapper<>(User.class),id);}@Overridepublic List<User> selectUser() {return JDBCUtils.newJdbcTemplate().query("SELECT * FROM user", new BeanPropertyRowMapper<>(User.class));}
}

\src\text11.java

import com.data.entity.User;
import com.user.dao.UserDao;
import com.user.dao.impl.Userimpl;public class text11 {public static void main(String[] args) {UserDao add=new Userimpl();System.out.println(add.insertUser(new User(null,"abc","123465")));System.out.println(add.deleteUser(2));add.updateUserId(new User(1,"abc111","111111"));add.selectUserId(1).forEach(ss->{System.out.println(ss);});add.selectUser().forEach(ff->{System.out.println(ff);});}
}

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

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

相关文章

正点原子linux应用编程——入门篇2

系统信息与系统资源 本章重点学习如何通过Linux系统调用或C库函数获取系统信息&#xff0c;譬如获取系统时间、日期 以及设置系统时间、日期等&#xff1b;除此之外&#xff0c;还会学习Linux系统下的/proc虚拟文件系统&#xff0c;包括/proc 文件系统是什么以及如何从/proc文…

【APUE】进程间通信

目录 一、管道 1.1 匿名管道 1.2 命名管道 二、XSI IPC 2.1 概述 2.2 消息队列 2.2.1 msgget 2.2.2 msgsnd 2.2.3 msgrcv 2.2.4 msgctl 2.2.5 代码示例 2.3 信号量数组 2.3.1 semget 2.3.2 semop 2.3.3 semctl 2.3.4 代码示例 2.3 共享内存 2.3.1 shmget…

selenium已知一个元素定位同级别的另一个元素

1.需求与实际情况 看下图来举例 &#xff08;1&#xff09;需求 想点击test22&#xff08;即序号-第9行&#xff09;这一行中右边的“复制”这一按钮 &#xff08;2&#xff09;实际情况 只能通过id或者class定位到文件名这一列的元素&#xff0c;而操作这一列的元素是不…

Kubernetes之kubeadm日志展示篇—fiendweb日志展示平台部署

fiendweb 部署 1.1 下载镜像 docker pull adockero/finderweb1.2 启动容器 编写容器启动脚本 # cat finderweb.sh #!/bin/bash docker run -itd -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime -v /opt/logs/gfs:/data --networkhost --name finderweb…

零基础可以学编程吗,不懂英语怎么学编程,中文编程工具实例

零基础可以学编程吗&#xff0c;不懂英语怎么学编程&#xff0c;中文编程工具实例 上图是中文编程工具界面、标尺实例。 给大家分享一款中文编程工具&#xff0c;零基础轻松学编程&#xff0c;不需英语基础&#xff0c;编程工具可下载。 这款工具不但可以连接部分硬件&#x…

剑指 Offer(第2版)面试题 6:从尾到头打印链表

剑指 Offer&#xff08;第2版&#xff09;面试题 6&#xff1a;从尾到头打印链表 剑指 Offer&#xff08;第2版&#xff09;面试题 6&#xff1a;从尾到头打印链表解法1&#xff1a;遍历解法2&#xff1a;递归解法3&#xff1a;栈 剑指 Offer&#xff08;第2版&#xff09;面试…

基于单片机体温心率脉搏检测仪系统设计

**单片机设计介绍&#xff0c; 基于单片机体温心率脉搏检测仪系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机体温心率脉搏检测仪是一种用于检测人体体温、心率和脉搏等基本生理指标的医疗设备。下面是一个简要…

QT 界面切换

先新建一个Widget工程 ui界面设置如下 在添加一个QT设计师界面类 右键点击添加 第二个UI界面设置如下 代码 链接&#xff1a;https://pan.baidu.com/s/1ovDIG2pno9mJ7mMFh2tq3Q 提取码&#xff1a;6q3m –来自百度网盘超级会员V2的分享

Java八股文面试全套真题【含答案】- Linux篇

以下是一些关于Linux语言的经典面试题以及它们的答案&#xff1a; 什么是Linux操作系统&#xff1f; 答案&#xff1a;Linux是一种开源的类Unix操作系统&#xff0c;主要用于服务器和嵌入式设备。它是由Linus Torvalds和众多社区开发者共同开发和维护的。什么是Linux内核&…

python+pytest接口自动化(2)-HTTP协议基础

HTTP协议简介 HTTP 即 HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09;&#xff0c;是互联网上应用最为广泛的一种网络协议。所有的 WWW 文件都必须遵守这个标准。 设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。HTTP 协议在 OSI 模型…

1_Scene渲染流程分析

参考: Cesium原理篇&#xff1a;6 Render模块(4: FBO) Scene渲染流程分析 // Scene.js function render(scene, time) {//...// 1) 渲染到哪里?// updateAndExecuteCommands -> executeCommandsInViewport -> updateAndClearFramebuffersupdateAndClearFramebuffers()…

计算机体系结构----循环展开(Loop Unrolling)

循环展开&#xff08;loop unrolling&#xff09;是一种编译器优化技术&#xff0c;它通过减少循环的迭代次数&#xff0c;来提高程序的执行速度。循环展开的原理是&#xff0c;将循环体中的语句复制多份&#xff0c;每次迭代执行更多的语句&#xff0c;从而减少循环控制语句&a…

vue3 + element-plus + ts el-table封装

vue3 element-plus ts el-table封装 博客参考https://blog.csdn.net/weixin_45291937/article/details/125523244 1. 文件位置&#xff08;根据自己的需求&#xff09; 2. 在 custom 文件夹下面 创建 mytable 文件夹 3. 直接上代码 // index.vue<template><div …

总结Python中with方法有哪些作用

with 语句在 Python 中有多种用途&#xff0c;主要用于创建上下文环境&#xff0c;在进入和离开代码块时执行特定的操作。最常见的用途之一是在文件处理中自动关闭文件&#xff0c;但它还可以用于其他需要资源管理的情况。 1. 文件操作 在文件操作中&#xff0c;使用 with 语句…

Python实现WOA智能鲸鱼优化算法优化XGBoost回归模型(XGBRegressor算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯大学的Mirjalili 等提…

CloudCompare简单开发

一、概述 CloudCompare如何进行二次开发&#xff1f;_cloudcompare 二次开发-CSDN博客 开发一个功能&#xff0c;在原始CC的基础上添加一个拓展功能&#xff0c;如下&#xff1a; 二、功能开发 1、修改MainWindow.UI 重点是&#xff1a;要编译&#xff0c;不然在mainwindow.…

JAVA进阶之路JVM-2:类加载机制,类的生命周期,类加载过程,类加载时机,类加载器,双亲委派模型,对象创建过程

JVM类加载机制 类加载 ​ 在JVM虚拟机实现规范中&#xff0c;通过ClassLoader类加载把*.class字节码文件&#xff08;文件流&#xff09;加载到内存&#xff0c;并对字节码文件内容进行验证&#xff0c;准备&#xff0c;解析和初始化&#xff0c;最终形成可以被虚拟机直接使用…

点盾云出现“操作失败,错误码1002”如何解决?

在使用点盾云学习看课时&#xff0c;老师会先将视频或者是在线播放链接发给我们&#xff0c;我们通过下载文件的方式或通过直接在线点播的形式来观看&#xff0c;那么在操作的过程中&#xff0c;有时候我们会遇到一些问题&#xff0c;今天以百度网盘中下载的视频文件为例&#…

浙江启用无人机巡山护林模式,火灾扑救效率高

为了保护天然的森林资源&#xff0c;浙江当地林业部门引入了一种创新技术&#xff1a;林业无人机。这些天空中的守护者正在重新定义森林防火和护林工作的方式。 当下正值天气干燥的季节&#xff0c;这些无人机开始了它们的首次大规模任务。它们在指定的林区内自主巡逻&#xff…

B树与B+树的对比

B树&#xff1a; m阶B树的核心特性&#xff1a; 树中每个节点至多有m棵子树&#xff0c;即至多含有m-1个关键字根节点的子树数属于[2, m]&#xff0c;关键字数属于[1, m-1]&#xff0c;其他节点的子树数属于 [ ⌈ m 2 ⌉ , m ] [\lceil \frac{m}{2}\rceil, m] [⌈2m​⌉,m]&am…