Java基础(maven)——maven新建项目 & 常用IO工具 & Durid数据库工具 & 案例_ioutils maven(2)

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

引出

如何用maven新建项目,用maven建项目的优势,常用的io工具和durid工具

在这里插入图片描述


用Maven建项目

0.Maven配置方式

参考博客 :
【配置】Maven的配置 & Tomcat的配置 & 在IDEA中新建web项目

在这里插入图片描述

1.io流的工具IOUtils/FileUtils

1)可以读文件、按照行读、读网页等;
package com.tianju.io;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;

import java.io.\*;
import java.net.URL;
import java.util.List;

public class ReadFileDemo1 {
    public static void main(String[] args) throws IOException {
        // IOUtils 进行读取
        /\*\*
 \* IOUtils.readLines 读取一个文件,把文件中的每一行放在一个List<String>中
 \* 两个参数: 1.要读取文件的输入流 FileInputStream;
 \* 2.编码形式,通常为"UTF-8"
 \*/
        List<String> stringList = IOUtils.readLines(new FileInputStream("D:\\Myprogram\\jf\_map\_utf8.txt"),
                "UTF-8");

        stringList.forEach(System.out::println);

        // 读文件
        List<String> in = FileUtils.readLines(new File("D:\\Myprogram\\jf\_map\_utf8.txt"),"UTF-8");
        System.out.println(in);

        // 读网页
        URL url = new URL("https://www.baidu.com");
        InputStream inputStream = url.openStream();
        List<String> stringList1 = IOUtils.readLines(inputStream,"UTF-8");
        stringList1.forEach(System.out::println);


    }
}


2)配合hasmap进行简体繁体转换
package com.tianju.io;

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class TransferDemo1 {
    public static void main(String[] args) throws IOException {
        String filePath = "D:\\Myprogram\\jf\_map\_utf8.txt";
        List<String> in = FileUtils.readLines(new File(filePath),"UTF-8");
        // 把list 转成 map,高效查找
        Map<String,String> map = new HashMap<>(1000);

        for (String i:in){
            String[] iSplit = i.split(":");
            map.put(iSplit[0],iSplit[1]);
        }

        // 转换单个字的方法
        System.out.println(map);
        String inStr = "发";
        System.out.println(map.get(inStr));

        // 转换一句话的方法
        String inWord = "我家住在东北6564呵呵,恭喜发财";
        StringBuilder outWord = new StringBuilder();
        char[] chars = inWord.toCharArray();
        for (char c:chars){
            // 如果是中文字符,则进行繁体字的转换
            if (Character.UnicodeScript.of(c)==Character.UnicodeScript.HAN){
                if (map.get(c+"")!=null){
                    outWord.append(map.get(c+""));
                }else {
                    outWord.append(c);
                }
            }else {
                // 否则直接加加进去
                outWord.append(c);
            }
        }
        System.out.println(outWord);


    }
}


2.durid数据库连接工具

1)创建连接,durid进行连接管理

(1)用durid去连接数据库,创建多个connection;

(2)要用到connection的时候,找durid要;

连接数据库的两种url写法:

 String url = "jdbc:mysql://127.0.0.1:3306/javaweb06?useUnicode=true&characterEncoding=UTF-8&userSSL=false&serverTimezone=GMT%2B8";
String url = "jdbc:mysql://"+ip+"?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";

package com.tianju.dataSource;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidPooledConnection;

import java.sql.SQLException;

/\*\*
 \* 1.用 druid 去连接数据库,创建多个connection
 \* 2.要用到connection 的时候,找druid要
 \*/
public class DruidDemo {
    public static void main(String[] args) throws SQLException {
        String driverClassname = "com.mysql.cj.jdbc.Driver";
        String ip = "192.168.111.128:3306/rec\_db";
        String url = "jdbc:mysql://"+ip+"?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";
        String username = "root";
        String password = "123";

        // 1.创建Druid 的连接对象,会一次性创建10个连接
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverClassname);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        dataSource.setMaxActive(10); // 让数据库一次性建立10个连接

        // 2.使用一个连接,问druid要一个连接
        DruidPooledConnection connection = dataSource.getConnection();
        System.out.println(connection);

    }
}


2)查询的方式queryForObject、query,queryForRowSet

推荐使用queryForObject、query

RowMapper<Emp> userRowMapper = new BeanPropertyRowMapper<>(Emp.class);
List<Emp> empList = jdbcTemplate.query("SELECT \* FROM emp\_tab", userRowMapper);

根据id查单个的方式:

    public Phone findById(Integer id) {
        List<Phone> find = db.query("SELECT \* FROM t\_phone WHERE id = ?", rowMapper,id);
        if (find.size()>0){
            return find.get(0);
        }
        System.out.println("Not found");
        return null;
    }

package com.tianju.dataSource;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidPooledConnection;
import com.tianju.entity.Emp;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.support.rowset.SqlRowSet;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class JdbcTmpelateDemo {
    public static void main(String[] args) throws SQLException {
        String driverClassname = "com.mysql.cj.jdbc.Driver";
        String ip = "192.168.111.128:3306/emp\_db";
        String url = "jdbc:mysql://"+ip+"?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";
        String username = "root";
        String password = "123";

        // 1.创建Druid 的连接对象,会一次性创建10个连接
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverClassname);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        dataSource.setMaxActive(10); // 让数据库一次性建立10个连接

        // 2.jdbcTemplate, 操作数据库的工具类,类似于DBUtils
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

        // 增删改
        jdbcTemplate.update("INSERT INTO emp\_tab(emp\_name, emp\_gender) VALUES (?,?)","张三","女");

        // 查询,不建议用此方法
       SqlRowSet rs  = jdbcTemplate.queryForRowSet("SELECT \* FROM emp\_tab");
       List<Emp> list = new ArrayList<>(10);
       while (rs.next()){
           Emp emp = new Emp(
                   rs.getInt("id"),
                   rs.getString("name"),
                   rs.getString("gender"),
                   rs.getInt("age"),
                   rs.getDouble("sal"),
                   rs.getString("job")
           );
           list.add(emp);
       }
       System.out.println(list);

       // 查询的第二种方式,这种方式更好
        RowMapper<Emp> userRowMapper = new BeanPropertyRowMapper<>(Emp.class);
        List<Emp> empList = jdbcTemplate.query("SELECT \* FROM emp\_tab", userRowMapper);
        System.out.println("-----------------");
        System.out.println(empList);


    }
}


案例:把电话号码导入到数据库

在这里插入图片描述

0.pom.xml配置

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4\_0\_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.tianju</groupId>
  <artifactId>JavaWebPhone</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
      <!-- 这个jar包,不参与到放到Tomcat运行中,但是开发的时候要用-->
      <scope>provided</scope>
    </dependency>

    <dependency>
<!-- lombok-->
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.22</version>
    </dependency>

    <dependency>
<!-- io流-->
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.5</version>
    </dependency>

    <dependency>
<!-- 阿里的数据库管理工具-->
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.2.16</version>
    </dependency>

    <dependency>
<!-- sql连接工具-->
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.20</version>
    </dependency>

    <dependency>
<!-- jdbc连接数据库工具-->
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.2.22.RELEASE</version>
    </dependency>

    <dependency>
<!-- junit单元测试工具-->
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>RELEASE</version>
          <scope>compile</scope>
      </dependency>

  </dependencies>

</project>


web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app\_4\_0.xsd"
         version="4.0">
</web-app>


1.读取文件存到数据库

package com.tianju.test;

import com.sun.org.apache.bcel.internal.generic.NEW;
import com.tianju.util.DBUtils;
import org.apache.commons.io.FileUtils;
import org.junit.Test;
import org.springframework.jdbc.core.JdbcTemplate;

import java.io.File;
import java.io.IOException;
import java.util.List;

public class SaveToSQLDemo1 {
    public static void main(String[] args) throws IOException {
        JdbcTemplate db = DBUtils.getJdbcTemplate();
        String filePath = "D:\\Myprogram\\files\\phone1.csv";
        List<String> stringList = FileUtils.readLines(new File(filePath),"UTF-8");
        for (int i =1;i<stringList.size();i++){
            String[] sSplit = stringList.get(i).split(",");
            System.out.println(sSplit[1] + sSplit[2] + sSplit[3]);
            db.update("INSERT INTO t\_phone(mobile\_number,mobile\_area,mobile\_type,create\_time,update\_time) " +
                    "VALUES (?,?,?,now(),now())",sSplit[1],sSplit[2],sSplit[3]);
        }
    }

    @Test // 加入test注解,让普通方法变成可运行
    public void insertInSQL() throws IOException {
        JdbcTemplate db = DBUtils.getJdbcTemplate();
        String filePath = "D:\\Myprogram\\files\\phone1.csv";
        List<String> stringList = FileUtils.readLines(new File(filePath),"UTF-8");
        for (int i =1;i<stringList.size();i++){
            String[] sSplit = stringList.get(i).split(",");
            System.out.println(sSplit[1] + sSplit[2] + sSplit[3]);
            db.update("INSERT INTO t\_phone(mobile\_number,mobile\_area,mobile\_type,create\_time,update\_time) " +
                    "VALUES (?,?,?,now(),now())",sSplit[1],sSplit[2],sSplit[3]);
        }

    }
}


2.DBUtils

package com.tianju.util;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.jdbc.core.JdbcTemplate;

/\*\*
 \* 1.连接数据库--durid
 \* 2.提供jdbcTemplate
 \*/
public class DBUtils {
    private static DruidDataSource dataSource =null;


![img](https://img-blog.csdnimg.cn/img_convert/5449eae1c2a8f2777213b4faf18c7e68.png)
![img](https://img-blog.csdnimg.cn/img_convert/749bffe82b1d8ad220b69581eaef1dcd.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

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

/\*\*
 \* 1.连接数据库--durid
 \* 2.提供jdbcTemplate
 \*/
public class DBUtils {
    private static DruidDataSource dataSource =null;


[外链图片转存中...(img-VVRGVc7y-1715367542213)]
[外链图片转存中...(img-GWeqkGGj-1715367542213)]

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

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

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值