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

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
img

正文

// 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 userRowMapper = new BeanPropertyRowMapper<>(Emp.class);
List empList = jdbcTemplate.query(“SELECT * FROM emp_tab”, userRowMapper);

根据id查单个的方式:

public Phone findById(Integer id) {
List 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 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 userRowMapper = new BeanPropertyRowMapper<>(Emp.class);
List empList = jdbcTemplate.query(“SELECT * FROM emp_tab”, userRowMapper);
System.out.println(“-----------------”);
System.out.println(empList);

}
}

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

在这里插入图片描述

0.pom.xml配置


4.0.0
com.tianju
JavaWebPhone
war
1.0-SNAPSHOT

javax.servlet javax.servlet-api 4.0.1 provided org.projectlombok lombok 1.18.22 commons-io commons-io 2.5 com.alibaba druid 1.2.16 mysql mysql-connector-java 8.0.20 org.springframework spring-jdbc 5.2.22.RELEASE junit junit 3.8.1 test junit junit RELEASE compile

web.xml文件

<?xml version="1.0" encoding="UTF-8"?>


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 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 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;
static {
String driverClassname = “com.mysql.cj.jdbc.Driver”;
String ip = “127.0.0.1:3306/javaweb06”;
// 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”;
String username = “root”;
String password = “123”;
dataSource = new DruidDataSource();
dataSource.setDriverClassName(driverClassname);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
}

/**
*
* @return 返回一个JdbcTemplate对象
*/
public static JdbcTemplate getJdbcTemplate(){
return new JdbcTemplate(dataSource);
}

}

3.Dao层的代码【查单个/多个,统计数量】

接口部分

package com.tianju.dao;

import com.tianju.entity.Phone;

import java.util.List;

public interface IPhoneDao {

// 添加一条数据
/**
* 增加一条数据
* @param phone 增加的实体类
* @return 返回影响的行数
*/
Integer add(Phone phone);

// 修改
/**
* 修改
* @param phone 修改的实体类,根据该实体类的id进行定位和修改
* @return 影响行数
*/
Integer update(Phone phone);

// 根据id删除一条数据
/**
* 根据id删除一条数据
* @param id 删除的索引id
* @return 影响行数
*/
Integer deleteById(Integer id);

// 查询所有
/**
* 查询数据库中所有的数据
* @return 查询到的list
*/
List queryAll();

// 根据id查询
Phone findById(Integer id);

// 根据mobile_number进行查询
/**
* 根据号码查询归属地等信息
* @param mobileNumber 查找的电话number
* @return 返回查找的
*/
Phone selectByMobileNumber(String mobileNumber);

// 查询数据条数
/**
* 查找所有的行数
* @return 总的行数
*/
Integer countDataLines();

}

实现类

package com.tianju.dao.impl;

import com.tianju.dao.IPhoneDao;
import com.tianju.entity.Phone;
import com.tianju.util.DBUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

import java.util.List;

public class PhoneDaoImpl implements IPhoneDao {
private JdbcTemplate db;
private RowMapper rowMapper;

public PhoneDaoImpl() {
db = DBUtils.getJdbcTemplate();
rowMapper = new BeanPropertyRowMapper<>(Phone.class);
}

@Override
public Integer add(Phone phone) {
return db.update("INSERT INTO t_phone(id,mobile_number,mobile_area,mobile_type,create_time,update_time) VALUES " +
“(NULL,?,?,?,now(),now())”,phone.getMobileNumber(),phone.getMobileArea(),phone.getMobileType());
}

@Override
public Integer update(Phone phone) {
return db.update(“UPDATE t_phone SET mobile_number=?,mobile_area=?,mobile_type=?,update_time=now() WHERE id=?”,
phone.getMobileNumber(),phone.getMobileArea(),phone.getMobileType(),phone.getId());
}

@Override
public Integer deleteById(Integer id) {
return db.update(“DELETE FROM t_phone WHERE id = ?”, id);
}

@Override
public List queryAll() {
return db.query(“SELECT * FROM t_phone”, rowMapper);
}

@Override
public Phone findById(Integer id) {
List 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;
}

@Override
public Phone selectByMobileNumber(String mobileNumber) {
List find = db.query(“SELECT * FROM t_phone WHERE mobile_number = ?”, rowMapper,mobileNumber);
if (find.size()>0){
return find.get(0);
}
System.out.println(“Not found”);
return null;
}

@Override
public Integer countDataLines() {
// 要用.queryForObject方法
return db.queryForObject(“SELECT COUNT(*) FROM t_phone”, Integer.class);
}
}

4.实体类

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

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
img

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

@Override
public Integer countDataLines() {
// 要用.queryForObject方法
return db.queryForObject(“SELECT COUNT(*) FROM t_phone”, Integer.class);
}
}

4.实体类

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

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-B81T47TG-1713320783432)]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值