参考完一二步骤,这里默认数据库已经创建完成 库与表。
框架显示图:
2:在SRC---》Test 下面 创建一个类:BaseDao
该类里面有2个主要方法。
1:查询方法 prepareStatement
2:非查询方法 (增删改) executeUpdate
注意点: 一:JDBC_DRIVER 连接驱动的,这里需要看Mysql的版本。
如果是8.0以上的版本,需要用 com.mysql.cj.jdbc.Driver
该版本是mysql5.7 所以使用的是:com.mysql.jdbc.Driver
二:Class.forName(JDBC_DRIVER); 这个是加载驱动,需要用try catch 并且用ClassNotFoundException 抛异常
三:DB_URL 这个是mysql的连接地址。mytest是数据库名称
四:USER:mysql改数据库账号
五:PASS:数据库登入密码
三:底层连接数据库类:
package Test;
import java.sql.*;
public class BaseDao {
/*** * * @author 数据库连接类 * */
private String JDBC_DRIVER = "com.mysql.jdbc.Driver";
private String DB_URL = "jdbc:mysql://localhost:3306/mytest"; // ---------自己写数据库表名,只要数据库的表名跟这里的一样就行
private String USER = "root"; // ----------你自己数据库的名称
private String PASS = "123456"; // -----------你自己数据库的密码
Connection conn = null;
/**** @param 打开数据库 */
protected Connection getConnetconn() {
conn = null;
try {
Class.forName(JDBC_DRIVER);
//打开连接
System.out.println("连接数据库.....");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**** @param 关闭数据库连接 */
protected void closeAll(Connection conn, PreparedStatement ps, ResultSet rs) {
if (rs != null)
try {
if (rs != null)
rs.close();
if (ps != null)
ps.close();
if (conn != null)
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*** @param 增删改方法 * @param 接受 参数为 SQL语句 和 对象数组 * @return 返回受影响行数 */
public int executeUpdate(String sql ,Object []ob) {
conn = getConnetconn();
PreparedStatement ps = null;
try {
ps = prepareStatement(conn, sql, ob);
int i = ps.executeUpdate();
return i;
} catch (SQLException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
return 0;
} finally {
closeAll(conn, ps, null);
}
}
///*** * 查询方法 */
protected PreparedStatement prepareStatement(Connection conn, String sql, Object[] ob) {
PreparedStatement ps = null;
try {
int index = 1;
ps = conn.prepareStatement(sql);
if (ps != null && ob != null) {
for (int i = 0; i < ob.length; i++) {
ps.setObject(index, ob[i]);
index++;
}
}
} catch (SQLException e1) {
e1.printStackTrace();
}
return ps;
}
}
四:创建一个视图类,其实不创建类也可以实现改Demo,为了更直观,可以创建一个类,类名:UserInfoModel
package Test;
public class UserInfoModel {
private int userid;
private String username;
private String useraddr;
private String usertel;
public int getUserid() {
return userid;
}
public void setUserid(int id) {
this.userid = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username){
this.username = username;
}
public String getUseraddr() {
return useraddr;
}
public void setUseraddr(String useraddr) {
this.useraddr = useraddr;
}
public String getUsertel() {
return usertel;
}
public void setUsertel(String usertel) {
this.usertel = usertel;
}
五:调用底层三的方法,实现增删改查
这里:extends 是继承了父类 BaseDao
package Test;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class UserInfoDao extends BaseDao{
/*---查询方法---*/
public List<UserInfoModel> search(String sql,Object...params){
List<UserInfoModel> list =new ArrayList<UserInfoModel>();
Connection conn=this.getConnetconn();
PreparedStatement pst=null;
ResultSet rs=null;
try {
pst=this.prepareStatement(conn, sql, params);
rs=pst.executeQuery();
while(rs.next()){
UserInfoModel wor=new UserInfoModel();
wor.setUserid(rs.getInt(1));
wor.setUsername(rs.getString(2));
wor.setUseraddr(rs.getString(3));
wor.setUsertel(rs.getString(4));
list.add(wor);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
closeAll(conn, pst, rs);
}
return list;
}
/*新增方法*/
public int insert(){
UserInfoModel t=new UserInfoModel();
t.setUseraddr("shanghai");
t.setUsername("王五");
t.setUsertel("13524696896");
String str="INSERT INTO user_info ( user_name,user_addr,user_tel) VALUE(?,?,?)";
return executeUpdate(str, new Object[]{t.getUsername(),t.getUseraddr(),t.getUsertel()});
}
/*修改方法*/
public int update()
{
UserInfoModel r=new UserInfoModel();
r.setUseraddr("南京");
r.setUsername("测试");
r.setUsertel("13524698886");
r.setUserid(7);
String sql="UPDATE user_info SET `user_name`=?,`user_addr`=?,`user_tel`=? WHERE user_id=?";
return executeUpdate(sql, new Object[]{r.getUsername(),r.getUseraddr(),r.getUsertel(),r.getUserid()});
}
/*删除方法*/
public int delete()
{
UserInfoModel e=new UserInfoModel();
String sql="DELETE FROM `user_info` WHERE user_id=?";
e.setUserid(7);
return executeUpdate(sql, new Object[]{e.getUserid()});
}
}
六:在控制台 主方法 Main里面调用方法:
package Test;
import Test.Common;
public class Main {
public static void main(String[] args) {
UserInfoDao dao=new UserInfoDao();
dao.search("select user_id, user_name,user_addr,user_tel from user_info");
int insert= dao.insert();
System.out.println("新增成功条数:"+insert);
int update=dao.update();
System.out.println("修改成功条数:"+update);
int delete =dao.delete();
System.out.println("删除成功条数:"+delete);
}
七:完毕