NewsDaoImpl

package com.pb.news.dao.impl;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.sql.Types;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.sql.Timestamp;

import com.pb.news.dao.BaseDao;
import com.pb.news.dao.NewsDao;
import com.pb.news.entity.News;
import com.pb.news.util.ConfigManager;
import com.pb.news.util.Page;

public class NewsDaoImpl extends BaseDao implements NewsDao{

@Override
//通过新闻ID获取新闻
public News getNewsById(int id) {
News news=null;
try{
//(3)获得Statement对象,执行SQL语句
String sql="select * from news_detail where id= "+id;

Object[] params={};
ResultSet rs=this.excuteSQL(sql, params);
////(4)处理执行结果(ResultSet)
if(rs.next()){
int categoryId=rs.getInt("categoryId");
String title=rs.getString("title");
String summary=rs.getString("summary");
String content=rs.getString("content");
String picPath=rs.getString("picPath");
String author=rs.getString("author");
Timestamp time=rs.getTimestamp("createdate");
//封装成新闻信息对象
news=new News();
news.setId(id);
news.setCategoryId(categoryId);
news.setTitle(title);
news.setSummary(summary);
news.setContent(content);
news.setPicpath(picPath);
news.setAuthor(author);
news.setCreatedate(time);

}
}catch(SQLException e){
e.getStackTrace();
}finally{
this.closeResource();
}

return news;
}
//查询新闻信息
public List<News> getNewsList(){
List<News> newList=new ArrayList<News>();
try {

//3.获得Statement对象,执行sql语句
String sql="select * from news_detail order by createdate ASC";
Object[] params={};
ResultSet rs=this.excuteSQL(sql, params);
//4.处理执行结果(ResultSet),释放资源
while(rs.next()){
int id=rs.getInt("id");
String title=rs.getString("title");
String summary=rs.getString("summary");
String content=rs.getString("content");
String author=rs.getString("author");
Timestamp time=rs.getTimestamp("createdate");

// System.out.println(id+"\t"+title+"\t"+summary+"\t"+
// content+"\t"+author+"\t"+time);

//封装成新闻信息对象
News news=new News();
news.setId(id);
news.setTitle(title);
news.setSummary(summary);
news.setContent(content);
news.setAuthor(author);
news.setCreatedate(time);

//将新闻对象放到集合中
newList.add(news);
}
}catch (SQLException e) {

e.printStackTrace();
}finally{
//释放资源
this.closeResource();
}
return newList;
}

//增加新闻信息
public boolean add(News news){
boolean flag=false;
try {

String sql="insert into news_detail(id,categoryId,title,summary,content,picPath,createdate,author) "
+ "values(SEQ_NEWS.nextval,?,?,?,?,?,?,?)";
Object[] params={news.getCategoryId(),news.getTitle(),news.getSummary()
,news.getContent(),news.getPicpath(),new java.sql.Timestamp(news.getCreatedate().getTime()),news.getAuthor()};

int i=this.excuteUpdate(sql, params);
//4.处理执行结果(ResultSet),释放资源
if(i>0){
System.out.println("插入新闻成功!");
}
flag=true;
}finally{
//释放资源
this.closeResource();
}

return flag;
}
//删除新闻信息
public boolean delete(int id){
boolean flag=false;

try {

//获取statement对象,执行sql语句
String sql="delete from news_Detail where id=?";
Object[] params={id};
//处理执行结果
int i=this.excuteUpdate(sql, params);
if(i>0){
System.out.println("册除新闻成功!");
}
flag=true;
} finally{
//释放资源
this.closeResource();

}
return flag;
}

//修改整个新闻信息
public boolean update(News news){
boolean flag=false;

try {

//获取statement对象,执行sql语句
String sql="update news_Detail set categoryId=?,title=?,summary=?,content=?,"
+ "picpath=?,author=?,modifydate=? where id=?";
Object[] params={news.getCategoryId(),news.getTitle(),news.getSummary(),
news.getContent(),news.getPicpath(),news.getAuthor(),
new java.sql.Timestamp(news.getModifydate().getTime()),news.getId()};
//处理执行结果
int i=this.excuteUpdate(sql, params);
if(i>0){
System.out.println("修改新闻成功!");
}
flag=true;
} finally{
//释放资源
this.closeResource();

}
return flag;
}

@Override
//获取新闻总数量
public int getTotalCount() {
int totalCount=0;
String sql="select count(*) from news_detail";
Object[] params={};
ResultSet rs=this.excuteSQL(sql, params);
try {
while(rs.next()){
totalCount=rs.getInt(1);
}
} catch (SQLException e) {

e.printStackTrace();
}finally{
this.closeResource();
}
return totalCount;
}

@Override
//分页获取新闻信息
public List<News> getPageNewsList(int pageNo, int pageSize) {
List<News> newsList=new ArrayList<News>();
String sql="SELECT id,title,author,createdate FROM (SELECT id,title,author,createdate,ROWNUM rn FROM news_detail) a WHERE a.rn>=? AND a.rn<=? ";
Page page=new Page();
page.setCurrPageNo(pageNo);//设置当前页码
page.setPageSize(pageSize);//每页显示记录数
//计算sql语句的起始记录数及结束记录数的行数
int startRow=page.getStartRow();
int endRow=page.getEndRow();
Object[] params={startRow,endRow};
ResultSet rs=this.excuteSQL(sql, params);
try {
while(rs.next()){
int id=rs.getInt("id");
String title=rs.getString("title");
String author=rs.getString("author");
Date date=rs.getDate("createdate");
News newInfo=new News();
newInfo.setId(id);
newInfo.setTitle(title);
newInfo.setAuthor(author);
newInfo.setCreatedate(new java.sql.Timestamp(date.getTime()));

newsList.add(newInfo);
}
} catch (SQLException e) {

e.printStackTrace();
}finally{
this.closeResource();
}
return newsList;
}

//获取新闻总数(执行存储过程)
public int getTotalCountProc(){
int totalCount=0;
CallableStatement proc=null;
String sql="{call getNewsCount(?)}";
getConnection();
try {
proc=conn.prepareCall(sql);
proc.registerOutParameter(1, Types.INTEGER);
proc.execute();
totalCount=proc.getInt(1);
} catch (SQLException e) {

e.printStackTrace();
}

return totalCount;
}

//测试
public static void main(String[] args) {
NewsDaoImpl newsDao=new NewsDaoImpl();
//newsDao.add(2,1,"快女选秀快讯","快女比赛正入白热化","她、她、她,谁是你心中的快女冠军",new Date());
//newsDao.update(3, "快女选秀快讯速递");
//newsDao.delete(3);
// List<News>newsList=newsDao.getNewsList();
// for (News news : newsList) {
// //System.out.println(id+"\t"+title+"\t"+summary+"\t"+
// content+"\t"+author+"\t"+time);
// System.out.println(news.getId()+"\t"+news.getTitle()+"\t"+news.getSummary()+"\t"+news.getContent()+"\t"+news.getPicpath()+"\t"+news.getAuthor()+"\t"+news.getCreatedate());
// }
// int totalCount=newsDao.getTotalCount();
// System.out.println("新闻总数量是:"+totalCount);
//第一页显示新闻信息(每页显示2条)
List<News>newsList=newsDao.getPageNewsList(1, 2);
//第2页显示新闻信息(每页显示2条)
// List<News>newsList=newsDao.getPageNewsList(2, 2);
//第3页显示新闻信息(每页显示2条)
//List<News>newsList=newsDao.getPageNewsList(3, 2);
// for (News news : newsList) {
// System.out.println(news.getTitle()+"\t"+news.getAuthor()+"\t"+news.getCreatedate());
// }

int totalCount=newsDao.getTotalCountProc();
System.out.println("新闻总数是:"+totalCount);
}

}

时间: 2024-08-14 03:38:17

NewsDaoImpl的相关文章

Mapped Statements collection does not contain value for 问题的解决

在做SSM项目的时候,遇到MyBatis抛出的一个异常: Mapped Statements collection does not contain value for org.lyk.vo.mapping.NewsNS.findById. 2017-09-01 21:03:48,979 INFO [org.springframework.context.support.ClassPathXmlApplicationContext] - Refreshing org[email protecte

spring4+hibernate3

环境说明:spring4.0+hibernate3 数据库:oracle 连接池:c3p0 项目结构: lib中的jar: 一.配置spring.xml 说明:这里采用的配置模式将hibernateTemplate注入至类NewsDaoImpl中.在本文的“附”中介绍的是在类NewsDaoImpl中自动装载hibernateTemplate. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&

java常见面试题

从网上转的一些java基础知识面试题: 1.String是最基本的数据类型吗? 基本数据类型包括byte.int.char.long.float.double.boolean和short. java.lang.String类是final类型的,因此不可以继承这个类.不能修改这个类.为了提高效率节省空间,我们应该用StringBuffer类 2.int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置类型).Int是java的原始数据类型,Integer是j

8 -- 深入使用Spring -- 6...3 使用@Transactional

8.6.3 使用@Transactional Spring还允许将事务配置放在Java类中定义,这需要借助于@Transactional注解,该注解即可用于修饰Spring Bean类,也可用于修饰Bean类中的某个方法. 如果使用@Transaction修饰Bean类,则表明这些事务设置对整个Bean类起作用:若果使用@Transactional修饰Bean类的某个方法,则表明这些事务设置只对该方法有效. 使用@Transactional时可指定如下属性: ⊙ isolation : 用于指定

SSH框架的简化(struts2、spring4、hibernate5)

目的: 在上次的基础下,对ssh框架进行简化. 1.本文提纲:本文通过一个新闻管理系统的实例来简化ssh框架的代码编写,功能包括查询数据库中所有新闻信息,删除某条新闻信息.     2.本项目的搭建环境:Windows 8-64位,Eclipse(开发工具),jdk1.8.0_91,Tomcat 8.0 ,mysql数据库. 第一步:在eclipse里创建web项目 (news) 第二步:导入本次项目要使用到的jar包 第三步:在配置文件web.xml配置一个struts2的过滤器和spring

SSH框架简化(struts2+spring+hibernate)

目的: 通过对ssh框架有了基础性的学习,本文主要是使用注解的方式来简化ssh框架的代码编写. 注意事项: .运行环境:Windows 8-64位,Eclipse(开发工具),jdk1.8.0_91,Tomcat 8.0,struts-2.3.30-apps,spring-framework-4.2.2.RELEASE,hibernate-release-5.2.2.Final,mysql数据库 一.  在eclipse右键新建一个项目并勾上生成web.xml文件 二.导入struts.spri

struts2+spring+hibernate 实现分页

在这里要感谢下这位博友发表的博文 http://www.blogjava.net/rongxh7/archive/2008/11/29/243456.html 通过对他代码的阅读,从而自己实现了网页分页功能,下面给大家分享下我的代码 1.entity实体类 我项目例子的实体类叫News 2.DAO接口的设计,定义一个NewsDAO接口,里面声明了两个方法: public interface NewsDAO { public int getAllRowCount(String hql); publ

SSH(struts2,spring4,hibernate5)详解

使用ssh框架的目的: 将典型的J2EE结构,分为表现层.中间层(业务逻辑层)和数据服务层.三层体系将业务规则.数据访问及合法性校验等工作放在中间层处理.客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互. 一 struts2的核心与工作原理   在学习struts2之前,首先我们要明白使用struts2的目的是什么?它能给我们带来什么样的好处? 设计目标 Struts设计的第一目标就是使MVC模式应用于web程序设计. mvc的好处: 利于批量生产.规模生产.相互协

JDBC与javaBean知识

1.JDBC的概念: Java数据库连接技术(Java DataBase Connectivity)能实现java程序对各种数据库的访问,由一组使用java语言编写的类和接口(jdbc api)组成,他们位于java.sql以及javax.sql中. 2.JDBC API 使用JDBC访问数据库就要用JDBC API完成3件事:与数据库链接,返送sql语句和处理结果. Java应用程序可以使用java.sql和javax.sql包中的JDBC APL来链接和操作: 工作的4个重要环节: (1).