java jdbc連接mysql數(shù)據(jù)庫實(shí)現(xiàn)增刪改查操作
jdbc相信大家都不陌生,只要是個(gè)搞java的,最初接觸j2ee的時(shí)候都是要學(xué)習(xí)這么個(gè)東西的,誰叫程序得和數(shù)據(jù)庫打交道呢!而jdbc就是和數(shù)據(jù)庫打交道非?;A(chǔ)的一個(gè)知識(shí),也是比較接近底層的,在實(shí)際的工作中大家用得更多的其實(shí)還是比較成熟的框架,例如Hibernate、Mybatis。
但是作為這些成熟框架的底層的jdbc卻也是我們應(yīng)該去掌握的,只有了解了jdbc的增刪改查,這樣在以后如果有興趣去研究Hibernate或者M(jìn)ybatis的源代碼的時(shí)候才能更好的去理解這些成熟的框架是如何去實(shí)現(xiàn)增刪改查的。
回歸正題,先來看看我們的開發(fā)環(huán)境:
Java語言、Eclipse開發(fā)工具、Mysql數(shù)據(jù)庫、Navicat數(shù)據(jù)庫可視化工具。
開發(fā)環(huán)境的安裝搭建及使用請自己查閱資料(很簡單的),這里不詳細(xì)闡述。
第一步,創(chuàng)建數(shù)據(jù)庫,利用Navicat數(shù)據(jù)庫可視化工具隨便建立一個(gè)數(shù)據(jù)庫,在庫中建立一張表,表里給幾個(gè)字段(記得給個(gè)id字段,唯一主鍵,自增序列),再隨便給上兩條數(shù)據(jù)便好,用來測試功能,如圖:

第二步,打通數(shù)據(jù)庫(這個(gè)例子希望大家自己動(dòng)手敲敲,耽誤不了多少時(shí)間,熟悉一下jdbc如何和數(shù)據(jù)庫打交道,故以圖示之),如圖:

第三步,改造DBUtil類,方便在dao層獲得數(shù)據(jù)庫的連接,代碼如下:
package com.czgo.db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBUtil
{
private static final String URL = "jdbc:mysql://127.0.0.1:3306/imooc";
private static final String UNAME = "root";
private static final String PWD = "root";
private static Connection conn = null;
static
{
try
{
// 1.加載驅(qū)動(dòng)程序
Class.forName("com.mysql.jdbc.Driver");
// 2.獲得數(shù)據(jù)庫的連接
conn = DriverManager.getConnection(URL, UNAME, PWD);
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
public static Connection getConnection()
{
return conn;
}
}
第四步,創(chuàng)建實(shí)體類(如上圖,大家觀察包的分配,我們將采用MVC思想設(shè)計(jì)本實(shí)例,有關(guān)于mvc的設(shè)計(jì)思想,請大家自行學(xué)習(xí),這里不多說)代碼如下:
package com.czgo.model;
import java.io.Serializable;
/**
* 實(shí)體類:女神類
*
* @author AlanLee
*
*/
public class Goddess implements Serializable
{
private static final long serialVersionUID = 1L;
/**
* 唯一主鍵
*/
private Integer id;
/**
* 姓名
*/
private String name;
/**
* 手機(jī)號碼
*/
private String mobie;
/**
* 電子郵件
*/
private String email;
/**
* 家庭住址
*/
private String address;
public Integer getId()
{
return id;
}
public void setId(Integer id)
{
this.id = id;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getMobie()
{
return mobie;
}
public void setMobie(String mobie)
{
this.mobie = mobie;
}
public String getEmail()
{
return email;
}
public void setEmail(String email)
{
this.email = email;
}
public String getAddress()
{
return address;
}
public void setAddress(String address)
{
this.address = address;
}
}
第五步,dao層的實(shí)現(xiàn)(這里由于是小例子沒有寫dao接口,實(shí)際工作中大型項(xiàng)目應(yīng)該是要寫dao接口的,便于程序的維護(hù)和擴(kuò)展),代碼如下:
package com.czgo.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.czgo.db.DBUtil;
import com.czgo.model.Goddess;
/**
* 數(shù)據(jù)層處理類
*
* @author AlanLee
*
*/
public class GoddessDao
{
/**
* 查詢?nèi)颗?
*
* @return
* @throws SQLException
*/
public List<Goddess> query() throws SQLException
{
List<Goddess> goddessList = new ArrayList<Goddess>();
// 獲得數(shù)據(jù)庫連接
Connection conn = DBUtil.getConnection();
StringBuilder sb = new StringBuilder();
sb.append("select id,name,mobie,email,address from goddess");
// 通過數(shù)據(jù)庫的連接操作數(shù)據(jù)庫,實(shí)現(xiàn)增刪改查
PreparedStatement ptmt = conn.prepareStatement(sb.toString());
ResultSet rs = ptmt.executeQuery();
Goddess goddess = null;
while (rs.next())
{
goddess = new Goddess();
goddess.setId(rs.getInt("id"));
goddess.setName(rs.getString("name"));
goddess.setMobie(rs.getString("mobie"));
goddess.setEmail(rs.getString("email"));
goddess.setAddress(rs.getString("address"));
goddessList.add(goddess);
}
return goddessList;
}
/**
* 查詢單個(gè)女神
*
* @return
* @throws SQLException
*/
public Goddess queryById(Integer id) throws SQLException
{
Goddess g = null;
Connection conn = DBUtil.getConnection();
String sql = "" + " select * from imooc_goddess " + " where id=? ";
PreparedStatement ptmt = conn.prepareStatement(sql);
ptmt.setInt(1, id);
ResultSet rs = ptmt.executeQuery();
while (rs.next())
{
g = new Goddess();
g.setId(rs.getInt("id"));
g.setName(rs.getString("name"));
g.setMobie(rs.getString("mobie"));
g.setEmail(rs.getString("email"));
g.setAddress(rs.getString("address"));
}
return g;
}
/**
* 添加女神
*
* @throws SQLException
*/
public void addGoddess(Goddess goddess) throws SQLException
{
// 獲得數(shù)據(jù)庫連接
Connection conn = DBUtil.getConnection();
String sql = "insert into goddess(name,mobie,email,address) values(?,?,?,?)";
PreparedStatement ptmt = conn.prepareStatement(sql);
ptmt.setString(1, goddess.getName());
ptmt.setString(2, goddess.getMobie());
ptmt.setString(3, goddess.getEmail());
ptmt.setString(4, goddess.getAddress());
ptmt.execute();
}
/**
* 修改女神資料
*
* @throws SQLException
*/
public void updateGoddess(Goddess goddess) throws SQLException
{
Connection conn = DBUtil.getConnection();
String sql = "update goddess set name=?,mobie=?,email=?,address=? where id=?";
PreparedStatement ptmt = conn.prepareStatement(sql);
ptmt.setString(1, goddess.getName());
ptmt.setString(2, goddess.getMobie());
ptmt.setString(3, goddess.getEmail());
ptmt.setString(4, goddess.getAddress());
ptmt.execute();
}
/**
* 刪除女神
*
* @throws SQLException
*/
public void deleteGoddess(Integer id) throws SQLException
{
Connection conn = DBUtil.getConnection();
String sql = "delete from goddess where id=?";
PreparedStatement ptmt = conn.prepareStatement(sql);
ptmt.setInt(1, id);
ptmt.execute();
}
}
第六步,控制層的實(shí)現(xiàn)(控制層在此處用來模仿控制層和界面,直接在這里構(gòu)建數(shù)據(jù),如果是界面的數(shù)據(jù)則通過請求傳遞接收參數(shù)即可,控制層的代碼大家可以根據(jù)實(shí)際情況去更改完善,這里只是給大家拋磚引玉,做個(gè)簡單的測試,時(shí)間比較緊,希望大家理解),代碼如下:
package com.czgo.action;
import java.sql.SQLException;
import java.util.List;
import com.czgo.dao.GoddessDao;
import com.czgo.model.Goddess;
/**
* 控制層,直接在這里構(gòu)建數(shù)據(jù),界面的數(shù)據(jù)則通過請求傳遞接收即可,亦是同理
*
* @author AlanLee
*
*/
public class GoddessAction
{
/**
* 新增女神
*
* @param goddess
* @throws Exception
*/
public void add(Goddess goddess) throws Exception
{
GoddessDao dao = new GoddessDao();
goddess.setName("蒼井空");
goddess.setMobie("52220000");
goddess.setEmail("52220000@qq.com");
goddess.setAddress("北京紅燈區(qū)");
dao.addGoddess(goddess);
}
/**
* 查詢單個(gè)女神
*
* @param id
* @return
* @throws SQLException
*/
public Goddess get(Integer id) throws SQLException
{
GoddessDao dao = new GoddessDao();
return dao.queryById(id);
}
/**
* 修改女神
*
* @param goddess
* @throws Exception
*/
public void edit(Goddess goddess) throws Exception
{
GoddessDao dao = new GoddessDao();
dao.updateGoddess(goddess);
}
/**
* 刪除女神
*
* @param id
* @throws SQLException
*/
public void del(Integer id) throws SQLException
{
GoddessDao dao = new GoddessDao();
dao.deleteGoddess(id);
}
/**
* 查詢?nèi)颗?
*
* @return
* @throws Exception
*/
public List<Goddess> query() throws Exception
{
GoddessDao dao = new GoddessDao();
return dao.query();
}
/**
* 測試是否成功
*
* @param args
* @throws SQLException
*/
public static void main(String[] args) throws SQLException
{
GoddessDao goddessDao = new GoddessDao();
List<Goddess> goddessList = goddessDao.query();
for (Goddess goddess : goddessList)
{
System.out.println(goddess.getName() + "," + goddess.getMobie() + "," + goddess.getEmail());
}
}
}
最后,讓我們看一下main方法的運(yùn)行結(jié)果是否成功:

這樣,一個(gè)簡單的java jdbc 連接mysql數(shù)據(jù)庫 實(shí)現(xiàn)增刪改查便完成了,大家可以在查詢的基礎(chǔ)上試著去做一個(gè)高級查詢,也就是多條件查詢來鞏固jdbc的使用。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
swagger注解@ApiModelProperty失效情況的解決
這篇文章主要介紹了swagger注解@ApiModelProperty失效情況的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
用SpringBoot框架來接收multipart/form-data文件方式
這篇文章主要介紹了用SpringBoot框架來接收multipart/form-data文件方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
Spring擴(kuò)展點(diǎn)之BeanFactoryPostProcessor詳解
這篇文章主要介紹了Spring擴(kuò)展點(diǎn)之BeanFactoryPostProcessor詳解,Spring的設(shè)計(jì)非常優(yōu)雅,有很多的擴(kuò)展點(diǎn)供我們對項(xiàng)目進(jìn)行擴(kuò)展,今天學(xué)習(xí)一下Spring其中擴(kuò)展點(diǎn)之一的BeanFactoryPostProcessor,需要的朋友可以參考下2023-11-11
SpringBoot2.7.14整合redis7的詳細(xì)過程
這篇文章主要介紹了SpringBoot2.7.14整合redis7的詳細(xì)過程,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-10-10
Java String 和StringBuffer的詳解及區(qū)別
這篇文章主要介紹了Java String 和StringBuffer的詳解及區(qū)別的相關(guān)資料,需要的朋友可以參考下2017-05-05
Java中使用JWT生成Token進(jìn)行接口鑒權(quán)實(shí)現(xiàn)方法
這篇文章主要介紹了Java中使用JWT生成Token進(jìn)行接口鑒權(quán)實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08

