package com.pinzhi.ClassTest.tools;
import java.sql.*;
import java.util.List;
/**连接数据库的封装类
* @author:LCH
* @date Date : 2022 年
* 05月04日
*/
public class BaseDao {
public static String url = "jdbc:mysql://localhost:3306/javatest?useUnicode=true&characterEncoding=utf8";
public static String user = "root";
public static String password = "123456";
public static Connection connection = null;
public static PreparedStatement preparedStatement = null;
public static ResultSet resultSet = null;
//获取数据库连接
public static Connection getConnection() {
if (connection == null) {
try {
Class.forName ( "com.mysql.jdbc.Driver" );
connection=DriverManager.getConnection ( url ,user ,password );
System.out.println ( "连接成功" );
} catch (ClassNotFoundException e) {
e.printStackTrace ( );
} catch (SQLException e) {
e.printStackTrace ( );
}
}
return connection;
}
/**
* (增删改)
*
* @return Connection
*/
public static Integer getPreparedStatement(String sql, List<Object> objects) {
int result = 0;
try {
preparedStatement = connection.prepareStatement(sql);
for (int i = 0; i < objects.size(); i++) {
preparedStatement.setObject(i + 1, objects.get(i));
}
result = preparedStatement.executeUpdate ( );
System.out.println("更新成功");
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
public static ResultSet getResultSet(String sql,List<Object> objects) {
ResultSet resultSet = null;
// if (preparedStatement==null) {me
try {
preparedStatement = connection.prepareStatement ( sql );
for (int i = 0; i < objects.size (); i++) {
preparedStatement.setObject ( i+1,objects.get ( i ) );
resultSet = preparedStatement.executeQuery ();
}
// resultSet = preparedStatement.executeQuery ();me
} catch (SQLException e) {
e.printStackTrace ( );
// }
}
return resultSet;
}
public static void closeAll(Connection connection,Statement statement,ResultSet resultSet) {
//若结果集对象不为空,则关闭
try {
if (resultSet!=null) {
resultSet.close ();
}
if (statement!=null) {
statement.close ();
}
if (connection!=null) {
connection.close ();
}
} catch (SQLException e) {
e.printStackTrace ( );
}
}
}
package com.pinzhi.ClassTest.Dao.impl;
import com.pinzhi.ClassTest.Dao.PersonDao;
import com.pinzhi.ClassTest.tools.BaseDao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.List;
/**
* @author:LCH
* @date Date : 2022 年
* 05月05日
*/
public class PersionDaoImpl extends BaseDao implements PersonDao {
@Override
public int executeUpdate(String sql ,List<Object> objects) {
//连接数据库成功
Connection connection = BaseDao.getConnection ();
//执行新增
int result = BaseDao.getPreparedStatement ( sql, objects );
//关闭连接
BaseDao.closeAll ( connection,preparedStatement,resultSet );//晓
return result;
}
@Override
public ResultSet executeQuery(String sql ,List<Object> objects) {
//连接数据库
Connection connection = BaseDao.getConnection ();
//执行查询
ResultSet resultSet = BaseDao.getResultSet ( sql ,objects );
//关闭连接 查询不能关闭连接
// BaseDao.closeAll ( connection,null,resultSet );晓
return resultSet;
}
}
package com.pinzhi.ClassTest.Dao;
import java.sql.ResultSet;
import java.util.List;
/**
* @author:LCH
* @date Date : 2022 年
* 05月04日
*/
public interface PersonDao {
//执行增删改
public int executeUpdate(String sql, List<Object> objects);
//执行查询
public ResultSet executeQuery(String sql, List<Object> objects);
}
package com.pinzhi.ClassTest.service;
import java.sql.ResultSet;
import java.util.List;
import java.util.Objects;
/**
* @author:LCH
* @date Date : 2022 年
* 05月05日
*/
public interface PersonServiceI {
//新增
public int add(String sql,List<Object> param );
//修改
public int update(String sql,List<Object> param);
//删除
public int delete(String sql,List<Object> param);
//执行查询
public ResultSet select(String sql,List<Object> param);
}
package com.pinzhi.ClassTest.service.impl;
import com.pinzhi.ClassTest.Dao.impl.PersionDaoImpl;
import com.pinzhi.ClassTest.service.PersonServiceI;
import java.sql.ResultSet;
import java.util.List;
/**
* @author:LCH
* @date Date : 2022 年
* 05月05日
*/
public class PersonServiceImpl implements PersonServiceI {
PersionDaoImpl persionDaoImpl = new PersionDaoImpl ();
@Override
public int add(String sql ,List<Object> param) {
int result = persionDaoImpl.executeUpdate ( sql ,param );
return result;
}
@Override
public int update(String sql ,List<Object> param) {
int result= persionDaoImpl.executeUpdate( sql ,param );
return result;
}
@Override
public int delete(String sql ,List<Object> param) {
int result= persionDaoImpl.executeUpdate ( sql ,param );
return result;
}
@Override
public ResultSet select(String sql ,List<Object> param) {
ResultSet resultSet = persionDaoImpl.executeQuery ( sql ,param );
return resultSet;
}
}
package com.pinzhi.ClassTest.Test;
import com.pinzhi.ClassTest.Dao.impl.PersionDaoImpl;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/**
* @author:LCH
* @date Date : 2022 年
* 05月05日
*/
public class TestPerson {
public static void main(String[] args) {
List<Object> list = new ArrayList<>();
PersionDaoImpl persionDaoImpl = new PersionDaoImpl ();
//添加数据
String sql = "INSERT INTO studentinfo(stuName)VALUES(?)";
list.add ( "张飞" );
int add = persionDaoImpl.executeUpdate ( sql,list );
System.out.println (add );
// 删除数据
String deletesql = "DELETE from person WHERE id =?";
list.add ( 1 );
int delete = persionDaoImpl.executeUpdate ( deletesql ,list );
System.out.println (delete );
//修改数据
String updatesql = "UPDATE person SET `name`=? ,health = ? WHERE id=?";
list.add ( "徐宁" );
list.add ( 999 );
list.add ( 7 );
int update = persionDaoImpl.executeUpdate ( updatesql ,list );
System.out.println (update );
//查询一条数据
String sql2 = "SELECT * FROM studentinfo where stuId=?";
list.add ( 31 );
ResultSet resultSet = persionDaoImpl.executeQuery ( sql2 ,list );
try {
while (resultSet.next ()) {
System.out.println (resultSet.getString ( "stuName" ) );
}
} catch (SQLException e) {
e.printStackTrace ( );
}
}
}
注意 :重点笔记
executeUpdate用于新增修改删除查找
executeQuery用于查询
pst = connect.prepareStatement(sql03);
rs =pst.executeQuery(); //executeQuery执行查询方法
返回一个结果集
区别
st =connect.createStatement();
rs=st.executeQuery(sql03); //executeQuery执行查询方法
返回一个结果集
//两种形式
while(rs.next()) {
System.out.print(rs.getInt(1)+"\t");
System.out.print(rs.getString(2)+"\t");
System.out.print(rs.getInt("teachid")+"\n");
}
实体类的对象