背景
父类 :BaseDao.java 提供 所有表格都要执行的共同操作方法:增删改查,这样减少代码的重复
接口: NewsDao.java 为一个表格对应的接口,这样降低代码的耦合性
实现类: NewsDaoImpl.java 实现接口
数据表格对应的普通java类: news.java, 通过 封装 set/get方法 调用属性、和赋值
连接数据库的方法:直接写在父类业务类中;
news.java
package com.kgc.pojo; import java.util.Date; public class News { private int id; private int categoryId; private String title; private String summary; private String content; private String picPath; private String author; private Date createDate; public int getId() { return id; } public void setId(int id) { this.id = id; } public int getCategoryId() { return categoryId; } public void setCategoryId(int categoryId) { this.categoryId = categoryId; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getSummary() { return summary; } public void setSummary(String summary) { this.summary = summary; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getPicPath() { return picPath; } public void setPicPath(String picPath) { this.picPath = picPath; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } }
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 { rs.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<params.length;i++){ ps.setObject(i+1,params[i] ); } //执行 增删改,返回影响的行数 updateRows=ps.executeUpdate(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return updateRows; } //查询 全部信息 或者指定部分信息 public ResultSet ExecuteQuery(String sql ,Object [] params){ if(this.getConnection()){ try { ps=cnt.prepareStatement(sql); //给占位符赋值 for(int i=0;i<params.length;i++){ ps.setObject(i+1, params[i]); } // 执行查询,返回值是ResultSet型的 rs=ps.executeQuery(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return rs; } }
NewsDao.java
扫描二维码关注公众号,回复:
1479563 查看本文章
package com.kgc.dao; import java.util.Date; import com.kgc.pojo.News; //接口类 public interface NewsDao { //查询全部信息 public void getList(); //查询部分信息 public void getNewsTitle(News news); //增 public void add(News news); //public void add(int id,int categoryId,String title, //String summary,String content,Date createDate); //删 public void delete(News news); //改 public void update(News news); }
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; import com.kgc.pojo.News; 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(News news) { // 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={news.getTitle()}; 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(News news) { // 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}; Object[] params={news.getId(),news.getCategoryId(),news.getTitle(),news.getSummary() ,news.getContent(),news.getCreateDate()}; int i=this.executeUpdate(sql, params); if(i>0){ System.out.println("添加成功"); } } //删除 @Override public void delete(News news) { // TODO Auto-generated method stub String sql="delete from news_detail where id=?"; Object [] params={news.getId()}; int i=this.executeUpdate(sql, params); if(i>0){ System.out.println("删除成功"); } } //修改 @Override public void update(News news) { // TODO Auto-generated method stub String sql="update news_detail set title=? where id=?"; Object [] params={news.getTitle(),news.getId()}; int i=this.executeUpdate(sql, params); if(i>0){ System.out.println("修改成功"); } } public static void main(String[] args) { //向上转型 NewsDao newsDao=new NewsDaoImpl(); News news=new News(); //newsDao.add(7, 1, "a", "b", "c", new Timestamp(new Date().getTime())); //上面是通过 添加字段来赋值,下面是通过 创建表格对应的java普通类,通过 set get方法进行赋值 //测试 :增 /* news.setId(8); news.setCategoryId(2); news.setTitle("a"); news.setSummary("su"); news.setContent("con"); news.setCreateDate(new Timestamp(new Date().getTime())); newsDao.add(news);*/ //newsDao.delete(6); //删 /*news.setId(8); newsDao.delete(news); */ //改 /*news.setId(1); news.setTitle("xxxinxin"); newsDao.update(news);*/ //查全部 //newsDao.getList(); //查部分信息 news.setTitle("a"); newsDao.getNewsTitle(news); } }