Java連接MySQL數(shù)據(jù)庫(kù)命令行程序過(guò)程
SQL編程包括兩種形式,一種是過(guò)程化編程,主要通過(guò)數(shù)據(jù)庫(kù)交互式工具,通過(guò)存儲(chǔ)過(guò)程、觸發(fā)器、函數(shù)等形式的編程;另一種是嵌入式SQL編程,將SQL語(yǔ)句嵌入到高級(jí)開(kāi)發(fā)語(yǔ)言,完成數(shù)據(jù)的各種操作。
命令行程序由于對(duì)外依賴(lài)的jar包少易上手,通常作為教學(xué)示例程序。我們通過(guò)命令行 程序介紹嵌入式SQL開(kāi)發(fā)過(guò)程,示例開(kāi)發(fā)工具選擇idea。
創(chuàng)建表
通過(guò)SQLyol建立表student;
CREATE TABLE student( Sno VARCHAR(10) PRIMARY KEY, Sname VARCHAR(50), Ssex VARCHAR(2), Sage INT, Sdept VARCHAR(50) )
插入數(shù)據(jù):

創(chuàng)建命令行程序
新建一個(gè)命令行程序,打開(kāi)idea工具,選擇:File—>New—>Project,彈出對(duì)話框,如下圖所示

直接點(diǎn)擊Next按鈕,進(jìn)入到下一個(gè)Tab頁(yè),勾選Create project from template,選擇Command line App

點(diǎn)擊Next進(jìn)入下一個(gè)Tab頁(yè),如圖所示

輸入項(xiàng)目名稱(chēng),選擇項(xiàng)目路徑,書(shū)寫(xiě)基本包包名,基本包名一般由com+域名組成,確保其唯一性。填寫(xiě)完成后,點(diǎn)擊finish按鈕,完成命令行程序的創(chuàng)建,創(chuàng)建完成的頁(yè)面如下圖所示

下載并導(dǎo)入jar包
下載mysql-connector-java-8.0.13.jar;下載地址,,將jar包存入本地目錄。
項(xiàng)目中導(dǎo)入Jar包。點(diǎn)擊File—>ProjectStructure 打開(kāi)對(duì)話框,如下圖所示

點(diǎn)擊右側(cè)“+”,選擇“JARs or directories”,彈出對(duì)話框,選擇剛才下載的jar包,如下圖所示:

點(diǎn)擊OK,完成jar包的導(dǎo)入,導(dǎo)入后就可以在工程中看到導(dǎo)入的jar包,如下圖

創(chuàng)建工具包
在開(kāi)始練習(xí)時(shí),就應(yīng)該形成一個(gè)良好的習(xí)慣,將不同類(lèi)型的類(lèi)放置在不同包中,創(chuàng)建工具包util,用存放公共使用的工具類(lèi),這里的類(lèi)一般使用靜態(tài)方法。
創(chuàng)建數(shù)據(jù)庫(kù)連接類(lèi):

代碼如下:
public class MySqlConnection {
private static Connection con=null;
private static String driveName ="com.mysql.cj.jdbc.Driver";
private static String url = "jdbc:mysql://127.0.0.1:3306/sl?serverTimezone=GMT%2b8";
private static String user="root";
private static String pws="root";
private MySqlConnection(){}
public static Connection getCon(){
if(con==null){
con = getConnection();
}
return con;
}
private static Connection getConnection(){
Connection connection = null;
try {
Class.forName(driveName);
connection = DriverManager.getConnection(url,user,pws);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}finally {
return connection;
}
}
}
這里的方法使用static 修飾代表是靜態(tài)方法,該方法屬于類(lèi),而不是對(duì)象;
創(chuàng)建SQL執(zhí)行包裝類(lèi),完成數(shù)據(jù)庫(kù)各種方法的執(zhí)行,這里僅寫(xiě)了一個(gè)返回ResultSet方法,代碼如下:
public class MysqlHelp {
public static ResultSet query(String sql) {
Connection con = MySqlConnection.getCon();
ResultSet result =null;
try {
Statement stmt = con.createStatement();
result= stmt.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}finally {
return result;
}
}
}
創(chuàng)建實(shí)體類(lèi)
創(chuàng)建pojo包,在該包下創(chuàng)建實(shí)體類(lèi)Student,實(shí)體類(lèi)只包含私有屬性和get、set方法,為了簡(jiǎn)單期間,增加了一個(gè)lombok包,就不需要寫(xiě)get、set方法。lombok jar的安裝,F(xiàn)ile—>Settings ,打開(kāi)對(duì)話框如下圖:

在實(shí)體類(lèi)上加主解符“@Data”即可。
當(dāng)然也可以不用Lombok,老老實(shí)實(shí)的寫(xiě)get、set方法也可以,使用lombok代碼如下
@Data
public class Student {
private String sno;
private String sName;
private String sSex;
private int sAge;
private String sDept;
public Student(String sno,String name, String sex,int age,String dept){
this.setSno(sno);
this.setSAge(age);
this.setSName(name);
this.setSDept(dept);
this.setSSex(sex);
}
public String getInfo(){
return "學(xué)號(hào):"+sno +"姓名:"+sName+"性別:"+sSex+"年齡:"+"院系:"+sDept;
}
}
為了演示方便,在實(shí)體類(lèi)中增加了一個(gè)構(gòu)造函數(shù)和字符串的輸出,實(shí)體類(lèi)當(dāng)然完全沒(méi)有這兩個(gè)方法。
創(chuàng)建持久化層
創(chuàng)建一個(gè)dao包,包中創(chuàng)建類(lèi)StudentDao,完成數(shù)據(jù)的存取操作,代碼如下
public class StudentDao {
public void getStudentInfo(){
String sql="SELECT Sno AS sno,Sname AS NAME,Ssex AS sex,Sage AS age,Sdept AS dept FROM student";
ResultSet result = MysqlHelp.query(sql);
if(result!=null) {
while (true) {
try {
if (!result.next()) break;
String sno = result.getString("sno");
String name = result.getString("name");
int age = result.getInt("age");
String dept = result.getString("dept");
String sex = result.getString("sex");
Student student = new Student(sno, name, sex, age, dept);
System.out.println(student.getInfo());
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
這里調(diào)用了上面定義的 MysqlHelp的query方法,完成數(shù)據(jù)的存取及結(jié)構(gòu)化數(shù)據(jù)向面向?qū)ο髮?shí)體類(lèi)的轉(zhuǎn)換。
業(yè)務(wù)層調(diào)用
打開(kāi)main函數(shù),寫(xiě)入下代碼,完成dao層方法調(diào)用
public class Main {
public static void main(String[] args) {
StudentDao student = new StudentDao();
student.getStudentInfo();
}
}
執(zhí)行結(jié)果如下:

總結(jié)
在這里盡量使用面向?qū)ο蟮姆庋b技術(shù),將每個(gè)類(lèi)的職責(zé)單一化,而不是把所有代碼寫(xiě)到一起的做法,盡管寫(xiě)到一起,代碼更好讀,而且簡(jiǎn)單。另外思考一個(gè)問(wèn)題,我們能不能把結(jié)構(gòu)化的數(shù)據(jù)自動(dòng)轉(zhuǎn)換為實(shí)體對(duì)象,以及數(shù)據(jù)庫(kù)的連接、SQL的執(zhí)行交給第三方的程序去做,簡(jiǎn)化我們的代碼?答案是肯定的,Mybaits、hibernet就是完成這些工作的框架
以上就是Java連接MySQL數(shù)據(jù)庫(kù)創(chuàng)建命令行程序過(guò)程的詳細(xì)內(nèi)容,更多關(guān)于Java連接MySQL數(shù)據(jù)庫(kù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Java連接MySQL數(shù)據(jù)庫(kù)實(shí)例
- Java使用JDBC連接數(shù)據(jù)庫(kù)的詳細(xì)步驟
- 詳解Java使用JDBC連接MySQL數(shù)據(jù)庫(kù)
- Java使用JDBC連接數(shù)據(jù)庫(kù)
- Java使用JNDI連接數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法
- 詳細(xì)說(shuō)明關(guān)于Java的數(shù)據(jù)庫(kù)連接(JDBC)
- 一篇文章帶你了解java數(shù)據(jù)庫(kù)連接
- 詳解Java數(shù)據(jù)庫(kù)連接池
- Java基礎(chǔ)之JDBC的數(shù)據(jù)庫(kù)連接與基本操作
- Java 數(shù)據(jù)庫(kù)連接(JDBC)的相關(guān)總結(jié)
- Java 如何使用JDBC連接數(shù)據(jù)庫(kù)
- Java連接數(shù)據(jù)庫(kù)的步驟介紹
相關(guān)文章
InputStreamReader 和FileReader的區(qū)別及InputStream和Reader的區(qū)別
這篇文章主要介紹了InputStreamReader 和FileReader的區(qū)別及InputStream和Reader的區(qū)別的相關(guān)資料,需要的朋友可以參考下2015-12-12
Mybatis把返回結(jié)果封裝成map類(lèi)型的實(shí)現(xiàn)
本文主要介紹了Mybatis把返回結(jié)果封裝成map類(lèi)型的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
mybatis查詢(xún)SqlServer慢問(wèn)題及解決
這篇文章主要介紹了mybatis查詢(xún)SqlServer慢問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
使用@RequestBody傳遞多個(gè)不同對(duì)象方式
這篇文章主要介紹了使用@RequestBody傳遞多個(gè)不同對(duì)象方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10

