网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**