采用原生jdbc方式,maven项目连接数据库
1、数据库准备
2、构建一个原生maven项目
3、配置
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>Connection_mysql</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.37</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
4、编写代码
4.1、具体类
Province.java
package cn.she.domain;
public class Province {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
4.2、DAO层
ProvinceDao.java 接口
package cn.she.dao;
import cn.she.domain.Province;
import java.util.List;
public interface ProvinceDao {
public List<Province> findAll() throws Exception;
}
ProvinceDaoImpl.java 实现类
package cn.she.dao.impl;
import cn.she.dao.ProvinceDao;
import cn.she.domain.Province;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class ProvinceDaoImpl implements ProvinceDao {
@Override
public List<Province> findAll() throws Exception{
/**
* 从数据库中取数,须有四个属性
* 数据库驱动,连接数据库的地址,数据库用户名称,数据库密码
*/
List<Province> list = new ArrayList<>();
Connection conn = null;
PreparedStatement pst = null;
ResultSet rs = null;
try{
//1、注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2、获取连接对象
conn = DriverManager.getConnection("jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF-8","root","root");
//3、获取执行数据的对象
pst= conn.prepareCall("select * from province");
//4、执行sql,获得结果集对象
rs = pst.executeQuery();
//5、把结果集转为java的List集合
while(rs.next()){
Province p = new Province();
p.setId(rs.getInt("id"));
p.setName(rs.getString("name"));
list.add(p);
}
}catch(Exception e){
e.printStackTrace();
}finally{
conn.close();
pst.close();
rs.close();
}
return list;
}
}
4.3、测试
ProvinceTest.java
package cn.she.test;
import cn.she.dao.ProvinceDao;
import cn.she.dao.impl.ProvinceDaoImpl;
import cn.she.domain.Province;
import org.junit.Test;
import java.util.List;
public class ProvinceTest {
@Test
public void find() throws Exception {
ProvinceDao dao = new ProvinceDaoImpl();
List<Province> list = dao.findAll();
for(Province p : list){
System.out.println(p.getId()+" : "+p.getName());
}
}
}
5、问题-Error:(6, 17) java: 程序包org.junit不存在
- 测试find()方法时,出现包找不到的问题,然而在pom.xml中已经配置好jar包,本地maven仓库中也下载好了jar包,maven的Dependencies也存在此jar包。
- 最终找到原因:查看IDEA安装目录的lib文件夹,可发现存在,包含关于单元测试的jar包,因此导致在构建项目时出现两个jar包,因而报错。
- 解决:
重新导入maven
再次测试 find() 方法,测试成功