# 一个7,8年的phper学习java之路
在https://www.iteye.com/blog/user/chenhaibo0806999上写了6,7年的博客(共96篇文章,访问量近80000),最近准备开始在这个上写博客了,这个是处女作品,希望以后的编程之路顺利!之前用python写过图形报表,爬虫,后台搭建觉得python和PHP很像至少很简洁但速度没PHP快。3,4个月前做了一个决定努力学习java给自己10个月的时间然后转行做java,因为精通mysql/前端(HTML/CSS/javascript/jquery/vue)/linux所以只需要把java的东西学好,这对于工作7,8年的老司机来说应该问题不大;
6,7月份开始学习java的基础(比如语法,程序包,泛型等)并总结文档,最近在看JDBC/serlet/JSP,就将就和spring mvc一起搞,因为有8年工作经验就没有看网上的视频但看了两遍文档并记录记忆,直接开搞,一路的摸索尝试解决各种坑和bug,那是相当的累,今天的主题很简单:JDBC来写个增删改查,并简单的封装(OOP思想不能丢,对吧),第一次在这上面写可能写的不好请大家多多包涵和指点!
JDBC的增删改查并封装
软件及工具:
JDK 1.8;
mysql驱动:8.0.11
IDEA编辑器
tomcat :7.0.9
maven:3.6.1
直接上代码吧,封装前的,调试通过了,差不多每行都有注释吧-----------------------------
package com.example.chen.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.sql.*;
public class HandleSql {
static Connection con; //声明 Connection 对象
static PreparedStatement pStmt;//声明预处理 PreparedStatement 对象
static ResultSet res;//声明结果 ResultSet 对象
//IDEA右边Database链接数据库 一定要加 "?serverTimezone=GMT" 否则会报错
static String url = "jdbc:mysql://localhost:3306/test?serverTimezone=GMT&characterEncoding=utf-8";
static String user = "root";
static String password = "root";
public Connection getConnection() {//建立返回值为 Connection 的方法
try { //代码块(1):加载数据库驱动类
//在IDEA右边Database安装驱动(下载mysql-connector-java-8.0.11.jar 然后在右侧导入进去)
Class.forName("com.mysql.cj.jdbc.Driver"); //没有安装mysql驱动 Class.forName会报错
System.out.println("数据库驱动加载成功");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//代码块(2):通过访问数据库的URL获取数据库连接对象
try {
con = DriverManager.getConnection(url,user,password);
System.out.println("数据库连接成功");
} catch (SQLException e) {
e.printStackTrace();
}
return con;
}
public static void main(String[] args) {//主方法
HandleSql h = new HandleSql();//创建本类对象
con = h.getConnection();//与数据库建立连接
try {
//查询所有记录
String sql = "select * from user";
pStmt = con.prepareStatement(sql);
res = pStmt.executeQuery();
while (res.next()) {//如果当前语句不是最后一条,则进入循环
int id = res.getInt("id");
String name = res.getString("username");
String phone = res.getString("password");
System.out.println("id:" + id + " " + "姓名:" + name + " " + "电话:" + phone);
}
//新增一条数据
pStmt = con.prepareStatement("insert into user (username,password) values (?,?)");
pStmt.setString(1, "陈波波"); //JDBC的url需要带参数&characterEncoding=utf-8 否则中文存进去乱码
pStmt.setString(2, "7654321"); // 数字1是 第一个参数 2代表第二个参数
pStmt.executeUpdate();
//修改更新数据
pStmt = con.prepareStatement("update user set username = ? where id = 4");
pStmt.setString(1,"皮皮虾1");
pStmt.executeUpdate();
System.out.println("更新完毕");
//删除数据
Statement stmt = con.createStatement();//创建Statement对象
stmt.executeUpdate("delete from user where id = 3");
System.out.println("删除完毕");
} catch (Exception e) {
e.printStackTrace();
}
}
}
比如从数据库获取一条记录的 运行结果如下:
数据库数据:
正常情况下我们开发,像这种增删改查等都会封装到方法里的,比如获取一条记录等,代码如下:
package com.example.chen.demo.controller;
import java.sql.*;
//本类是对HandleSql的封装优化(如获取,更新,删除分别封装方法)
package com.example.chen.demo.controller;
import java.sql.*;
//本类是对HandleSql的封装优化(如获取,更新,删除分别封装方法)
public class HandleSqlNew {
static Connection con; //声明 Connection 对象
static PreparedStatement pStmt;//声明预处理 PreparedStatement 对象
static ResultSet res;//声明结果 ResultSet 对象
//IDEA右边Database链接数据库 一定要加 "?serverTimezone=GMT" 否则会报错
static String url = "jdbc:mysql://localhost:3306/test?serverTimezone=GMT&characterEncoding=utf-8";
static String user = "root";
static String password = "root";
static String DataStr;
public Connection getConnection() {//建立返回值为 Connection 的方法
try { //代码块(1):加载数据库驱动类
//在IDEA右边Database安装驱动(下载mysql-connector-java-8.0.11.jar 然后在右侧导入进去)
Class.forName("com.mysql.cj.jdbc.Driver"); //没有安装mysql驱动 Class.forName会报错
System.out.println("数据库驱动加载成功");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//代码块(2):通过访问数据库的URL获取数据库连接对象
try {
con = DriverManager.getConnection(url,user,password);
System.out.println("数据库连接成功");
} catch (SQLException e) {
e.printStackTrace();
}
return con;
}
//获取数据 封装
public String getAll(){
HandleSqlNew h = new HandleSqlNew();//创建本类对象
con = h.getConnection();//与数据库建立连接
try { //这里要加try catch否则下面con和pStmt会报错
String sql = "select * from user limit 1";
pStmt = con.prepareStatement(sql);
res = pStmt.executeQuery();
while (res.next()) {//如果当前语句不是最后一条,则进入循环
int id = res.getInt("id");
String name = res.getString("username");
String phone = res.getString("password");
return "id:" + id + " " + "姓名:" + name + " " + "电话:" + phone;
}
} catch (Exception e) {
e.printStackTrace();
}
return "error";
}
public static void main(String[] args) {//主方法
HandleSqlNew h = new HandleSqlNew();//创建本类对象
DataStr = (String) h.getAll(); //获取记录的封装方法 强制类型转换String
System.out.println(DataStr);
}
}
//运行结果如上图所示,代码是从网上找的,我也是java菜逼,请大家多多指点,谢谢!