MySQL数据库操作(idea)
需要的包
https://pan.baidu.com/s/10FenEdrOsiNaBXEl5j1zoA
提取码:puow
下面是spring仓库地址,可进去自行搜索下载:https://repo.spring.io/webapp/#/home
整体结构
这里我先把jar包放在web目录下,出现较多问题,建议放在与src源码同级的目录
这里建议右键点击lib
文件夹,add as library…->project library->ok
配置文件
druid.properties
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/student?useSSL=false&&allowPublicKeyRetrieval=true
username=root
password=
initialSize=5
maxActive=10
maxWait=3000
maxIdle=8
minIdle=3
第二行(student)是你的数据库名字,改成自己的;第四行数据库密码填你的数据库密码。
不使用配置文件操作(直接重新建立连接)
上面环境配置好了,下面是简单操作代码,直接在src文件夹里新建class,复制进去就可以运行。
jdbc1.java
package cn;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class jdbc1 {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection coon= DriverManager.getConnection("jdbc:mysql://localhost:3306/cainiao","root","你的密码");
String sql="update user set age=30 where id=1";
Statement stst=coon.createStatement();
int count=stst.executeUpdate(sql);
System.out.println(count);
stst.close();
coon.close();
}
}
成功运行,打印输出1
当然,这个忽略就好,对理解下面没啥帮助。
操作数据库(使用配置文件)
druid.java
package cn;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;
public class druid {
public static void main(String[] args) throws Exception {
//导入包
//定义配置文件
Properties pro=new Properties();
InputStream is= druid.class.getClassLoader().getResourceAsStream("druid.properties");
pro.load(is);
PreparedStatement pstmt=null;
//获取连接对象
DataSource ds= DruidDataSourceFactory.createDataSource(pro);
//获取链接
Connection conn= ds.getConnection();
System.out.println(conn);
/**
* 插入
*/
String sql="insert into shili values(null,?,?)";
// String sql="insert into shili(name,salary) values(?,?)";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,"jdbc");
pstmt.setString(2,"4321");
int count= pstmt.executeUpdate();
System.out.println(count+"插入成功");
/**
* 修改
*/
String xsql="update shili set salary=? where id=?";
pstmt=conn.prepareStatement(xsql);
pstmt.setString(1,"10000");
pstmt.setString(2,"2");
int countx= pstmt.executeUpdate();
System.out.println(countx+"修改成功");
/**
* 删除
*/
String ssql="delete from shili where id=?";
pstmt=conn.prepareStatement(ssql);
pstmt.setInt(1,3);
int counts= pstmt.executeUpdate();
System.out.println(counts+"删除成功");
/**
* 查询
*/
String csql="select * from shili";
// String sql="select * from shili where id=?";
Statement smt = conn.createStatement();
ResultSet rs = smt.executeQuery(csql);
while (rs.next()) {
int id= rs.getInt("id");
int salary = rs.getInt("salary");
String name = rs.getString("name");
System.out.println(id+" "+salary+" "+name);
}
System.out.println("查询成功");
}
}
直接在src文件夹里新建class,复制进去就可以运行。
运行结果:
我的数据库截图:
当然,这样会存在一个问题,当项目大了,多个操作数据库的文件,每个文件里都重新创建一个连接,那还是程序员吗?
所以,听说过utils包吧,把上面代码里面的数据库创建连接及关闭连接提取出来放在工具包里,就这么简单。
使用工具类加配置文件操作
jdbcutils.java
package cn;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/*
连接池工具类
*/
public class jdbcutils {
private static DataSource ds;
static{
Properties pro=new Properties();
try {
//加载配置文件
pro.load(jdbcutils.class.getClassLoader().getResourceAsStream("druid.properties"));
//获取datasource
ds= DruidDataSourceFactory.createDataSource(pro);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
/*
获取连接
*/
public static Connection getconnection() throws SQLException {
return ds.getConnection();
}
/*
释放资源
*/
public static void close(Statement stmt, Connection conn){
close(null,stmt,conn);
}
public static void close(ResultSet rs, Statement stmt, Connection conn){
if(rs!=null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(stmt!=null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/*
获取连接池
*/
public static DataSource getdatasource(){
return ds;
}
}
shili.java
package cn;
public class shili {
private Integer id;
private static String name;
private Integer salary;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public static String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getSalary() {
return salary;
}
public void setSalary(Integer salary) {
this.salary = salary;
}
@Override
public String toString() {
return "shili{" +
"id=" + id +
", name='" + name + '\'' +
", salary=" + salary +
'}';
}
}
jdbcutilTest.java
package cn;
import org.junit.Test;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
import java.util.Map;
public class jdbcutilsTest {
public static void main(String[] args) {
}
JdbcTemplate templete =new JdbcTemplate(jdbcutils.getdatasource());
@Test//修改
public void test_xiugai(){
//System.out.println("成功");
String sql="update shili set salary=? where id =?";
int count=templete.update(sql,2000,1);
System.out.println(count);
}
@Test//添加
public void test_tianjia(){
String sql="insert into shili(name,salary) values(?,?)";
int count=templete.update(sql,"wang","2000");
System.out.println(count);
}
@Test//删除
public void test_shanchu(){
String sql="delete from shili where id=?";
int count=templete.update(sql,9);
System.out.println(count);
}
@Test//获取map集合,几乎不会使用
public void test_fenzhuangMAP(){
String sql="select * from shili where id=?";
Map<String, Object> stringObjectMap = templete.queryForMap(sql,1);
System.out.println(stringObjectMap);
}
@Test//获取list集合
public void test_fenzhuangLIST(){
String sql="select * from shili";
List<Map<String, Object>> list = templete.queryForList(sql);
for(Map<String,Object> stringObjectMap:list) {
System.out.println(stringObjectMap);
}
}
@Test//获取javabean集合
public void test_fenzhuangBEAN(){
String sql="select * from shili";
List<shili> list = templete.query(sql, new BeanPropertyRowMapper<shili>(shili.class));
for(shili shili:list) {
System.out.println(shili);
}
Integer id=list.get(0).getId();
System.out.println(id);
}
@Test//查询总记录数
public void test_chaxunjilushu(){
String sql="select count(id) from shili";
Long aLong = templete.queryForObject(sql, Long.class);
System.out.println(aLong);
}
}
over
运行结果自己看吧,我就不贴截图了。
至于我用的数据库嘛,就是上面截图那样,自行创建吧。
如果你还不知道项目里面文件夹怎么放的:我的就长这样,你想让他好看点儿就自己加包吧