纯Java项目批处理(打包方法二)

2023-05-16

1. 创建一个普通的Java项目

在这里插入图片描述
主类

public class Demo {
    public static void main(String[] args) {
        System.out.println("hello world");
        System.out.println("你好,世界!");

        UserDao dao = new UserDao(JDBCUtil.getConn(), null);
        try {
            dao.insertData();
            System.out.println("执行dao方法成功");
        } catch (SQLException e) {
            System.out.println("执行dao方法报错!!!");
            throw new RuntimeException(e);
        }
    }
}

JDBC工具类

public class JDBCUtil {
    private static final ThreadLocal<Connection> threadLocal = new ThreadLocal<Connection>();
    private static Properties prop = new Properties();
    private static DruidDataSource dataSource = new DruidDataSource();

    private static Connection conn = null;

    static {
        //数据库连接初始化
        try{
            prop.load(JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties"));
        }catch(IOException e){
            System.out.println("数据库参数文件读取错误");
            e.printStackTrace();
        }

        dataSource.setUsername(prop.getProperty("jdbc.username"));
        dataSource.setUrl(prop.getProperty("jdbc.url"));
        dataSource.setPassword(prop.getProperty("jdbc.password"));

        try{
            dataSource.setDriverClassName(prop.getProperty("jdbc.driverClass"));
        }catch(Exception e){
            System.out.println("连接池构造异常1!");
            e.printStackTrace();
        }

        dataSource.setInitialSize(Integer.valueOf(prop.getProperty("jdbc.initialSize")));
        dataSource.setMinIdle(Integer.valueOf(prop.getProperty("jdbc.minPoolSize")));
        dataSource.setMaxActive(Integer.valueOf(prop.getProperty("jdbc.maxPoolSize")));
        dataSource.setMaxWait(Integer.valueOf(prop.getProperty("jdbc.maxWait")));
        dataSource.setTimeBetweenEvictionRunsMillis(Integer.valueOf(prop.getProperty("jdbc.timeBetweenEvictionRunsMillis")));
        dataSource.setMinEvictableIdleTimeMillis(Integer.valueOf(prop.getProperty("jdbc.minEvictableIdleTimeMillis")));

        try {
            threadLocal.set(dataSource.getConnection());
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

    }

    //获取连接
    public static Connection getConn(){
        conn = threadLocal.get();
        System.out.println("threadLocal获取连接:" + conn);

        try{
            if (conn == null || conn.isClosed()) {
                Class.forName(prop.getProperty("jdbc.driverClass")).toString();
                conn = DriverManager.getConnection(prop.getProperty("jdbc.url").toString(),
                                                   prop.getProperty("jdbc.username").toString(),
                                                   prop.getProperty("jdbc.password").toString());
                try{
                    dataSource.setDriverClassName(prop.getProperty("jdbc.driverClass"));
                }catch(Exception e){
                    System.out.println("连接池构造异常2!");
                    e.printStackTrace();
                    throw new IllegalStateException();
                }
            }
            System.out.println("conn:"+conn);
        }catch(Exception e){
            System.out.println("获取数据库连接异常!");
            e.printStackTrace();
            throw new IllegalStateException();
        }
        return conn;
    }
    
    //关闭连接
    public static void closeConn(){
        try{
            if(threadLocal.get() != null && !threadLocal.get().isClosed()){
                threadLocal.get().close();
                threadLocal.remove();
            }
        }catch(Exception e){
            System.out.println("关闭数据库连接异常!");
        }
    }
    //事务开始
    public static void beginTransaction(){
        try{
            getConn().setAutoCommit(false);
        }catch(SQLException e){
            System.out.println("开始事务异常");
            throw new IllegalStateException();
        }
    }

    //事务提交
    public static void commit(){
        try{
            getConn().commit();
        }catch(SQLException e){
            System.out.println("提交事务异常");
            throw new IllegalStateException();
        }
    }

    //事务回滚
    public static void rollback(){
        try{
            Connection conn = getConn();
            conn.setAutoCommit(false);
            conn.rollback();
            conn.setAutoCommit(true);
        }catch(SQLException e){
            System.out.println("事务回滚异常");
            throw new IllegalStateException();
        }
    }
}

JDBC操作类

public class UserDao {
    private Connection conn;
    private JSONObject json;
    PreparedStatement ps = null;
    public UserDao(Connection conn, JSONObject json) {
        this.conn = conn;
        this.json = json;
    }
    
    public void insertData() throws SQLException {

        String sql = "insert into tb_user(name,age,address) values(?,?,?)";
        ps = conn.prepareStatement(sql);
        try{
            for (int i=0; i<100; i++) {
                ps.setString(1, "张三"+i);
                ps.setInt(2, 23);
                ps.setString(3, "星颂家园24号2302室");
                ps.addBatch();
            }
            ps.executeBatch();
        }catch(SQLException e){
            System.out.println("执行插入数据异常!");
        }finally {
            if (ps != null) {
                ps.close();
            }
            if (conn != null){
                conn.close();
            }
        }
    }
}

配置文件

jdbc.driverClass=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.227.122:3306/test?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=GMT%2b8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
jdbc.username=root
jdbc.password=root
jdbc.initialSize=20
jdbc.minPoolSize=10
jdbc.maxPoolSize=100
jdbc.maxWait=60000
jdbc.timeBetweenEvictionRunsMillis=60000
jdbc.minEvictableIdleTimeMillis=300000

2. 引入依赖jar包

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 构建包设置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 构建项目jar包

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里我们用解压缩工具打开jar包看看,可以看到一个jar包里面我们需要的东西都在
在这里插入图片描述

编写shell脚本

demo3.sh

#!/bin/bash

JAVA_HOME=/usr/local/src/jdk1.8
LANG=zh_CN.UTF-8

BATCHROOT=/app/demoBatch

${JAVA_HOME}/bin/java -Xms1024M -Xmx1024M -Dfile.encoding=UTF-8 -cp ${BATCHROOT}/jamy-demo.jar com.jamy.song.Demo

测试

将刚才生成的jamy-demo.jar包上传到linux服务器上,存放位置就是shell脚本配置的位置(/app/demoBatch/)

执行shell脚本之前查询sql
在这里插入图片描述
执行shell脚本
在这里插入图片描述
执行shell脚本之后我们再来查询sql看看
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

纯Java项目批处理(打包方法二) 的相关文章

  • Linux之镜像源篇

    目录 1 概述2 本地镜像源2 1 第一种方式2 2 第二种方式 3 在线镜像源 xff08 阿里云源 xff09 1 概述 1 yum需要一个yum库 xff0c 也就是yum源 默认情况下 xff0c CentOS就有一个yum源 在
  • mysql使用指南

    目录 一 SQL简述1 SQL的概述2 SQL的优点3 SQL的分类 二 数据库的三大范式三 数据库的数据类型1 整数类型2 浮点数类型和定点数类型3 字符串类型4 字符串类型5 日期与时间类型 四 数据库 数据表的基本操作1 数据库的基本
  • linux下安装mysql8及使用

    目录 1 下载mysql软件包2 解压缩包3 移动MySQL文件4 添加用户和用户组5 创建 data mysql目录6 创建 etc my cnf文件7 安装libaio8 初始化mysql9 查看数据库密码10 重命名mysql ser
  • Linux安装nacos

    目录 前言1 安装jdk jdk1 8 43 2 安装maven maven3 2 43 3 环境生效4 启动nacos5 关闭nacos 前言 Nacos 致力于帮助您发现 配置和管理微服务 Nacos 提供了一组简单易用的特性集 xff
  • docker搭建redis主从复制

    目录 1 docker拉取镜像2 启动两台redis容器3 查看容器状态4 查看两台容器的ip地址5 进入容器 xff08 从机 xff09 6 测试主从复制效果 1 docker拉取镜像 docker pull redis 6 0 8 2
  • java代码实现部门树以及任意树结构的获取

    表结构如下 SET NAMES utf8mb4 SET FOREIGN KEY CHECKS 61 0 Table structure for my dept DROP TABLE IF EXISTS 96 my dept 96 CREAT
  • docker搭建nacos集群

    目录 前言1 启动mysql5 7容器2 配置nacos config数据库 xff08 1 xff09 创建nacos config数据库 xff08 2 xff09 创建nacos的配置表 3 拉取nacos镜像4 启动nacos容器5
  • linux搭建nacos集群

    目录 前言1 准备mysql数据库2 准备nacos压缩包 xff08 1 xff09 下载nacos xff08 2 xff09 创建集群节点目录 xff08 3 xff09 修改集群配置文件 3 复制nacos到每个节点目录4 修改se
  • docker搭建mysql8.0主备(主从复制)

    目录 前言1 拉取mysql8 0 25镜像2 启动mysql容器3 修改配置文件4 进入主容器mysql5 进入从容器mysql6 测试主从复制效果 注意事项 xff1a 前言 由于最近项目中开始要用到mysql主备模式 xff0c 所以
  • window11系统安装

    目录 前言1 系统配置要求2 安装方式Windows 11 安装助手创建 Windows 11 安装媒体下载 Windows 11 磁盘映像 ISO 3 安装 微软官网下载地址 也可用迅雷下载 其他版本下载地址 xff08 可用迅雷下载 x
  • docker搭建consul集群

    目录 官方下载地址1 拉取 Consul 镜像2 启动consul主容器 xff08 搭建数据中心dc1 xff09 3 查询dc1中主容器IP地址4 启动其他容器并加入dc15 查看数据中心dc1节点6 启动consul主容器 xff08
  • docker搭建zookeeper集群

    目录 前言1 拉取镜像2 启动容器3 查看容器IP4 修改容器配置文件4 1 修改容器 xff08 10 88 0 19 xff09 的zoo cfg文件4 2 修改容器 xff08 10 88 0 20 xff09 的zoo cfg文件4
  • imagex工具整合window11的wim镜像

    目录 前言1 提取install wim镜像文件2 用wintool查看镜像文件3 用imagex整合镜像4 查看整合后的镜像5 替换install wim文件6 效果图 前言 window11镜像微软官网昨天刚刚发布出来 xff0c 现在
  • 制作window11系统U盘启动盘

    目录 前言1 U盘分区2 复制系统文件到U盘3 编辑bcd文件4 查看系统安装盘 xff08 U盘 xff09 前言 制作系统安装U盘需要使用到bootice这个工具 下载地址 xff0c 它主要是用来给U盘分区以及编辑bcd引导文件的 这
  • macOS Big Sur系统安装

    目录 前言系统安装U盘制作系统安装过程 前言 本次是在Vmware虚拟机用U盘启动盘来安装的macOS Big Sur 10 16版本 模仿实体机安装 xff0c 首先在虚拟机的macOS10 15系统中 xff0c 进入终端执行命令制作U
  • linux下安装nginx

    前言 nginx是一款高性能的 HTTP 和反向代理的web服务器 xff0c Nginx 可以作为静态页面的 web 服务器 xff0c 同时还支持 CGI 协议的动态语言 xff0c 但是不支持 java Java 程序只能通过与 to
  • js中获取当前点击的li标签以及li标签中a标签的id

    可以使用以下代码来获取当前点击的li标签的id xff1a document querySelectorAll 39 li 39 forEach function li li addEventListener 39 click 39 fun
  • linux下nginx的使用

    目录 前言1 nginx conf配置文件2 反向代理3 负载均衡4 动静分离5 高可用配置 前言 今天来说一下nginx的具体怎么使用 xff08 nginx安装参考这里 xff09 xff0c 主要包括反向代理 负载均衡 动静分离以及高
  • docker命令详解

    docker命令集 命令说明容器生命周期管理run创建一个新容器并运行start开启一个容器并使其在后台运行stop停止一个容器restart重启一个容器kill杀掉一个容器进程rm删除容器pause暂停容器unpause恢复暂停容器cre
  • redis常见问题与解决方案

    文章目录 缓存穿透 问题描述解决方案 缓存击穿 问题描述解决方案 缓存雪崩 问题描述解决方案 缓存穿透 问题描述 key 对应的数据在数据源并不存在 xff0c 每次针对此 key 的请求从缓存获取不到 xff0c 请求都会压到数据库 xf

随机推荐

  • jar包里面文件修改

    目录 前言1 解压jar包2 编辑要修改的配置文件3 重新生成jar包4 替换 前言 之前认为只要用解压软件打开包 xff0c 把里面要修改的配置文件提取出来编辑完成后直接替换掉jar包里原来的文件就好 xff0c 但实际项目中这样做很可能
  • javaweb项目字符集设置

    目录 前言1 编辑idea的VM Options属性文件2 idea的settings设置3 idea中tomcat设置4 tomcat字符集设置 前言 今天主要来讲一下在idea开发java web项目中怎么统一字符集 xff0c 乱码在
  • maven

    目录 1 maven安装1 1 maven下载1 2 配置maven环境变量1 3 settings配置文件 2 maven使用2 1 maven项目的层级结构2 2 maven工作方式2 3 maven生命周期2 4 maven命令2 5
  • docker之网络篇

    前言 刚开始学习docker的时侯 xff0c 启动容器时并没有指定网络 xff0c 使用的是默认的bridge xff0c 也就是桥接的模式 xff0c 这种模式下启动的容器间都是可以相互通信的 xff0c 所以使用起来也是特别的爽 xf
  • 虚拟机中Linux怎么与宿主机、外网通信

    目录 前言一 NAT模式1 设置宿主机2 设置VMware虚拟机3 对虚拟机Linux进行设置4 重启linux网络服务 二 桥接模式1 cmd命令行窗口查询IP地址2 设置Linux3 重启网卡服务 三 only host模式1 设置宿主
  • docker私有镜像仓库搭建

    目录 1 拉取registry镜像2 启动registry容器3 编辑daemon json文件4 重新加载docker配置5 访问私库web页面6 推送镜像到registry私库 1 拉取registry镜像 span class tok
  • docker企业级镜像仓库harbor搭建

    目录 1 下载harbor离线安装包2 解压harbor安装包3 编辑harbor配置文件4 编辑docker配置文件5 安装docker compose6 运行安装脚本7 访问harbor网页端8 登录harbor9 推送docker镜像
  • mysql中一张表的user_id替换成对应user_name保存

    在MySQL中将一个表中的user id替换成对应的user name xff0c 需要使用join语句将两个表连接起来 xff0c 然后使用update语句更新表中的数据 具体操作如下 xff1a 假设有两个表 xff1a 表A和表B x
  • Window10系统快捷方式小箭头的去除与恢复

    复制下面的代码 新建一个文本文件 粘贴后另存为 bat文件 xff0c 然后以管理员身份打开就可以去掉桌面上图标的小箭头或恢复桌面上图标的小箭头 去掉小箭头 span class token variable reg span span c
  • SUSE系统设置

    目录 1 防火墙设置2 配置ssh服务3 修改hostname4 配置ip dns 网关5 配置镜像源6 配置apache 服务器7 安装ping命令 1 防火墙设置 span class token variable SUSE11下 xf
  • mysql8.0多实例安装

    目录 1 下载mysql二进制安装包2 解压mysql二进制安装包3 创建mysql用户和用户组4 编辑my cnf文件5 初始化mysql实例6 启动mysql实例7 登录mysql实例 1 下载mysql二进制安装包 mysql8 0
  • oracle12c数据库安装(静默安装)

    目录 前言1 安装前准备工作2 安装数据库软件3 配置监听4 创建数据库 前言 本教程是在Linux下安装oracle12c数据库 xff0c 由于在有些情况下并没有图形化安装界面 xff0c 所以这里介绍在linux下通用的安装方式 xf
  • oracle19c数据库安装(静默安装)

    目录 前言1 安装前准备工作2 安装数据库3 配置监听4 创建数据库 前言 oracle19c数据库安装相对于oracle12c安装还是有些不一样的 xff0c 所以今天再来记录一下安装过程 xff0c 本次安装仍然是基于Oracle li
  • Apollo配置中心搭建

    目录 1 下载安装包和源码包2 创建数据库和表3 启动Apollo服务端4 访问Apollo客户端 1 下载安装包和源码包 下载地址 找到要安装的版本 xff0c 我这里选择的是1 3 0版本 下载好安装包后上传至linux的 usr lo
  • linux下搭建redis集群

    目录 1 准备三台服务器2 配置服务器3 安装redis4 配置集群5 测试集群 1 准备三台服务器 这是准备的三台服务器IP地址如下 xff0c 首先需要执行ping ip地址 xff0c 检查三台服务器之间是否能够相互通信 xff0c
  • linux下搭建redis哨兵

    1 准备三台Linux服务器 span class token variable 准备以下三台服务器 span span class token number 192 168 span span class token number 227
  • linux下安装elasticsearch

    目录 1 准备一台服务器2 下载elasticsearch安装包3 安装elasticsearch 1 准备一台服务器 这里使用的时redhat8 5 红帽新版的系统 xff0c 这里给的内存大小时4G 2 下载elasticsearch安
  • 用命令语句修改mysql某字段长度

    在MySQL中修改某个字段的长度 xff0c 需要使用ALTER TABLE语句 xff0c 具体操作如下 xff1a 假设要修改表A中的字段col1的长度为50 ALTER TABLE A MODIFY col1 VARCHAR 50 以
  • maven打普通包jar包(依赖一并打入)

    1 创建一个maven项目 这里可以看到新创建的maven项目 2 在pom xml添加项目需要的依赖 span class token generics span class token punctuation lt span depen
  • 纯Java项目批处理(打包方法二)

    1 创建一个普通的Java项目 主类 span class token keyword public span span class token keyword class span span class token class name