JDBC的直接应用
首先,先展示一下不用封装写的使用JDBC。在这里,先总结下数据库连接的七个步骤:
1.获取驱动;
2.创建连接;
3.编写sql语句;
4.获取对象;
5.执行并返回结果;
6.处理对象;
可以看到,这里仅仅是使用了一个查询,代码就已经写的比较多了,可以想见,都是这么写的话,到了后面将会非常多,修改会很费力。
import java.sql.*;
public class TestUser {
public static void main(String[] args){
Connection conn=null;
PreparedStatement pstm=null;
ResultSet rs=null;
try{
//1.获取驱动
Class.forName("com.mysql.jdbc.Driver");
//2.创建连接
conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/java_3?useSSl=true&CharacterEncode=utf-8&user=root&password=123456");
//3.编写sql语句
//4.获取对象
pstm=conn.prepareStatement("select * from user");
//5.执行并返回结果
rs=pstm.executeQuery();
//6.处理结果
while( rs.next())
{
System.out.println("id: "+rs.getInt(1));
System.out.println("用户名: "+rs.getString(2));
System.out.println("密码: "+rs.getString(3));
}
}catch (Exception e)
{
e.printStackTrace();
}finally {
//7.关闭资源
if (rs!=null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (pstm!=null) {
try {
pstm.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn!=null) {
try{
conn.close();
}catch (SQLException e){
e.printStackTrace();
}
}
}
}
}
JDBC封装调用
一、首先,本次实验使用的MVC(粗略),第一步是M:模型的建立,这里先说下封装模型的四个步骤:
1.) 属性封装
2.) Get set
User
user = new User();
User.get/set
3. ) 构造方法
User
user = new User(id,username,password)
4. ) toString 方法重写
处理结果集的时候,如果没有toString,遍历对象的时候就会出现一个对象的地址。
然后,建立个bean包用来放模型:(代码如下)
package bean;
public class User {
//1.对属性封装
private int uid;
private String name;
private String password;
// get set
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
//构造方法
public User(int uid, String name, String password) {
this.uid = uid;
this.name = name;
this.password = password;
}
public User(){
}
//toString 方法重写
@Override
public String toString() {
return "User{" +
"uid=" + uid +
", name='" + name + '\'' +
", password='" + password + '\'' +
'}';
}
}
二、接下来,创建一个util包,用来放工具类,这里是放数据库的连接和关闭。
package util;
import java.sql.*;
//工具类
public class DBUtil {
private static String driver = "com.mysql.jdbc.Driver";
private static String url = "jdbc:mysql://localhost:3306/java_3?useSSL=true&characterEncode=utf-8";
private static String user = "root";
private static String password = "123456";
static {
try {
//获取驱动
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
}
}
//2. 创建连接
public static Connection get_Conn() throws SQLException {
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println("数据库连接成功!" +conn);
return conn;
}
//3.关闭资源
public static void get_CloseConn(ResultSet rs, PreparedStatement pstm, Connection conn) throws SQLException {
if (rs != null) {
rs.close();
}
if (pstm != null) {
pstm.close();
;
}
if (conn != null) {
conn.close();
}
}
//单元测试 / 白盒测试
public static void main(String[] args){
try {
get_Conn();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
三、最后,在创建一个dao包,用来与数据库直接交互:
package dao;
import bean.User;
import util.DBUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
//直接和数据库做交互
public class UserDao {
Connection conn=null;
PreparedStatement pstm=null;
ResultSet rs=null;
//查询全部
public List<User> findAllUser(){
try {
//1.获取连接
conn = DBUtil.get_Conn();
//2.获取存放Sql语句的对象
pstm = conn.prepareStatement("select * from user");
//3.执行sql并返回对象结果
rs = pstm.executeQuery();
//创建集合
List<User> userlist = new ArrayList<>();
// 4.处理结果
while (rs.next()){
User user = new User();
user.setUid(rs.getInt(1));
user.setName(rs.getString(2));
user.setPassword(rs.getString(3));
userlist.add(user);
}
System.out.println(userlist);
return userlist;
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
DBUtil.get_CloseConn(rs,pstm,conn);
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
}
// public static void main(String[] args) {
// UserDao dao = new UserDao();
// dao.findAllUser();
// }
public boolean addUser(String name,String password){
try {
DBUtil.get_Conn();
pstm = conn.prepareStatement("insert into user values(?,?)");
pstm.setString(1,name);
pstm.setString(2,password);
pstm.executeUpdate();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}finally {
try {
DBUtil.get_CloseConn(rs,pstm,conn);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
创捷包的界面如下:
最后,稍微再总结下MVC:
MVC:
M: model - 模型
V: View – 视图
C: Controller – 控制器
实体类:
Bean/ mdoel/ domain/entity
Dao
Service
Controller
util