背景
父类 :BaseDao.java 提供 所有表格都要执行的共同操作方法:增删改查,这样减少代码的重复
接口: NewsDao.java 为一个表格对应的接口,这样降低代码的耦合性
实现类: NewsDaoImpl.java 实现接口
连接数据库的方法:直接写在父类业务类中;
在main方法内对各个功能进行测试时,直接传实参,实参也就是 数据表格的字段;
BaseDao.java
package com.kgc.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class BaseDao {
//实现增删改查的功能 以及连接 和释放资源
Connection cnt=null;
PreparedStatement ps=null;
ResultSet rs=null;
//连接有3种方式
public boolean getConnection(){
String driver="com.mysql.jdbc.Driver";
String url="jdbc:mysql://localhost:3306/kgcnews";
String username="root";
String password="root";
try {
Class.forName(driver);
cnt=DriverManager.getConnection(url,username,password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
}
//关闭资源
public boolean closeResource(){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(cnt!=null){
try {
cnt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return true;
}
//增删改
public int executeUpdate(String sql ,Object [] params){
int updateRows=0;
if(this.getConnection()){
//获得sql语句
try {
ps=cnt.prepareStatement(sql);
//给占位符的赋值
for(int i=0;i
NewsDao.java
package com.kgc.dao;
import java.util.Date;
//接口类
public interface NewsDao {
//查询全部信息
public void getList();
//查询部分信息
public void getNewsTitle(String title);
//增
public void add(int id,int categoryId,String title,
String summary,String content,Date createDate);
//删
public void delete(int id);
//改
public void update(int id, String title);
}
NewsDaoImpl.java
package com.kgc.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.Date;
import com.kgc.dao.BaseDao;
import com.kgc.dao.NewsDao;
public class NewsDaoImpl extends BaseDao implements NewsDao{
ResultSet rs=null;
Connection cnt=null;
PreparedStatement ps=null;
//查询全部信息
@Override
public void getList() {
// TODO Auto-generated method stub
String sql="select id, categoryId,title,summary, content,picPath,author,createDate,modifyDate from news_detail";
//初始化 数组 ,避免空指针
Object[] params={};
rs=this.ExecuteQuery(sql, params);
//在控制台输出 rs的结果集
try {
while(rs.next()){
int id=rs.getInt(1);
int categoryId=rs.getInt(2);
String title=rs.getString("title");
String summary=rs.getString(4);
String content=rs.getString(5);
String picPath=rs.getString(6);
String author=rs.getString(7);
Date createDate=rs.getDate(8);
Date modifyDate=rs.getDate(9);
System.out.println(id+"\t"+categoryId+"\t"+title+"\t"+summary+"\t"+content+"\t"+picPath+"\t"+author+"\t"+createDate+"\t"+modifyDate );
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
this.closeResource();
}
}
//查询部分信息
@Override
public void getNewsTitle(String title) {
// TODO Auto-generated method stub
//返回值是ResultSet类型
String sql="select id, categoryId,title,summary, content,picPath,author,createDate,modifyDate from news_detail where title like ?";
Object [] params={title};
rs=this.ExecuteQuery(sql, params);
//在控制台遍历出 结果集
try {
while(rs.next()){
int id=rs.getInt(1);
int categoryId=rs.getInt(2);
String title1=rs.getString("title");
String summary=rs.getString(4);
String content=rs.getString(5);
String picPath=rs.getString(6);
String author=rs.getString(7);
Date createDate=rs.getDate(8);
Date modifyDate=rs.getDate(9);
System.out.println(id+"\t"+categoryId+"\t"+title1+"\t"+summary+"\t"+content+"\t"+picPath+"\t"+author+"\t"+createDate+"\t"+modifyDate );
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
this.closeResource();
}
}
//增
@Override
public void add(int id, int categoryId, String title, String summary,
String content, Date createDate) {
// TODO Auto-generated method stub
String sql="insert into news_detail(id, categoryId, title, summary,content, createDate) values(?,?,?,?,?,?)";
Object [] params={id, categoryId, title, summary,content, createDate};
int i=this.executeUpdate(sql, params);
if(i>0){
System.out.println("添加成功");
}
}
//删除
@Override
public void delete(int id) {
// TODO Auto-generated method stub
String sql="delete from news_detail where id=?";
Object [] params={id};
int i=this.executeUpdate(sql, params);
if(i>0){
System.out.println("删除成功");
}
}
//修改
@Override
public void update(int id,String title) {
// TODO Auto-generated method stub
String sql="update news_detail set title=? where id=?";
Object [] params={title,id};
int i=this.executeUpdate(sql, params);
if(i>0){
System.out.println("修改成功");
}
}
public static void main(String[] args) {
//向上转型
NewsDao newsDao=new NewsDaoImpl();
//newsDao.getList();
//newsDao.getNewsTitle("%课%");
//newsDao.update(1, "我是2");
//newsDao.add(6, 1, "a", "b", "c", new Timestamp(new Date().getTime()));
//newsDao.delete(6);
}
}