什么是BaseDao
BaseDao是:
数据库里负责增加,删除,修改,查询
具体来说是一种接口代码,公共方法的接口类。
在dao层新建basedao,其他dao层接口继承basedao
相当于父类继承子类
用来创建其他dao包
操作代码
增删改
import java.sql.*;
public class BaseDao {
private String driver = "com.mysql.cj.jdbc.Driver";
private String url = "jdbc:mysql://localhost:3306/20240326zy";//mysql的数据库
private String user = "root";//用户名
private String password = "sasa";//密码
/**
* 获取数据库连接
* @return 返回连接
*/
public Connection getConnection(){
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url,user,password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
/**
* 释放资源
* @param rs
* @param prs
* @param conn
*/
public void closeAll(ResultSet rs,PreparedStatement prs,Connection conn){
try {
if (rs!=null){
rs.close();
}
if (prs!=null){
prs.close();
}
if (conn!=null){
conn.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
/**
* 增删改
* @param sql sql语句
* @param objs 参数
* @return
*/
public int exceuteUpdate(String sql,Object... objs){
int num = 0;
try {
Connection conn = getConnection();
PreparedStatement prs = conn.prepareStatement(sql);
for (int i = 0; i < objs.length; i++) {
prs.setObject(i+1,objs[i]);
}
num = prs.executeUpdate();
closeAll(null,prs,conn);
}catch (Exception e){
e.printStackTrace();
}
return num;
}
}
查询单个数据
/**
* 查询一个字段 (只会返回一条记录且只有一个字段;常用场景:查询总数量)
* @param sql
* @param params
* @return
*/
public static Object findSingleValue(String sql, List<Object> params) {
Object object = null;
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
// 获取数据库连接
connection = getConnection();
// 预编译
preparedStatement = connection.prepareStatement(sql);
// 如果有参数,则设置参数,下标从1开始
if (params != null && params.size() > 0) {
// 循环设置参数,设置参数类型为Object
for (int i = 0; i < params.size(); i++){
preparedStatement.setObject(i+1, params.get(i));
}
}
// 执行查询,返回结果集
resultSet = preparedStatement.executeQuery();
// 判断并分析结果集
if (resultSet.next()) {
object = resultSet.getObject(1);
}
} catch (Exception e) {
e.printStackTrace();
}
return object;
}
查询多个数据
首先我们要有个实类,必须和连接的那个数据库中的列一致
然后创建一个实类的Dao,以下就是查询代码
import zy20240326.entity.brand;//这个就是实类
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class brandDao {
BaseDao bd = new BaseDao();//创建对象
PreparedStatement prs = null;
ResultSet rs = null;
public List<brand> getAll(){
List<brand> list = new ArrayList<>();//创建一个对象
Connection conn =bd.getConnection();//获取连接
String sql = "select * from brand";
try {
prs = conn.prepareStatement(sql);
rs = prs.executeQuery();
while (rs.next()){
brand brand = new brand();
brand.setBrandid(rs.getInt("Brandid"));
brand.setBrandName(rs.getString("BrandName"));
list.add(brand);//获取查询到的值并且增到对象中
}
bd.closeAll(rs,prs,conn);//关闭连接
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
}
运行代码
public class daoTest {
public static void main(String[] args) {
brandDao dao = new brandDao();
List<brand> list = dao.getAll();
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).getBrandid() +"---"+list.get(i).getBrandName());
}
}
}
运行结果
总结
以上操作就是一些简单的BaseDao的增删改查