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


#### 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 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 userRowMapper = new BeanPropertyRowMapper<>(Emp.class);
List 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);


}

}


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


![在这里插入图片描述](https://img-blog.csdnimg.cn/0d349dd6758d45658303071a25b6cd8a.png)


### 0.pom.xml配置




4.0.0
com.tianju
JavaWebPhone
war
1.0-SNAPSHOT

javax.servlet javax.servlet-api 4.0.1 provided
<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>1.18.22</version>
</dependency>

<dependency>
  <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>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.20</version>
</dependency>

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
  <version>5.2.22.RELEASE</version>
</dependency>

<dependency>
  <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>

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<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;
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<Phone> queryAll() {
    return db.query("SELECT \* FROM t\_phone", rowMapper);
}

@Override
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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值