IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> maven打普通包jar包(依赖一并打入) -> 正文阅读

[Java知识库]maven打普通包jar包(依赖一并打入)

1. 创建一个maven项目

在这里插入图片描述
在这里插入图片描述
这里可以看到新创建的maven项目
在这里插入图片描述

2. 在pom.xml添加项目需要的依赖

<dependencies>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.5</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.80</version>
        </dependency>
</dependencies>

在这里插入图片描述

3. 在pom.xml中加入打包插件

<build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>com.jamy.song.job.Demo</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

在这里插入图片描述

4. 编写代码和添加配置文件

在这里插入图片描述

主类

public class Demo {

    public static void main(String[] args) {
        System.out.println("hello world");
        System.out.println("hello world");
        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 ComboPooledDataSource dataSource = new ComboPooledDataSource();
    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.setUser(prop.getProperty("jdbc.username"));
        dataSource.setJdbcUrl(prop.getProperty("jdbc.url"));
        dataSource.setPassword(prop.getProperty("jdbc.password"));*/

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

        try{
            //dataSource.setDriverClass(prop.getProperty("jdbc.driverClass"));
            dataSource.setDriverClassName(prop.getProperty("jdbc.driverClass"));
        }catch(Exception e){
            System.out.println("连接池构造异常1!");
            e.printStackTrace();
        }
        /*dataSource.setInitialPoolSize(Integer.valueOf(prop.getProperty("jdbc.initialSize")));
        dataSource.setMinPoolSize(Integer.valueOf(prop.getProperty("jdbc.minPoolSize")));
        dataSource.setMaxPoolSize(Integer.valueOf(prop.getProperty("jdbc.maxPoolSize")));
        dataSource.setMaxStatements(Integer.valueOf(prop.getProperty("jdbc.MaxStatements")));
        dataSource.setMaxIdleTime(Integer.valueOf(prop.getProperty("jdbc.MaxIdleTime")));*/

        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.setDriverClass(prop.getProperty("jdbc.driverClass"));
                    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, "人民路120号");
                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.MaxStatements=5
#jdbc.MaxIdleTime=600
jdbc.maxWait=60000
jdbc.timeBetweenEvictionRunsMillis=60000
jdbc.minEvictableIdleTimeMillis=300000

5. 打jar包

在这里插入图片描述
在这里插入图片描述
这里用解压缩文件打开jar包看到,依赖和业务类都有,说明我们打的jar包是完整的
在这里插入图片描述
这的jar包名字太长了,这里我把它改成jamy.jar,然后把他上传到linux服务器上(要放在shell脚本里写的位置,否则执行时找不到),我们通过shell脚本来执行下看看,脚本内容如下:

#!/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.jar com.jamy.song.job.Demo

在这里插入图片描述
现在来看下执行效果(执行前jdk要配置好,我这里配置的时jdk1.8),执行sh demo2.sh这个命令即可
在这里插入图片描述
注意:这种打jar包非常适合批处理业务,如果是纯java项目可以参考下面两种方法:
纯java项目打包方法一
纯java项目打包方法二

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-26 15:14:28  更:2022-05-26 15:14:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:53:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码