java jdbc連接mysql數(shù)據庫實現(xiàn)增刪改查操作
jdbc相信大家都不陌生,只要是個搞java的,最初接觸j2ee的時候都是要學習這么個東西的,誰叫程序得和數(shù)據庫打交道呢!而jdbc就是和數(shù)據庫打交道非?;A的一個知識,也是比較接近底層的,在實際的工作中大家用得更多的其實還是比較成熟的框架,例如Hibernate、Mybatis。
但是作為這些成熟框架的底層的jdbc卻也是我們應該去掌握的,只有了解了jdbc的增刪改查,這樣在以后如果有興趣去研究Hibernate或者Mybatis的源代碼的時候才能更好的去理解這些成熟的框架是如何去實現(xiàn)增刪改查的。
回歸正題,先來看看我們的開發(fā)環(huán)境:
Java語言、Eclipse開發(fā)工具、Mysql數(shù)據庫、Navicat數(shù)據庫可視化工具。
開發(fā)環(huán)境的安裝搭建及使用請自己查閱資料(很簡單的),這里不詳細闡述。
第一步,創(chuàng)建數(shù)據庫,利用Navicat數(shù)據庫可視化工具隨便建立一個數(shù)據庫,在庫中建立一張表,表里給幾個字段(記得給個id字段,唯一主鍵,自增序列),再隨便給上兩條數(shù)據便好,用來測試功能,如圖:
第二步,打通數(shù)據庫(這個例子希望大家自己動手敲敲,耽誤不了多少時間,熟悉一下jdbc如何和數(shù)據庫打交道,故以圖示之),如圖:
第三步,改造DBUtil類,方便在dao層獲得數(shù)據庫的連接,代碼如下:
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.加載驅動程序 Class.forName("com.mysql.jdbc.Driver"); // 2.獲得數(shù)據庫的連接 conn = DriverManager.getConnection(URL, UNAME, PWD); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } public static Connection getConnection() { return conn; } }
第四步,創(chuàng)建實體類(如上圖,大家觀察包的分配,我們將采用MVC思想設計本實例,有關于mvc的設計思想,請大家自行學習,這里不多說)代碼如下:
package com.czgo.model; import java.io.Serializable; /** * 實體類:女神類 * * @author AlanLee * */ public class Goddess implements Serializable { private static final long serialVersionUID = 1L; /** * 唯一主鍵 */ private Integer id; /** * 姓名 */ private String name; /** * 手機號碼 */ 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層的實現(xiàn)(這里由于是小例子沒有寫dao接口,實際工作中大型項目應該是要寫dao接口的,便于程序的維護和擴展),代碼如下:
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ù)據層處理類 * * @author AlanLee * */ public class GoddessDao { /** * 查詢全部女神 * * @return * @throws SQLException */ public List<Goddess> query() throws SQLException { List<Goddess> goddessList = new ArrayList<Goddess>(); // 獲得數(shù)據庫連接 Connection conn = DBUtil.getConnection(); StringBuilder sb = new StringBuilder(); sb.append("select id,name,mobie,email,address from goddess"); // 通過數(shù)據庫的連接操作數(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; } /** * 查詢單個女神 * * @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ù)據庫連接 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(); } }
第六步,控制層的實現(xiàn)(控制層在此處用來模仿控制層和界面,直接在這里構建數(shù)據,如果是界面的數(shù)據則通過請求傳遞接收參數(shù)即可,控制層的代碼大家可以根據實際情況去更改完善,這里只是給大家拋磚引玉,做個簡單的測試,時間比較緊,希望大家理解),代碼如下:
package com.czgo.action; import java.sql.SQLException; import java.util.List; import com.czgo.dao.GoddessDao; import com.czgo.model.Goddess; /** * 控制層,直接在這里構建數(shù)據,界面的數(shù)據則通過請求傳遞接收即可,亦是同理 * * @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); } /** * 查詢單個女神 * * @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); } /** * 查詢全部女神 * * @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方法的運行結果是否成功:
這樣,一個簡單的java jdbc 連接mysql數(shù)據庫 實現(xiàn)增刪改查便完成了,大家可以在查詢的基礎上試著去做一個高級查詢,也就是多條件查詢來鞏固jdbc的使用。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
swagger注解@ApiModelProperty失效情況的解決
這篇文章主要介紹了swagger注解@ApiModelProperty失效情況的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06用SpringBoot框架來接收multipart/form-data文件方式
這篇文章主要介紹了用SpringBoot框架來接收multipart/form-data文件方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02Spring擴展點之BeanFactoryPostProcessor詳解
這篇文章主要介紹了Spring擴展點之BeanFactoryPostProcessor詳解,Spring的設計非常優(yōu)雅,有很多的擴展點供我們對項目進行擴展,今天學習一下Spring其中擴展點之一的BeanFactoryPostProcessor,需要的朋友可以參考下2023-11-11Java String 和StringBuffer的詳解及區(qū)別
這篇文章主要介紹了Java String 和StringBuffer的詳解及區(qū)別的相關資料,需要的朋友可以參考下2017-05-05Java中使用JWT生成Token進行接口鑒權實現(xiàn)方法
這篇文章主要介紹了Java中使用JWT生成Token進行接口鑒權實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-08-08