#### 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);
}
}
## 案例:把电话号码导入到数据库

### 0.pom.xml配置
4.0.0
com.tianju
JavaWebPhone
war
1.0-SNAPSHOT
<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;